forked from kenzuya/unshackle
Compare commits
4 Commits
a7a8c882d8
...
3d384b8e3e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3d384b8e3e | ||
|
|
e0a666ada6 | ||
|
|
26c81779fa | ||
|
|
3b32462251 |
@@ -1847,25 +1847,32 @@ class dl:
|
|||||||
if not drm:
|
if not drm:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
track_quality = None
|
||||||
if isinstance(track, Video) and track.height:
|
if isinstance(track, Video) and track.height:
|
||||||
pass
|
track_quality = track.height
|
||||||
|
|
||||||
if isinstance(drm, Widevine):
|
if isinstance(drm, Widevine):
|
||||||
if not isinstance(self.cdm, (WidevineCdm, DecryptLabsRemoteCDM)) or (
|
if not isinstance(self.cdm, (WidevineCdm, DecryptLabsRemoteCDM)) or (
|
||||||
isinstance(self.cdm, DecryptLabsRemoteCDM) and self.cdm.is_playready
|
isinstance(self.cdm, DecryptLabsRemoteCDM) and self.cdm.is_playready
|
||||||
):
|
):
|
||||||
widevine_cdm = self.get_cdm(self.service, self.profile, drm="widevine")
|
widevine_cdm = self.get_cdm(self.service, self.profile, drm="widevine", quality=track_quality)
|
||||||
if widevine_cdm:
|
if widevine_cdm:
|
||||||
self.log.info("Switching to Widevine CDM for Widevine content")
|
if track_quality:
|
||||||
|
self.log.info(f"Switching to Widevine CDM for Widevine {track_quality}p content")
|
||||||
|
else:
|
||||||
|
self.log.info("Switching to Widevine CDM for Widevine content")
|
||||||
self.cdm = widevine_cdm
|
self.cdm = widevine_cdm
|
||||||
|
|
||||||
elif isinstance(drm, PlayReady):
|
elif isinstance(drm, PlayReady):
|
||||||
if not isinstance(self.cdm, (PlayReadyCdm, DecryptLabsRemoteCDM)) or (
|
if not isinstance(self.cdm, (PlayReadyCdm, DecryptLabsRemoteCDM)) or (
|
||||||
isinstance(self.cdm, DecryptLabsRemoteCDM) and not self.cdm.is_playready
|
isinstance(self.cdm, DecryptLabsRemoteCDM) and not self.cdm.is_playready
|
||||||
):
|
):
|
||||||
playready_cdm = self.get_cdm(self.service, self.profile, drm="playready")
|
playready_cdm = self.get_cdm(self.service, self.profile, drm="playready", quality=track_quality)
|
||||||
if playready_cdm:
|
if playready_cdm:
|
||||||
self.log.info("Switching to PlayReady CDM for PlayReady content")
|
if track_quality:
|
||||||
|
self.log.info(f"Switching to PlayReady CDM for PlayReady {track_quality}p content")
|
||||||
|
else:
|
||||||
|
self.log.info("Switching to PlayReady CDM for PlayReady content")
|
||||||
self.cdm = playready_cdm
|
self.cdm = playready_cdm
|
||||||
|
|
||||||
if isinstance(drm, Widevine):
|
if isinstance(drm, Widevine):
|
||||||
|
|||||||
@@ -44,9 +44,17 @@ class WindscribeVPN(Proxy):
|
|||||||
def get_proxy(self, query: str) -> Optional[str]:
|
def get_proxy(self, query: str) -> Optional[str]:
|
||||||
"""
|
"""
|
||||||
Get an HTTPS proxy URI for a WindscribeVPN server.
|
Get an HTTPS proxy URI for a WindscribeVPN server.
|
||||||
|
|
||||||
|
Note: Windscribe's static OpenVPN credentials only work on US servers.
|
||||||
"""
|
"""
|
||||||
query = query.lower()
|
query = query.lower()
|
||||||
|
|
||||||
|
if query != "us" and query not in self.server_map:
|
||||||
|
raise ValueError(
|
||||||
|
f"Windscribe proxy does not currently support the '{query.upper()}' region. "
|
||||||
|
"Only US servers are supported with static OpenVPN credentials. "
|
||||||
|
)
|
||||||
|
|
||||||
if query in self.server_map:
|
if query in self.server_map:
|
||||||
hostname = self.server_map[query]
|
hostname = self.server_map[query]
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -127,6 +127,8 @@ def sanitize_filename(filename: str, spacer: str = ".") -> str:
|
|||||||
# remove or replace further characters as needed
|
# remove or replace further characters as needed
|
||||||
filename = "".join(c for c in filename if unicodedata.category(c) != "Mn") # hidden characters
|
filename = "".join(c for c in filename if unicodedata.category(c) != "Mn") # hidden characters
|
||||||
filename = filename.replace("/", " & ").replace(";", " & ") # e.g. multi-episode filenames
|
filename = filename.replace("/", " & ").replace(";", " & ") # e.g. multi-episode filenames
|
||||||
|
if spacer == ".":
|
||||||
|
filename = re.sub(r" - ", spacer, filename) # title separators to spacer (avoids .-. pattern)
|
||||||
filename = re.sub(r"[:; ]", spacer, filename) # structural chars to (spacer)
|
filename = re.sub(r"[:; ]", spacer, filename) # structural chars to (spacer)
|
||||||
filename = re.sub(r"[\\*!?¿,'\"" "()<>|$#~]", "", filename) # not filename safe chars
|
filename = re.sub(r"[\\*!?¿,'\"" "()<>|$#~]", "", filename) # not filename safe chars
|
||||||
filename = re.sub(rf"[{spacer}]{{2,}}", spacer, filename) # remove extra neighbouring (spacer)s
|
filename = re.sub(rf"[{spacer}]{{2,}}", spacer, filename) # remove extra neighbouring (spacer)s
|
||||||
|
|||||||
Reference in New Issue
Block a user