feat(search): add SoundCloud source and cross-platform relevance ranking

This commit is contained in:
Antigravity committed 2026-10-12 14:23:50 +03:00
1 parent 30ba67c707
commit aa6c605d14
4 files changed
+214 -63

No files matched your search

+8 -4
View File
@@ -17,7 +17,10 @@ class UniversalProvider(BaseProvider):
"music.apple.com",
"youtube.com",
"youtu.be",
"music.youtube.com"
"music.youtube.com",
"soundcloud.com",
"snd.sc",
"api.soundcloud.com"
])
async def resolve(self, url: str) -> List[TrackMetadata]:
@@ -106,15 +109,16 @@ class UniversalProvider(BaseProvider):
continue
title = entry.get("title", "Unknown")
uploader = entry.get("uploader") or entry.get("artist") or "Unknown"
service_name = "soundcloud" if ("soundcloud" in (entry.get("webpage_url") or url).lower() or "snd.sc" in url.lower()) else "youtube"
tracks.append(TrackMetadata(
service="youtube",
service=service_name,
service_id=str(entry.get("id", "")),
title=title,
artist=uploader,
album=entry.get("album"),
duration_ms=int(entry.get("duration", 0) * 1000) if entry.get("duration") else None,
cover_url=entry.get("thumbnail"),
source_url=entry.get("webpage_url") or f"https://www.youtube.com/watch?v={entry.get('id')}"
source_url=entry.get("webpage_url") or url
))
except Exception as e:
print(f"yt-dlp resolve error: {e}")
@@ -144,7 +148,7 @@ class UniversalProvider(BaseProvider):
}
try:
target_input = track.source_url if track.service == "youtube" and track.source_url else f"ytsearch1:{query}"
target_input = track.source_url if track.service in ("youtube", "soundcloud") and track.source_url else f"ytsearch1:{query}"
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download([target_input])