From 4f439f5ada20817ee03973a43a58b9ee58871f05 Mon Sep 17 00:00:00 2001 From: TR-TDN Date: Tue, 13 May 2025 12:08:01 +0200 Subject: [PATCH 1/3] Fixed tracks to download appletv seasons --- vinetrimmer/services/appletvplus.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/vinetrimmer/services/appletvplus.py b/vinetrimmer/services/appletvplus.py index 01fea51..4a74724 100644 --- a/vinetrimmer/services/appletvplus.py +++ b/vinetrimmer/services/appletvplus.py @@ -150,7 +150,7 @@ class AppleTVPlus(BaseService): 'utsk': '6e3013c6d6fae3c2::::::9318c17fb39d6b9c', 'caller': 'web', 'sf': self.storefront, - 'v': '82', + 'v': '46', 'pfm': 'appletv', 'mfr': 'Apple', 'locale': 'en-US', @@ -159,7 +159,7 @@ class AppleTVPlus(BaseService): 'count': '100', 'skip': '0', } - r = self.session.get(url=self.config["endpoints"]["title"].format(type={0: "shows", 1: "movies", 2: "sporting-events"}[self.type], id=self.title), + r = self.session.get(url=self.config["endpoints"]["manifest"].format(id=title.service_data["id"]), params=self.params ) try: @@ -167,12 +167,14 @@ class AppleTVPlus(BaseService): #print(stream_data) except json.JSONDecodeError: raise ValueError(f"Failed to load stream data: {r.text}") - stream_data = stream_data["data"]["playables"] + stream_data = stream_data["data"]["content"]["playables"][0] + """ if self.condensed == True: tvs_sbd = list(stream_data.keys())[1] else: tvs_sbd = list(stream_data.keys())[0] stream_data = stream_data[tvs_sbd] + """ if not stream_data["isEntitledToPlay"]: raise self.log.exit(" - User is not entitled to play this title") From 70b2ee38b091c832b58386ca09bad560229e1c94 Mon Sep 17 00:00:00 2001 From: TR-TDN Date: Tue, 13 May 2025 12:10:12 +0200 Subject: [PATCH 2/3] Disable Verify=True to avoid netflix error --- vinetrimmer/utils/MSL/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vinetrimmer/utils/MSL/__init__.py b/vinetrimmer/utils/MSL/__init__.py index 26de6e9..88b030b 100644 --- a/vinetrimmer/utils/MSL/__init__.py +++ b/vinetrimmer/utils/MSL/__init__.py @@ -347,7 +347,7 @@ class MSL: def send_message(self, endpoint, params, application_data, userauthdata=None): message = self.create_message(application_data, userauthdata) - res = self.session.post(url=endpoint, data=message, params=params, verify=True) # verify=True? + res = self.session.post(url=endpoint, data=message, params=params) # verify=True? header, payload_data = self.parse_message(res.text) if "errordata" in header: raise self.log.exit( From 1487ca262670ab2b596e725913485d1603e3ce54 Mon Sep 17 00:00:00 2001 From: TR-TDN Date: Tue, 13 May 2025 12:12:20 +0200 Subject: [PATCH 3/3] Fixed path to config --- vinetrimmer/config/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vinetrimmer/config/__init__.py b/vinetrimmer/config/__init__.py index 16c8306..32c7cdd 100644 --- a/vinetrimmer/config/__init__.py +++ b/vinetrimmer/config/__init__.py @@ -39,7 +39,7 @@ class Filenames: self.log = os.path.join(directories.logs, "vinetrimmer_{time}.log") self.root_config = os.path.join(directories.configuration, "vinetrimmer.yml") self.user_root_config = os.path.join(directories.user_configs, "vinetrimmer.yml") - self.service_config = os.path.join(directories.configuration, "services", "{service}.yml") + self.service_config = os.path.join(directories.configuration, "Services", "{service}.yml") self.user_service_config = os.path.join(directories.service_configs, "{service}.yml") self.subtitles = os.path.join(directories.temp, "TextTrack_{id}_{language_code}.srt") self.chapters = os.path.join(directories.temp, "{filename}_chapters.txt")