huge refactor of the entire codebase, with the goal of improving maintainability, readability, and extensibility. This commit includes changes to almost every file in the project, including:
This commit is contained in:
+10
-29
@@ -11,6 +11,7 @@ logger = logging.getLogger(__name__)
|
||||
from pathlib import Path
|
||||
from typing import Any, Dict, Iterable, List, Optional, Sequence, Set, Tuple
|
||||
|
||||
from ProviderCore.registry import get_plugin
|
||||
from SYS.yt_metadata import extract_ytdlp_tags
|
||||
|
||||
try: # Optional; used when available for richer metadata fetches
|
||||
@@ -2213,40 +2214,20 @@ def enrich_playlist_entries(entries: list, extractor: str) -> list:
|
||||
Returns:
|
||||
List of enriched entry dicts
|
||||
"""
|
||||
# Import here to avoid circular dependency
|
||||
from tool.ytdlp import is_url_supported_by_ytdlp
|
||||
|
||||
if not entries:
|
||||
return entries
|
||||
|
||||
enriched = []
|
||||
for entry in entries:
|
||||
# If entry has a direct URL, fetch its full metadata
|
||||
entry_url = entry.get("url")
|
||||
if entry_url and is_url_supported_by_ytdlp(entry_url):
|
||||
try:
|
||||
import yt_dlp
|
||||
plugin = get_plugin("ytdlp", {})
|
||||
if plugin is None:
|
||||
return entries
|
||||
|
||||
ydl_opts: Any = {
|
||||
"quiet": True,
|
||||
"no_warnings": True,
|
||||
"skip_download": True,
|
||||
"noprogress": True,
|
||||
"socket_timeout": 5,
|
||||
"retries": 1,
|
||||
}
|
||||
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
|
||||
full_info = ydl.extract_info(entry_url, download=False)
|
||||
if full_info:
|
||||
enriched.append(full_info)
|
||||
continue
|
||||
except Exception:
|
||||
logger.exception("Failed to fetch full metadata for entry URL: %s", entry_url)
|
||||
try:
|
||||
enriched = plugin.enrich_playlist_entries(entries, extractor=extractor)
|
||||
except Exception:
|
||||
logger.exception("Failed to enrich playlist entries for extractor: %s", extractor)
|
||||
return entries
|
||||
|
||||
# Fallback to original entry if fetch failed
|
||||
enriched.append(entry)
|
||||
|
||||
return enriched
|
||||
return enriched if isinstance(enriched, list) else entries
|
||||
|
||||
|
||||
def format_playlist_entry(entry: Dict[str,
|
||||
|
||||
Reference in New Issue
Block a user