diff --git a/AUBC/__init__.py b/AUBC/__init__.py index da73806..3e24486 100644 --- a/AUBC/__init__.py +++ b/AUBC/__init__.py @@ -24,7 +24,7 @@ class AUBC(Service): Service code for ABC iView streaming service (https://iview.abc.net.au/). \b - Version: 1.0.3 + Version: 1.0.4 Author: stabbedbybrick Authorization: None Robustness: @@ -119,8 +119,8 @@ class AUBC(Service): captions = next((x.get("captions") for x in playlist if x["type"] == "program"), None) title.data["protected"] = streams.get("protected", False) - if "720" in streams: - streams["1080"] = streams["720"].replace("720", "1080") + if hd := streams.get("720"): + streams["1080"] = hd.replace("720.mpd", "1080.mpd") manifest = next( (url for key in ["1080", "720", "sd", "sd-low"] if key in streams @@ -130,7 +130,7 @@ class AUBC(Service): ) if not manifest: raise ValueError("Could not find a manifest for this title") - + tracks = DASH.from_url(manifest, self.session).to_tracks(title.language) for track in tracks.audio: diff --git a/RTE/__init__.py b/RTE/__init__.py index 4934a80..4be145a 100644 --- a/RTE/__init__.py +++ b/RTE/__init__.py @@ -24,7 +24,7 @@ class RTE(Service): Service code for RTE Player streaming service (https://www.rte.ie/player/). \b - Version: 1.0.3 + Version: 1.0.5 Author: stabbedbybrick Authorization: None Robustness: @@ -62,10 +62,12 @@ class RTE(Service): self.feed = self.config["endpoints"]["feed"] self.license = self.config["endpoints"]["license"] + self.session.headers.update(self.config["headers"]) + def search(self) -> Generator[SearchResult, None, None]: params = { "byProgramType": "Series|Movie", - "q": f"title:({self.title})", + "q": f"*{self.title}*", "range": "0-40", "schema": "2.15", "sort": "rte$rank|desc", @@ -261,16 +263,10 @@ class RTE(Service): "Content may be geo-restricted to IE" ) - def _request(self, api: str, params: dict = None, headers: dict = None) -> Any[dict | str]: + def _request(self, api: str, **kwargs) -> Any[dict | str]: url = urljoin(self.base_url, api) - self.session.headers.update(self.config["headers"]) - if params: - self.session.params.update(params) - if headers: - self.session.headers.update(headers) - - prep = self.session.prepare_request(Request("GET", url)) + prep = self.session.prepare_request(Request("GET", url, **kwargs)) response = self.session.send(prep) if response.status_code != 200: diff --git a/STV/__init__.py b/STV/__init__.py index 6836161..417febc 100644 --- a/STV/__init__.py +++ b/STV/__init__.py @@ -21,7 +21,7 @@ class STV(Service): Service code for STV Player streaming service (https://player.stv.tv/). \b - Version: 1.0.1 + Version: 1.0.3 Author: stabbedbybrick Authorization: None Robustness: @@ -108,36 +108,34 @@ class STV(Service): if episode.get("playerSeries") and re.match(r"Series \d+", episode["playerSeries"]["name"]) else 0, number=int(episode.get("number", 0)), - name=episode.get("title", "").lstrip("0123456789. ").lstrip(), + name=re.sub(r"^\d+\.\s+", "", episode.get("title", "")), language="en", data=episode, ) ] elif kind == "summary": - r = self.session.get(self.base + f"programmes/{slug}") - r.raise_for_status() - data = r.json() + r = self.session.get(self.base + f"episodes?programme.guid={slug}&limit=999") + if not r.ok: + raise ConnectionError(f"Failed to find content for {slug}") - series = [series.get("guid") for series in data["results"]["series"]] - seasons = [self.session.get(self.base + f"episodes?series.guid={i}").json() for i in series] + data = r.json() episodes = [ Episode( id_=episode["video"].get("id"), service=self.__class__, - title=data["results"].get("name"), + title=episode["programme"].get("name"), season=int(episode["playerSeries"]["name"].split(" ")[1]) if episode.get("playerSeries") and re.match(r"Series \d+", episode["playerSeries"]["name"]) else 0, number=int(episode.get("number", 0)), - name=episode.get("title", "").lstrip("0123456789. ").lstrip(), + name=re.sub(r"^\d+\.\s+", "", episode.get("title", "")), language="en", data=episode, ) - for season in seasons - for episode in season["results"] + for episode in data["results"] ] self.session.headers.pop("stv-drm")