From 57f96c4fff7572d0b1e1231fcb9e4fec2d700746 Mon Sep 17 00:00:00 2001 From: usernames122 Date: Sun, 12 Oct 2025 17:53:47 +0200 Subject: [PATCH] Add YouVideo Extractor for shiz and giggles --- yt_dlp/extractor/_extractors.py | 2 ++ yt_dlp/extractor/youvideo.py | 34 +++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 yt_dlp/extractor/youvideo.py diff --git a/yt_dlp/extractor/_extractors.py b/yt_dlp/extractor/_extractors.py index e6b34e9e6..34aaf92c3 100644 --- a/yt_dlp/extractor/_extractors.py +++ b/yt_dlp/extractor/_extractors.py @@ -2599,3 +2599,5 @@ from .zingmp3 import ( ) from .zoom import ZoomIE from .zype import ZypeIE + +from .youvideo import YouVideoIE \ No newline at end of file diff --git a/yt_dlp/extractor/youvideo.py b/yt_dlp/extractor/youvideo.py new file mode 100644 index 000000000..abfea993c --- /dev/null +++ b/yt_dlp/extractor/youvideo.py @@ -0,0 +1,34 @@ +from .common import InfoExtractor +from ..utils import ( + int_or_none, unified_strdate +) + +class YouVideoIE(InfoExtractor): + IE_NAME = 'YouVideo' + _VALID_URL = r'https?://youvideo\.nonamesoft\.xyz/youvideo/\?play=(?P[0-9a-fA-F-]{36})' + + _TESTS = [{ + 'url': 'https://youvideo.nonamesoft.xyz/youvideo/?play=8f9888f2-24d1-4220-8d50-e9236c929650', + 'only_matching': True, + }] + + + def _real_extract(self, url): + video_id = self._match_id(url) + api_url = f'https://youvideo.nonamesoft.xyz/youvideo/video/{video_id}' + data = self._download_json(api_url, video_id, note='Downloading video metadata') # Direct! YouVideo is easy! + formats = [ + { + 'url': f'https://youvideo.nonamesoft.xyz/youvideo/api/videofile/with_extension/{video_id}{data.get("extension","wtf")}', + "ext": data.get("extension","mp4").lstrip('.'), + 'format_id': 'source', # Youvideo has no transcodes, only source + } + ] + metadata = data.get("metadata",{}) + return { + 'id': video_id, + 'title': data.get("name","Failed to fetch title"), + 'formats': formats, + 'duration': int_or_none(metadata.get('duration')), + 'description': data.get('description',"No description specified"), + } \ No newline at end of file