Hybrid for DSNP (Beta)

This commit is contained in:
chu23465 2025-04-29 17:36:04 +05:30
parent 71f248eed0
commit 9f2b9c2788
3 changed files with 8 additions and 5 deletions

View File

@ -29,6 +29,7 @@ Support for Sport replays or live streams is not planned. It's a whole thing wit
- N_m3u8DL-RE downloader support (Experimental)
- Atmos audio with ISM manifest (Amazon) is Fixed
- Resume failed download has been implemented. If a track has been successfully downloaded previously and exists in `Temp` directory (encrypted or decrypted), VT will not download said track again.
- Hybrid creation with [dovi_tool](https://github.com/quietvoid/dovi_tool/). This feature is in Beta. Only tested so far on DisneyPlus. Needs more work. Ex: filenaming needs correction, temp directory is a mess after hybrid creation, use another tool insteal of `dovi_tool` to get Profile 8 DV-HDR10+ instead of DV Profile 5 HDR10 compatible.
## Usage
@ -244,6 +245,7 @@ If you are getting `TooManyDevices` error or Amazon is giving you trouble with s
- Requires you to use `-m` or `--movie` flag if you are downloading a movie. Append flag to end of your command.
- From my testing, when using with VPN, it causes lots of issues, mainly needing to clear `Cache` folder and login repeatedly. Use residential proxies if available. Don't hammer service. Try waiting a minute or two before logging in again.
- If you are getting `No 2160p track found` error for a title you know has 4k, then try passing `-r DV` or `-r HDR`. Make sure your account can access highest qualities.
- Should be more stable now when using proxy. But do be careful. We don't use proxy for downloading segments, which means your IP could get banned from DSNP servers (ie persistent 403 errors). If you download the same title multiple times or many titles at once your IP address could get banned. This happened to me while testing.
### Hulu

View File

@ -289,12 +289,13 @@ class Track:
save_path = os.path.join(out, name)
if self.descriptor == self.Descriptor.M3U:
manifest = session.get(as_list(self.url)[0], headers=headers, proxies={"all": proxy} if proxy else None).text
manifest = (session or requests).get(as_list(self.url)[0], headers=headers, proxies={"all": proxy} if proxy else None).text
if "Denied" in manifest and self.source == "DSNP":
#DSNP sometimes gives errors with proxy. W/O headers also works. Sometimes it gives manifest after retrying. Dunno what triggers error. No geofencing for the segmenets themselves.
manifest = session.get(as_list(self.url)[0], proxies={"all": proxy} if proxy else None).text
manifest = (session or requests).get(as_list(self.url)[0], proxies={"all": proxy} if proxy else None).text
if "Denied" in manifest:
manifest = session.get(as_list(self.url)[0]).text
manifest = (session or requests).get(as_list(self.url)[0]).text
master = m3u8.loads(
manifest,
uri=as_list(self.url)[0]
@ -771,7 +772,7 @@ class TextTrack(Track):
return pycaption.SRTWriter().write(TextTrack.parse(data, codec))
def download(self, out, name=None, headers=None, proxy=None):
def download(self, out, name=None, headers=None, proxy=None, session=None):
save_path = super().download(out, name, headers, proxy)
if self.codec.lower() == "ass":
return save_path # Return the .ass file as-is without any conversion

View File

@ -24,7 +24,7 @@ cdm_api:
credentials:
iTunes: 'username:password'
Hotstar: 'username:password'
DisneyPlus: 'tjp4252@gmail.com:Tjcooke@121382'
DisneyPlus: 'username:password'
directories:
temp: ''