From 84e1acaab8f7e4e7e36d19e3b6847a0ab6c33759 Mon Sep 17 00:00:00 2001 From: Astounds Date: Sun, 22 Mar 2026 14:17:23 -0500 Subject: yt-dlp --- youtube/watch.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'youtube/watch.py') diff --git a/youtube/watch.py b/youtube/watch.py index 0274cd0..aa286e2 100644 --- a/youtube/watch.py +++ b/youtube/watch.py @@ -6,6 +6,9 @@ import settings from flask import request import flask +import logging + +logger = logging.getLogger(__name__) import json import gevent @@ -685,6 +688,18 @@ def get_watch_page(video_id=None): pair_sources = source_info['pair_sources'] uni_idx, pair_idx = source_info['uni_idx'], source_info['pair_idx'] + # Extract audio tracks using yt-dlp for multi-language support + audio_tracks = [] + try: + from youtube import ytdlp_integration + ytdlp_info = ytdlp_integration.extract_video_info_ytdlp(video_id) + audio_tracks = ytdlp_info.get('audio_tracks', []) + if audio_tracks: + logger.info(f'Found {len(audio_tracks)} audio tracks for video {video_id}') + except Exception as e: + logger.warning(f'Failed to extract audio tracks: {e}') + audio_tracks = [] + pair_quality = yt_data_extract.deep_get(pair_sources, pair_idx, 'quality') uni_quality = yt_data_extract.deep_get(uni_sources, uni_idx, 'quality') @@ -808,7 +823,9 @@ def get_watch_page(video_id=None): 'playlist': info['playlist'], 'related': info['related_videos'], 'playability_error': info['playability_error'], + 'audio_tracks': audio_tracks, }, + audio_tracks = audio_tracks, font_family = youtube.font_choices[settings.font], # for embed page **source_info, using_pair_sources = using_pair_sources, @@ -884,3 +901,18 @@ def get_transcript(caption_path): return flask.Response(result.encode('utf-8'), mimetype='text/plain;charset=UTF-8') + + +# ============================================================================ +# yt-dlp Integration Routes +# ============================================================================ + +@yt_app.route('/ytl-api/video-with-audio/') +def proxy_video_with_audio(video_id): + """ + Proxy para servir video con audio especĂ­fico usando yt-dlp + """ + from youtube import ytdlp_proxy + audio_lang = request.args.get('lang', 'en') + max_quality = int(request.args.get('quality', 720)) + return ytdlp_proxy.stream_video_with_audio(video_id, audio_lang, max_quality) -- cgit v1.2.3