1
0
mirror of https://github.com/fHDHR/fHDHR_NextPVR.git synced 2025-12-06 04:36:58 -05:00

Merge pull request #105 from deathbybandaid/dev

Dev
This commit is contained in:
Deathbybandaid 2021-01-05 11:08:37 -05:00 committed by GitHub
commit 0c09e1dca0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 30 additions and 13 deletions

View File

@ -302,7 +302,7 @@ class EPG():
updatetheepg = True
if updatetheepg:
try:
self.fhdhr.web.session.get("%s?sorurce=%s" % (self.epg_update_url, epg_method), timeout=0.0000000001)
self.fhdhr.web.session.get("%s&source=%s" % (self.epg_update_url, epg_method), timeout=0.0000000001)
except self.fhdhr.web.exceptions.ReadTimeout:
pass
except self.fhdhr.web.exceptions.ConnectionError as e:

View File

@ -53,7 +53,7 @@ class Tuners():
return tuner_number
def first_available(self, channel_number):
def first_available(self, channel_number, dograb=True):
if not self.available_tuner_count():
raise TunerError("805 - All Tuners In Use")

View File

@ -21,8 +21,8 @@ class Tuner():
self.chanscan_url = "%s/api/channels?method=scan" % (self.fhdhr.api.base)
self.close_url = "%s/api/tuners?method=close&tuner=%s" % (self.fhdhr.api.base, str(self.number))
def channel_scan(self):
if self.tuner_lock.locked():
def channel_scan(self, grabbed=False):
if self.tuner_lock.locked() and not grabbed:
self.fhdhr.logger.error("Tuner #%s is not available." % str(self.number))
raise TunerError("804 - Tuner In Use")
@ -30,7 +30,8 @@ class Tuner():
self.fhdhr.logger.info("Channel Scan Already In Progress!")
else:
self.tuner_lock.acquire()
if not grabbed:
self.tuner_lock.acquire()
self.status["status"] = "Scanning"
self.fhdhr.logger.info("Tuner #%s Performing Channel Scan." % str(self.number))
@ -42,9 +43,10 @@ class Tuner():
chanscan.start()
def runscan(self):
self.fhdhr.web.session.get(self.chanscan_url)
self.fhdhr.api.client.get(self.chanscan_url)
self.fhdhr.logger.info("Requested Channel Scan Complete.")
self.fhdhr.web.session.get(self.close_url)
self.close()
self.fhdhr.api.client.get(self.close_url)
def add_downloaded_size(self, bytes_count):
if "downloaded" in list(self.status.keys()):
@ -63,7 +65,7 @@ class Tuner():
self.set_off_status()
if self.tuner_lock.locked():
self.tuner_lock.release()
self.fhdhr.logger.info("Tuner #" + str(self.number) + " Released.")
self.fhdhr.logger.info("Tuner #" + str(self.number) + " Released.")
def get_status(self):
current_status = self.status.copy()

View File

@ -77,9 +77,19 @@ class fHDHR_HTTP_Server():
session["deviceauth"] = self.detect_plexmediaserver(request)
session["tuner_used"] = None
self.fhdhr.logger.debug("Client %s requested %s Opening" % (request.method, request.path))
def after_request(self, response):
# Close Tuner if it was in use, and did not close already
if session["tuner_used"] is not None:
tuner = self.fhdhr.device.tuners.tuners[str(session["tuner_used"])]
if tuner.tuner_lock.locked():
self.fhdhr.logger.info("Shutting down Tuner #" + str(self.number) + " after Request.")
tuner.close()
self.fhdhr.logger.debug("Client %s requested %s Closing" % (request.method, request.path))
return response

View File

@ -29,6 +29,6 @@ class Startup_Tasks():
# Hit EPG Update API
for epg_method in self.fhdhr.device.epg.epg_methods:
self.fhdhr.api.client.get("%s?sorurce=%s" % (self.epg_update_url, epg_method), headers=self.fhdhr.api.headers)
self.fhdhr.api.client.get("%s&source=%s" % (self.epg_update_url, epg_method), headers=self.fhdhr.api.headers)
return "Success"

View File

@ -1,4 +1,4 @@
from flask import Response, request, redirect, abort, stream_with_context
from flask import Response, request, redirect, abort, stream_with_context, session
import urllib.parse
import uuid
import json
@ -80,6 +80,7 @@ class Tuners():
response.headers["X-fHDHR-Error"] = str(e)
self.fhdhr.logger.error(response.headers["X-fHDHR-Error"])
abort(response)
tuner = self.fhdhr.device.tuners.tuners[str(tunernum)]
try:
@ -95,6 +96,7 @@ class Tuners():
self.fhdhr.logger.info("Tuner #" + str(tunernum) + " to be used for stream.")
tuner.set_status(stream_args)
session["tuner_used"] = tunernum
if stream_args["method"] == "direct":
return Response(tuner.get_stream(stream_args, tuner), content_type=stream_args["content_type"], direct_passthrough=True)
@ -106,16 +108,19 @@ class Tuners():
if not tuner_number or str(tuner_number) not in list(self.fhdhr.device.tuners.tuners.keys()):
return "%s Invalid tuner" % str(tuner_number)
session["tuner_used"] = tuner_number
tuner = self.fhdhr.device.tuners.tuners[str(tuner_number)]
tuner.close()
elif method == "scan":
if not tuner_number:
self.fhdhr.device.tuners.tuner_scan()
tunernum = self.fhdhr.device.tuners.first_available(None)
else:
tuner = self.fhdhr.device.tuners.tuners[str(tuner_number)]
tuner.channel_scan()
tunernum = self.fhdhr.device.tuners.tuner_grab(tuner_number, None)
tuner = self.fhdhr.device.tuners.tuners[str(tunernum)]
tuner.channel_scan(grabbed=True)
elif method == "status":