diff --git a/fHDHR/device/station_scan.py b/fHDHR/device/station_scan.py index 3f9717d..69c7347 100644 --- a/fHDHR/device/station_scan.py +++ b/fHDHR/device/station_scan.py @@ -1,4 +1,5 @@ -from multiprocessing import Process +import multiprocessing +import threading class Station_Scan(): @@ -10,16 +11,24 @@ class Station_Scan(): self.fhdhr.db.delete_fhdhr_value("station_scan", "scanning") - def scan(self): + def scan(self, waitfordone=False): self.fhdhr.logger.info("Channel Scan Requested by Client.") scan_status = self.fhdhr.db.get_fhdhr_value("station_scan", "scanning") - if not scan_status: - self.fhdhr.db.set_fhdhr_value("station_scan", "scanning", 1) - chanscan = Process(target=self.runscan) - chanscan.start() - else: + if scan_status: self.fhdhr.logger.info("Channel Scan Already In Progress!") + else: + self.fhdhr.db.set_fhdhr_value("station_scan", "scanning", 1) + + if waitfordone: + self.runscan() + else: + if self.fhdhr.config.dict["main"]["thread_method"] in ["multiprocessing"]: + chanscan = multiprocessing.Process(target=self.runscan) + elif self.fhdhr.config.dict["main"]["thread_method"] in ["threading"]: + chanscan = threading.Thread(target=self.runscan) + if self.fhdhr.config.dict["main"]["thread_method"] in ["multiprocessing", "threading"]: + chanscan.start() def runscan(self): self.channels.get_channels(forceupdate=True) diff --git a/fHDHR/http/api/channels.py b/fHDHR/http/api/channels.py index 6154b03..9dc7a6e 100644 --- a/fHDHR/http/api/channels.py +++ b/fHDHR/http/api/channels.py @@ -94,7 +94,7 @@ class Channels(): self.fhdhr.device.channels.set_channel_status("id", channel_id, updatedict) elif method == "scan": - self.fhdhr.device.station_scan.scan() + self.fhdhr.device.station_scan.scan(waitfordone=True) else: return "Invalid Method" diff --git a/fHDHR/http/api/lineup_post.py b/fHDHR/http/api/lineup_post.py index 491a435..014c6cd 100644 --- a/fHDHR/http/api/lineup_post.py +++ b/fHDHR/http/api/lineup_post.py @@ -17,7 +17,7 @@ class Lineup_Post(): if 'scan' in list(request.args.keys()): if request.args['scan'] == 'start': - self.fhdhr.device.station_scan.scan() + self.fhdhr.device.station_scan.scan(waitfordone=False) return Response(status=200, mimetype='text/html') elif request.args['scan'] == 'abort': diff --git a/fHDHR/http/pages/channels_html.py b/fHDHR/http/pages/channels_html.py index 193b214..d610fca 100644 --- a/fHDHR/http/pages/channels_html.py +++ b/fHDHR/http/pages/channels_html.py @@ -13,11 +13,18 @@ class Channels_HTML(): def get(self, *args): + channels_dict = { + "Total Channels": len(list(self.fhdhr.device.channels.list.keys())), + "enabled": 0, + } + channelslist = [] for fhdhr_id in list(self.fhdhr.device.channels.list.keys()): channel_obj = self.fhdhr.device.channels.list[fhdhr_id] channel_dict = channel_obj.dict.copy() channel_dict["play_url"] = channel_obj.play_url() channelslist.append(channel_dict) + if channel_dict["enabled"]: + channels_dict["enabled"] += 1 - return render_template('channels.html', request=request, fhdhr=self.fhdhr, channelslist=channelslist) + return render_template('channels.html', request=request, fhdhr=self.fhdhr, channelslist=channelslist, channels_dict=channels_dict)