Add fix if HLS and DASH url is missing in VIDO
This commit is contained in:
parent
08d937c1c1
commit
4f27e67d51
@ -21,7 +21,7 @@ from datetime import datetime, timezone
|
|||||||
class VIDO(Service):
|
class VIDO(Service):
|
||||||
"""
|
"""
|
||||||
Vidio.com service, Series and Movies, login required.
|
Vidio.com service, Series and Movies, login required.
|
||||||
Version: 2.2.0
|
Version: 2.3.0
|
||||||
|
|
||||||
Supports URLs like:
|
Supports URLs like:
|
||||||
• https://www.vidio.com/premier/2978/giligilis (Series)
|
• https://www.vidio.com/premier/2978/giligilis (Series)
|
||||||
@ -355,22 +355,29 @@ class VIDO(Service):
|
|||||||
widevine_data = custom_data.get("widevine") if isinstance(custom_data, dict) else None
|
widevine_data = custom_data.get("widevine") if isinstance(custom_data, dict) else None
|
||||||
license_url = license_servers.get("drm_license_url") if isinstance(license_servers, dict) else None
|
license_url = license_servers.get("drm_license_url") if isinstance(license_servers, dict) else None
|
||||||
|
|
||||||
# Get stream URLs
|
# Get stream URLs, check all possible HLS and DASH fields
|
||||||
|
# HLS URLs (prefer in this order)
|
||||||
|
hls_url = (
|
||||||
|
stream.get("stream_hls_url") or
|
||||||
|
stream.get("stream_token_hls_url") or
|
||||||
|
stream.get("stream_token_url") # This is also HLS (m3u8)
|
||||||
|
)
|
||||||
|
|
||||||
|
# DASH URLs
|
||||||
dash_url = stream.get("stream_dash_url") or stream.get("stream_token_dash_url")
|
dash_url = stream.get("stream_dash_url") or stream.get("stream_token_dash_url")
|
||||||
hls_url = stream.get("stream_hls_url") or stream.get("stream_token_hls_url")
|
|
||||||
|
|
||||||
has_drm = widevine_data and license_url and dash_url and isinstance(widevine_data, str)
|
has_drm = widevine_data and license_url and dash_url and isinstance(widevine_data, str)
|
||||||
|
|
||||||
if has_drm:
|
if has_drm:
|
||||||
# DRM content: use DASH
|
# DRM content: must use DASH
|
||||||
self.log.info("Widevine DRM detected, using DASH")
|
self.log.info("Widevine DRM detected, using DASH")
|
||||||
self.custom_data = widevine_data
|
self.custom_data = widevine_data
|
||||||
self.license_url = license_url
|
self.license_url = license_url
|
||||||
tracks = DASH.from_url(dash_url, session=self.session).to_tracks(language=title.language)
|
tracks = DASH.from_url(dash_url, session=self.session).to_tracks(language=title.language)
|
||||||
|
|
||||||
elif hls_url:
|
elif hls_url:
|
||||||
# Non-DRM: use HLS for video/audio
|
# Non-DRM: prefer HLS (H.264, proper frame_rate metadata)
|
||||||
self.log.info("No DRM detected, using HLS for video/audio")
|
self.log.info("No DRM detected, using HLS")
|
||||||
self.custom_data = None
|
self.custom_data = None
|
||||||
self.license_url = None
|
self.license_url = None
|
||||||
tracks = HLS.from_url(hls_url, session=self.session).to_tracks(language=title.language)
|
tracks = HLS.from_url(hls_url, session=self.session).to_tracks(language=title.language)
|
||||||
@ -380,7 +387,7 @@ class VIDO(Service):
|
|||||||
self.log.debug("Clearing HLS subtitles (incompatible format)")
|
self.log.debug("Clearing HLS subtitles (incompatible format)")
|
||||||
tracks.subtitles.clear()
|
tracks.subtitles.clear()
|
||||||
|
|
||||||
# Get subtitles from DASH manifest (plain VTT)
|
# Get subtitles from DASH manifest (plain VTT) if available
|
||||||
if dash_url:
|
if dash_url:
|
||||||
self.log.debug("Extracting subtitles from DASH manifest")
|
self.log.debug("Extracting subtitles from DASH manifest")
|
||||||
manual_subs = self._extract_subtitles_from_mpd(dash_url)
|
manual_subs = self._extract_subtitles_from_mpd(dash_url)
|
||||||
@ -390,8 +397,8 @@ class VIDO(Service):
|
|||||||
self.log.info(f"Added {len(manual_subs)} subtitle tracks from DASH")
|
self.log.info(f"Added {len(manual_subs)} subtitle tracks from DASH")
|
||||||
|
|
||||||
elif dash_url:
|
elif dash_url:
|
||||||
# Fallback to DASH
|
# Fallback to DASH only if no HLS available
|
||||||
self.log.warning("No HLS available, using DASH (VP9 codec)")
|
self.log.warning("No HLS available, using DASH (VP9 codec - may have issues)")
|
||||||
self.custom_data = None
|
self.custom_data = None
|
||||||
self.license_url = None
|
self.license_url = None
|
||||||
tracks = DASH.from_url(dash_url, session=self.session).to_tracks(language=title.language)
|
tracks = DASH.from_url(dash_url, session=self.session).to_tracks(language=title.language)
|
||||||
@ -442,3 +449,4 @@ class VIDO(Service):
|
|||||||
raise Exception(f"License request failed ({response.status_code}): {error_summary}")
|
raise Exception(f"License request failed ({response.status_code}): {error_summary}")
|
||||||
|
|
||||||
return response.content
|
return response.content
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user