diff --git a/VIDO/__init__.py b/VIDO/__init__.py index 7e2b5b8..6a0c930 100644 --- a/VIDO/__init__.py +++ b/VIDO/__init__.py @@ -21,7 +21,7 @@ from datetime import datetime, timezone class VIDO(Service): """ Vidio.com service, Series and Movies, login required. - Version: 2.2.0 + Version: 2.3.0 Supports URLs like: • 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 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") - 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) if has_drm: - # DRM content: use DASH + # DRM content: must use DASH self.log.info("Widevine DRM detected, using DASH") self.custom_data = widevine_data self.license_url = license_url tracks = DASH.from_url(dash_url, session=self.session).to_tracks(language=title.language) elif hls_url: - # Non-DRM: use HLS for video/audio - self.log.info("No DRM detected, using HLS for video/audio") + # Non-DRM: prefer HLS (H.264, proper frame_rate metadata) + self.log.info("No DRM detected, using HLS") self.custom_data = None self.license_url = None 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)") tracks.subtitles.clear() - # Get subtitles from DASH manifest (plain VTT) + # Get subtitles from DASH manifest (plain VTT) if available if dash_url: self.log.debug("Extracting subtitles from DASH manifest") 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") elif dash_url: - # Fallback to DASH - self.log.warning("No HLS available, using DASH (VP9 codec)") + # Fallback to DASH only if no HLS available + self.log.warning("No HLS available, using DASH (VP9 codec - may have issues)") self.custom_data = None self.license_url = None 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}") return response.content +