mirror of
https://github.com/fHDHR/fHDHR_NextPVR.git
synced 2025-12-06 03:26:57 -05:00
71 lines
2.9 KiB
Python
71 lines
2.9 KiB
Python
import os
|
|
import sys
|
|
import pathlib
|
|
|
|
plugins_top_dir = os.path.dirname(__file__)
|
|
print("Importing Plugins Prior to Script Run.")
|
|
plugin_dict = {}
|
|
for entry in os.scandir(plugins_top_dir):
|
|
if entry.is_dir() and not entry.is_file() and entry.name[0] != '_':
|
|
|
|
curr_dict = {}
|
|
plugin_use = True
|
|
|
|
# Import
|
|
imp_string = "from .%s import *" % entry.name
|
|
exec(imp_string)
|
|
|
|
for plugin_item in ["NAME", "VERSION", "TYPE"]:
|
|
plugin_item_eval_string = "%s.PLUGIN_%s" % (entry.name, plugin_item)
|
|
try:
|
|
curr_dict[plugin_item] = eval(plugin_item_eval_string)
|
|
except AttributeError:
|
|
curr_dict[plugin_item] = None
|
|
|
|
if curr_dict["TYPE"] == "origin":
|
|
curr_dict["PATH"] = pathlib.Path(os.path.dirname(os.path.abspath(__file__))).joinpath(entry.name).joinpath('origin')
|
|
elif curr_dict["TYPE"] in ["alt_epg", "alt_stream"]:
|
|
curr_dict["PATH"] = pathlib.Path(os.path.dirname(os.path.abspath(__file__))).joinpath(entry.name)
|
|
|
|
plugin_import_print_string = "Found %s type plugin: %s %s. " % (curr_dict["TYPE"], curr_dict["NAME"], curr_dict["VERSION"])
|
|
if not any(curr_dict[plugin_item] for plugin_item in ["NAME", "VERSION", "TYPE"]):
|
|
plugin_import_print_string += " ImportWarning: Missing PLUGIN_* Value."
|
|
plugin_use = False
|
|
|
|
elif curr_dict["TYPE"] not in ["origin", "alt_epg", "alt_stream"]:
|
|
plugin_use = False
|
|
plugin_import_print_string += " ImportWarning: Invalid PLUGIN_TYPE."
|
|
|
|
# Only allow a single origin
|
|
elif curr_dict["TYPE"] == "origin" and len([x for x in list(plugin_dict.keys()) if plugin_dict[x]["TYPE"] == "origin"]):
|
|
plugin_use = False
|
|
plugin_import_print_string += " ImportWarning: Only one Origin Allowed."
|
|
|
|
if plugin_use:
|
|
plugin_import_print_string += " Import Success"
|
|
|
|
# add to plugin_dict
|
|
print(plugin_import_print_string)
|
|
if plugin_use and entry.name not in plugin_dict:
|
|
plugin_dict[entry.name] = curr_dict
|
|
|
|
# Import Origin
|
|
if curr_dict["TYPE"] == "origin":
|
|
imp_string = "from .%s import origin" % entry.name
|
|
exec(imp_string)
|
|
imp_string = "from .%s import %s_Setup" % (entry.name, curr_dict["NAME"].upper())
|
|
try:
|
|
exec(imp_string)
|
|
except ImportError:
|
|
pass
|
|
elif curr_dict["TYPE"] == "alt_epg":
|
|
imp_string = "from .%s import *" % entry.name
|
|
exec(imp_string)
|
|
elif curr_dict["TYPE"] == "alt_stream":
|
|
imp_string = "from .%s import *" % entry.name
|
|
exec(imp_string)
|
|
|
|
if not len([x for x in list(plugin_dict.keys()) if plugin_dict[x]["TYPE"] == "origin"]):
|
|
print("No Origin Plugin found.")
|
|
sys.exit(1)
|