Add generic-mode URL validation and UI

Introduce a "generic_mode" option to allow validating/downloading from non-YouTube sites and wire it through the UI, config, and validation logic. Key changes:

- Add generic_mode default to ConfigManager and persist setting from DownloadSettingsDialog (checkbox + help text).
- Extend validate_video_url to accept a generic_mode flag and allow any http/https URL with a domain when enabled; pass this flag from Analysis and Download flows.
- Update YTSageApp to load/save generic_mode, update URL placeholder and settings tooltip behavior, and refresh tooltip when settings change.
- Improve robustness in FormatTableMixin: handle None/incorrect types for format_note, abr, resolution, ext, and codec values to avoid type errors and ensure consistent display.
- Add localization entries for generic mode, placeholder, and related help text across multiple language files and update the in-app default localization strings.

These changes enable broader site support via yt-dlp while hardening UI format handling and keeping user settings persistent.
This commit is contained in:
oop7
2026-03-12 11:10:10 +02:00
parent a98dad0a33
commit 9afca46c5d
21 changed files with 152 additions and 30 deletions
+4
View File
@@ -274,6 +274,9 @@
"browse": "تصفح...",
"speed_limit": "حد السرعة",
"speed_limit_placeholder": "بدون",
"generic_mode": "الوضع العام",
"enable_generic_mode": "تفعيل الوضع العام (دعم المواقع غير التابعة ليوتيوب)",
"generic_mode_help": "يسمح بالتنزيل من Dailymotion وCBC Gem ومواقع أخرى يدعمها yt-dlp.",
"auto_update_ytdlp": "التحديثات التلقائية لـ yt-dlp",
"enable_auto_updates": "تفعيل التحديثات التلقائية لـ yt-dlp",
"update_frequency": "تكرار التحديثات:",
@@ -337,6 +340,7 @@
},
"main_ui": {
"url_placeholder": "أدخل رابط فيديو يوتيوب أو قائمة تشغيل",
"url_placeholder_generic": "أدخل رابط فيديو أو قائمة تشغيل من أي موقع مدعوم",
"merge_subtitles": "دمج الترجمات",
"save_thumbnail": "حفظ الصورة المصغرة",
"save_description": "حفظ الوصف",
+4
View File
@@ -274,6 +274,9 @@
"browse": "Durchsuchen...",
"speed_limit": "Geschwindigkeitsbegrenzung",
"speed_limit_placeholder": "Keine",
"generic_mode": "Generischer Modus",
"enable_generic_mode": "Generischen Modus aktivieren (Unterstützung für Nicht-YouTube-Seiten)",
"generic_mode_help": "Ermöglicht Downloads von Dailymotion, CBC Gem und anderen von yt-dlp unterstützten Seiten.",
"auto_update_ytdlp": "yt-dlp automatisch aktualisieren",
"enable_auto_updates": "Automatische yt-dlp-Updates aktivieren",
"update_frequency": "Update-Häufigkeit:",
@@ -337,6 +340,7 @@
},
"main_ui": {
"url_placeholder": "YouTube-Video- oder Playlist-URL eingeben",
"url_placeholder_generic": "Video- oder Playlist-URL von jeder unterstützten Seite eingeben",
"merge_subtitles": "Untertitel zusammenführen",
"save_thumbnail": "Thumbnail speichern",
"save_description": "Beschreibung speichern",
+4
View File
@@ -275,6 +275,9 @@
"browse": "Browse...",
"speed_limit": "Speed Limit",
"speed_limit_placeholder": "None",
"generic_mode": "Generic Mode",
"enable_generic_mode": "Enable Generic Mode (support non-YouTube sites)",
"generic_mode_help": "Allows downloading from Dailymotion, CBC Gem, and other sites supported by yt-dlp.",
"auto_update_ytdlp": "Auto-Update yt-dlp",
"enable_auto_updates": "Enable automatic yt-dlp updates",
"update_frequency": "Update frequency:",
@@ -338,6 +341,7 @@
},
"main_ui": {
"url_placeholder": "Enter YouTube video or playlist URL",
"url_placeholder_generic": "Enter video or playlist URL from any supported site",
"merge_subtitles": "Merge Subtitles",
"save_thumbnail": "Save Thumbnail",
"save_description": "Save Description",
+4
View File
@@ -257,6 +257,9 @@
"browse": "Examinar...",
"speed_limit": "Límite de Velocidad",
"speed_limit_placeholder": "Ninguno",
"generic_mode": "Modo genérico",
"enable_generic_mode": "Habilitar modo genérico (compatibilidad con sitios que no son YouTube)",
"generic_mode_help": "Permite descargar desde Dailymotion, CBC Gem y otros sitios compatibles con yt-dlp.",
"auto_update_ytdlp": "Auto-Actualizar yt-dlp",
"enable_auto_updates": "Habilitar actualizaciones automáticas de yt-dlp",
"update_frequency": "Frecuencia de actualización:",
@@ -320,6 +323,7 @@
},
"main_ui": {
"url_placeholder": "Ingresa URL de video o lista de YouTube",
"url_placeholder_generic": "Ingresa la URL de un video o una lista de cualquier sitio compatible",
"merge_subtitles": "Combinar Subtítulos",
"save_thumbnail": "Guardar Miniatura",
"save_description": "Guardar Descripción",
+4
View File
@@ -274,6 +274,9 @@
"browse": "Parcourir...",
"speed_limit": "Limite de vitesse",
"speed_limit_placeholder": "Aucune",
"generic_mode": "Mode générique",
"enable_generic_mode": "Activer le mode générique (prise en charge des sites non-YouTube)",
"generic_mode_help": "Permet le téléchargement depuis Dailymotion, CBC Gem et d'autres sites pris en charge par yt-dlp.",
"auto_update_ytdlp": "Mise à jour automatique de yt-dlp",
"enable_auto_updates": "Activer les mises à jour automatiques de yt-dlp",
"update_frequency": "Fréquence de mise à jour :",
@@ -337,6 +340,7 @@
},
"main_ui": {
"url_placeholder": "Entrer l'URL de la vidéo ou de la playlist YouTube",
"url_placeholder_generic": "Entrez l'URL d'une vidéo ou d'une playlist depuis n'importe quel site pris en charge",
"merge_subtitles": "Fusionner les sous-titres",
"save_thumbnail": "Sauvegarder la miniature",
"save_description": "Sauvegarder la description",
+4
View File
@@ -274,6 +274,9 @@
"browse": "ब्राउज़ करें...",
"speed_limit": "गति सीमा",
"speed_limit_placeholder": "कोई नहीं",
"generic_mode": "जेनेरिक मोड",
"enable_generic_mode": "जेनेरिक मोड सक्षम करें (गैर-YouTube साइटों के लिए समर्थन)",
"generic_mode_help": "Dailymotion, CBC Gem और yt-dlp द्वारा समर्थित अन्य साइटों से डाउनलोड की अनुमति देता है।",
"auto_update_ytdlp": "yt-dlp स्वचालित अपडेट",
"enable_auto_updates": "yt-dlp स्वचालित अपडेट सक्षम करें",
"update_frequency": "अपडेट आवृत्ति:",
@@ -337,6 +340,7 @@
},
"main_ui": {
"url_placeholder": "YouTube वीडियो या प्लेलिस्ट URL दर्ज करें",
"url_placeholder_generic": "किसी भी समर्थित साइट से वीडियो या प्लेलिस्ट URL दर्ज करें",
"merge_subtitles": "उपशीर्षक मर्ज करें",
"save_thumbnail": "थंबनेल सेव करें",
"save_description": "विवरण सेव करें",
+4
View File
@@ -274,6 +274,9 @@
"browse": "Jelajahi...",
"speed_limit": "Batas kecepatan",
"speed_limit_placeholder": "Tidak ada",
"generic_mode": "Mode generik",
"enable_generic_mode": "Aktifkan mode generik (mendukung situs non-YouTube)",
"generic_mode_help": "Memungkinkan pengunduhan dari Dailymotion, CBC Gem, dan situs lain yang didukung oleh yt-dlp.",
"auto_update_ytdlp": "Pembaruan otomatis yt-dlp",
"enable_auto_updates": "Aktifkan pembaruan otomatis yt-dlp",
"update_frequency": "Frekuensi pembaruan:",
@@ -337,6 +340,7 @@
},
"main_ui": {
"url_placeholder": "Masukkan URL video atau playlist YouTube",
"url_placeholder_generic": "Masukkan URL video atau playlist dari situs apa pun yang didukung",
"merge_subtitles": "Gabungkan subtitle",
"save_thumbnail": "Simpan thumbnail",
"save_description": "Simpan deskripsi",
+4
View File
@@ -274,6 +274,9 @@
"browse": "Sfoglia...",
"speed_limit": "Limite velocità",
"speed_limit_placeholder": "Nessuno",
"generic_mode": "Modalità generica",
"enable_generic_mode": "Abilita modalità generica (supporta siti non YouTube)",
"generic_mode_help": "Consente il download da Dailymotion, CBC Gem e altri siti supportati da yt-dlp.",
"auto_update_ytdlp": "Aggiornamenti automatici yt-dlp",
"enable_auto_updates": "Abilita aggiornamenti automatici yt-dlp",
"update_frequency": "Frequenza aggiornamenti:",
@@ -337,6 +340,7 @@
},
"main_ui": {
"url_placeholder": "Inserisci URL video YouTube o playlist",
"url_placeholder_generic": "Inserisci l'URL di un video o di una playlist da qualsiasi sito supportato",
"merge_subtitles": "Unisci sottotitoli",
"save_thumbnail": "Salva miniatura",
"save_description": "Salva descrizione",
+4
View File
@@ -274,6 +274,9 @@
"browse": "参照...",
"speed_limit": "速度制限",
"speed_limit_placeholder": "なし",
"generic_mode": "汎用モード",
"enable_generic_mode": "汎用モードを有効化(YouTube以外のサイトをサポート)",
"generic_mode_help": "Dailymotion、CBC Gem、および yt-dlp が対応する他のサイトからのダウンロードを可能にします。",
"auto_update_ytdlp": "yt-dlp自動更新",
"enable_auto_updates": "yt-dlp自動更新を有効化",
"update_frequency": "更新頻度:",
@@ -337,6 +340,7 @@
},
"main_ui": {
"url_placeholder": "YouTubeの動画URLまたはプレイリストURLを入力",
"url_placeholder_generic": "対応サイトの動画またはプレイリストURLを入力",
"merge_subtitles": "字幕を結合",
"save_thumbnail": "サムネイルを保存",
"save_description": "説明を保存",
+4
View File
@@ -274,6 +274,9 @@
"browse": "Przeglądaj...",
"speed_limit": "Limit prędkości",
"speed_limit_placeholder": "Brak",
"generic_mode": "Tryb ogólny",
"enable_generic_mode": "Włącz tryb ogólny (obsługa stron innych niż YouTube)",
"generic_mode_help": "Umożliwia pobieranie z Dailymotion, CBC Gem i innych stron obsługiwanych przez yt-dlp.",
"auto_update_ytdlp": "Automatyczne aktualizacje yt-dlp",
"enable_auto_updates": "Włącz automatyczne aktualizacje yt-dlp",
"update_frequency": "Częstotliwość aktualizacji:",
@@ -337,6 +340,7 @@
},
"main_ui": {
"url_placeholder": "Wprowadź URL wideo YouTube lub playlisty",
"url_placeholder_generic": "Wprowadź URL filmu lub playlisty z dowolnej obsługiwanej strony",
"merge_subtitles": "Połącz napisy",
"save_thumbnail": "Zapisz miniaturę",
"save_description": "Zapisz opis",
+4
View File
@@ -274,6 +274,9 @@
"browse": "Procurar...",
"speed_limit": "Limite de Velocidade",
"speed_limit_placeholder": "Nenhum",
"generic_mode": "Modo genérico",
"enable_generic_mode": "Ativar modo genérico (suporte a sites que não são do YouTube)",
"generic_mode_help": "Permite baixar de Dailymotion, CBC Gem e outros sites compatíveis com o yt-dlp.",
"auto_update_ytdlp": "Auto-Atualizar yt-dlp",
"enable_auto_updates": "Habilitar atualizações automáticas do yt-dlp",
"update_frequency": "Frequência de atualização:",
@@ -337,6 +340,7 @@
},
"main_ui": {
"url_placeholder": "Digite a URL do vídeo ou playlist do YouTube",
"url_placeholder_generic": "Digite a URL de um vídeo ou playlist de qualquer site compatível",
"merge_subtitles": "Mesclar Legendas",
"save_thumbnail": "Salvar Miniatura",
"save_description": "Salvar Descrição",
+4
View File
@@ -274,6 +274,9 @@
"browse": "Обзор...",
"speed_limit": "Ограничение скорости",
"speed_limit_placeholder": "Нет",
"generic_mode": "Универсальный режим",
"enable_generic_mode": "Включить универсальный режим (поддержка сайтов не только YouTube)",
"generic_mode_help": "Позволяет скачивать с Dailymotion, CBC Gem и других сайтов, поддерживаемых yt-dlp.",
"auto_update_ytdlp": "Автообновление yt-dlp",
"enable_auto_updates": "Включить автоматические обновления yt-dlp",
"update_frequency": "Частота обновления:",
@@ -337,6 +340,7 @@
},
"main_ui": {
"url_placeholder": "Введите URL видео или плейлиста YouTube",
"url_placeholder_generic": "Введите URL видео или плейлиста с любого поддерживаемого сайта",
"merge_subtitles": "Объединить субтитры",
"save_thumbnail": "Сохранить миниатюру",
"save_description": "Сохранить описание",
+4
View File
@@ -272,6 +272,9 @@
"browse": "Gözat...",
"speed_limit": "Hız sınırı",
"speed_limit_placeholder": "Yok",
"generic_mode": "Genel mod",
"enable_generic_mode": "Genel modu etkinleştir (YouTube dışı siteleri destekle)",
"generic_mode_help": "Dailymotion, CBC Gem ve yt-dlp tarafından desteklenen diğer sitelerden indirmeye izin verir.",
"auto_update_ytdlp": "yt-dlp otomatik güncelleme",
"enable_auto_updates": "yt-dlp otomatik güncellemelerini etkinleştir",
"update_frequency": "Güncelleme sıklığı:",
@@ -335,6 +338,7 @@
},
"main_ui": {
"url_placeholder": "YouTube video veya oynatma listesi URL'sini girin",
"url_placeholder_generic": "Desteklenen herhangi bir siteden video veya oynatma listesi URL'si girin",
"merge_subtitles": "Altyazıları birleştir",
"save_thumbnail": "Küçük resmi kaydet",
"save_description": "Açıklamayı kaydet",
+4
View File
@@ -262,6 +262,9 @@
"browse": "浏览...",
"speed_limit": "速度限制",
"speed_limit_placeholder": "无",
"generic_mode": "通用模式",
"enable_generic_mode": "启用通用模式(支持非 YouTube 网站)",
"generic_mode_help": "允许从 Dailymotion、CBC Gem 以及其他受 yt-dlp 支持的网站下载。",
"auto_update_ytdlp": "自动更新 yt-dlp",
"enable_auto_updates": "启用 yt-dlp 自动更新",
"update_frequency": "更新频率:",
@@ -325,6 +328,7 @@
},
"main_ui": {
"url_placeholder": "输入 YouTube 视频或播放列表网址",
"url_placeholder_generic": "输入任意受支持网站的视频或播放列表网址",
"merge_subtitles": "合并字幕",
"save_thumbnail": "保存缩略图",
"save_description": "保存描述",