diff --git a/fHDHR/cli/run.py b/fHDHR/cli/run.py index 49c5697..778c6ea 100644 --- a/fHDHR/cli/run.py +++ b/fHDHR/cli/run.py @@ -44,7 +44,7 @@ def run(settings, logger, db, script_dir, fHDHR_web, origin, alternative_epg): try: - print("HTTP Server Starting") + fhdhr.logger.info("HTTP Server Starting") if settings.dict["main"]["thread_method"] in ["multiprocessing"]: fhdhr_web = multiprocessing.Process(target=fhdhrweb.run) elif settings.dict["main"]["thread_method"] in ["threading"]: @@ -52,8 +52,15 @@ def run(settings, logger, db, script_dir, fHDHR_web, origin, alternative_epg): if settings.dict["main"]["thread_method"] in ["multiprocessing", "threading"]: fhdhr_web.start() + # Perform some actions now that HTTP Server is running, but don't wait for response + # Hit EPG Update API URL without waiting + try: + fhdhr.web.session.get("%s/api/startup_tasks" % (fhdhr.api.base)) + except fhdhr.web.exceptions.ReadTimeout: + pass + if settings.dict["fhdhr"]["discovery_address"]: - print("SSDP Server Starting") + fhdhr.logger.info("SSDP Server Starting") if settings.dict["main"]["thread_method"] in ["multiprocessing"]: fhdhr_ssdp = multiprocessing.Process(target=fhdhr.device.ssdp.run) elif settings.dict["main"]["thread_method"] in ["threading"]: @@ -62,7 +69,7 @@ def run(settings, logger, db, script_dir, fHDHR_web, origin, alternative_epg): fhdhr_ssdp.start() if settings.dict["epg"]["method"]: - print("EPG Update Starting") + fhdhr.logger.info("EPG Update Starting") if settings.dict["main"]["thread_method"] in ["multiprocessing"]: fhdhr_epg = multiprocessing.Process(target=fhdhr.device.epg.run) elif settings.dict["main"]["thread_method"] in ["threading"]: diff --git a/fHDHR/device/channels/__init__.py b/fHDHR/device/channels/__init__.py index fa2a658..09d8d20 100644 --- a/fHDHR/device/channels/__init__.py +++ b/fHDHR/device/channels/__init__.py @@ -20,9 +20,6 @@ class Channels(): self.list_update_time = None self.get_db_channels() - haseverscanned = self.fhdhr.db.get_fhdhr_value("channels", "scanned_time") - if (self.fhdhr.config.dict["fhdhr"]["chanscan_on_start"] or not haseverscanned): - self.get_channels() def get_channel_obj(self, keyfind, valfind): if keyfind == "number": diff --git a/fHDHR/device/epg/__init__.py b/fHDHR/device/epg/__init__.py index dffcc99..a7b1ea0 100644 --- a/fHDHR/device/epg/__init__.py +++ b/fHDHR/device/epg/__init__.py @@ -291,8 +291,7 @@ class EPG(): self.fhdhr.logger.info("Wrote " + epgtypename + " EPG cache.") def run(self): - for epg_method in self.epg_methods: - self.fhdhr.web.session.get(self.epg_update_url) + time.sleep(1800) try: while True: for epg_method in self.epg_methods: diff --git a/fHDHR_web/api/__init__.py b/fHDHR_web/api/__init__.py index 359f9a6..58d17fe 100644 --- a/fHDHR_web/api/__init__.py +++ b/fHDHR_web/api/__init__.py @@ -1,5 +1,6 @@ from .root_url import Root_URL +from .startup_tasks import Startup_Tasks from .cluster import Cluster from .settings import Settings @@ -19,6 +20,7 @@ class fHDHR_API(): self.fhdhr = fhdhr self.root_url = Root_URL(fhdhr) + self.startup_tasks = Startup_Tasks(fhdhr) self.cluster = Cluster(fhdhr) self.settings = Settings(fhdhr) diff --git a/fHDHR_web/api/startup_tasks.py b/fHDHR_web/api/startup_tasks.py new file mode 100644 index 0000000..8191dbe --- /dev/null +++ b/fHDHR_web/api/startup_tasks.py @@ -0,0 +1,35 @@ + + +class Startup_Tasks(): + endpoints = ["/api/startup_tasks"] + endpoint_name = "api_startup_tasks" + endpoint_methods = ["GET", "POST"] + + def __init__(self, fhdhr): + self.fhdhr = fhdhr + + self.epg_update_url = "%s/api/epg?method=update" % (self.fhdhr.api.base) + self.channel_update_url = "%s/api/channels?method=scan" % (self.fhdhr.api.base) + + def __call__(self, *args): + return self.get(*args) + + def get(self, *args): + + # Hit Channel Update API URL without waiting unless we've never scanned before + haseverscanned = self.fhdhr.db.get_fhdhr_value("channels", "scanned_time") + if not haseverscanned: + self.fhdhr.web.session.get(self.channel_update_url) + elif self.fhdhr.config.dict["fhdhr"]["chanscan_on_start"]: + try: + self.fhdhr.web.session.get(self.channel_update_url, timeout=0.0000000001) + except self.fhdhr.web.exceptions.ReadTimeout: + pass + + # Hit EPG Update API URL without waiting + try: + self.fhdhr.web.session.get(self.epg_update_url, timeout=0.0000000001) + except self.fhdhr.web.exceptions.ReadTimeout: + pass + + return "Success"