mirror of
https://github.com/pacnpal/Pac-cogs.git
synced 2025-12-20 10:51:05 -05:00
fix: Properly validate URLs using extractors' suitable() method
This commit is contained in:
@@ -5,6 +5,7 @@ import logging
|
|||||||
import asyncio
|
import asyncio
|
||||||
import ffmpeg
|
import ffmpeg
|
||||||
import yt_dlp
|
import yt_dlp
|
||||||
|
import shutil
|
||||||
from concurrent.futures import ThreadPoolExecutor
|
from concurrent.futures import ThreadPoolExecutor
|
||||||
from typing import Dict, List, Optional, Tuple
|
from typing import Dict, List, Optional, Tuple
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
@@ -301,9 +302,21 @@ class VideoDownloader:
|
|||||||
"""Check if URL is supported"""
|
"""Check if URL is supported"""
|
||||||
try:
|
try:
|
||||||
with yt_dlp.YoutubeDL() as ydl:
|
with yt_dlp.YoutubeDL() as ydl:
|
||||||
# Try to extract info without downloading
|
# Get extractors
|
||||||
ie = ydl.extract_info(url, download=False, process=False)
|
extractors = ydl._ies
|
||||||
return ie is not None
|
# Try each extractor
|
||||||
|
for extractor in extractors:
|
||||||
|
if hasattr(extractor, '_VALID_URL') and extractor._VALID_URL:
|
||||||
|
# Skip if site is not enabled
|
||||||
|
if self.enabled_sites and not any(
|
||||||
|
site.lower() in extractor.IE_NAME.lower()
|
||||||
|
for site in self.enabled_sites
|
||||||
|
):
|
||||||
|
continue
|
||||||
|
# Try to match URL
|
||||||
|
if extractor.suitable(url):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error checking URL support: {str(e)}")
|
logger.error(f"Error checking URL support: {str(e)}")
|
||||||
return False
|
return False
|
||||||
|
|||||||
Reference in New Issue
Block a user