Get more accurate when search artist name

This commit is contained in:
dvirlabs 2025-08-03 02:54:48 +00:00
parent 1a0948d52b
commit fdd95d73f3
2 changed files with 8 additions and 8 deletions

View File

@ -8,10 +8,13 @@ def is_playlist(query: str) -> bool:
def is_youtube_url(query: str) -> bool: def is_youtube_url(query: str) -> bool:
return query.startswith("http") return query.startswith("http")
def max_duration_filter(max_seconds): def duration_range_filter(min_seconds, max_seconds):
def _filter(info, *, incomplete): def _filter(info, *, incomplete):
duration = info.get('duration') duration = info.get('duration')
if duration and duration > max_seconds: if duration:
if duration < min_seconds:
return f"Skipping: {info.get('title')} is shorter than {min_seconds//60} minutes"
if duration > max_seconds:
return f"Skipping: {info.get('title')} is longer than {max_seconds//60} minutes" return f"Skipping: {info.get('title')} is longer than {max_seconds//60} minutes"
return _filter return _filter
@ -24,11 +27,8 @@ def download_song(query: str):
elif is_playlist(query): elif is_playlist(query):
yt_query = query yt_query = query
noplaylist = False noplaylist = False
elif len(query.split()) == 1:
yt_query = f"ytsearch50:{query}"
noplaylist = True
else: else:
yt_query = f"ytsearch1:{query}" yt_query = f"ytsearch10:{query}" # Always search for 10 results for any artist/song query
noplaylist = True noplaylist = True
ydl_opts = { ydl_opts = {
@ -40,7 +40,7 @@ def download_song(query: str):
}, { }, {
'key': 'FFmpegMetadata', 'key': 'FFmpegMetadata',
}], }],
'match_filter': max_duration_filter(10 * 60), # 5 minutes in seconds 'match_filter': duration_range_filter(2 * 60, 9 * 60), # 2 to 9 minutes
'noplaylist': noplaylist, 'noplaylist': noplaylist,
'quiet': False, 'quiet': False,
'verbose': True, 'verbose': True,