Add non-exact matches for spotify (in settings)

This commit is contained in:
BarsTiger
2023-12-04 17:03:00 +02:00
parent cae8dcc3df
commit 14303023aa
2 changed files with 36 additions and 15 deletions

View File

@@ -34,6 +34,7 @@ async def on_new_chosen(chosen_result: ChosenInlineResult, bot: Bot,
song.full_name,
exact_match=True,
)
if settings['exact_spotify_search'].value == 'yes':
if ((song.all_artists != yt_song.all_artists or song.name != yt_song.name)
and not not_strict_name(song, yt_song)):
await bot.edit_message_caption(
@@ -98,6 +99,7 @@ async def on_new_chosen(chosen_result: ChosenInlineResult, bot: Bot,
assert e
if audio:
if settings['exact_spotify_search'].value == 'yes':
db.spotify[song.id] = audio.audio.file_id
await bot.edit_message_media(
@@ -135,8 +137,10 @@ async def on_new_chosen(chosen_result: ChosenInlineResult, bot: Bot,
duration=bytestream.duration,
)
db.youtube[yt_song.id] = audio.audio.file_id
db.spotify[song.id] = audio.audio.file_id
db.recoded[yt_song.id] = True
if settings['exact_spotify_search'].value == 'yes':
db.spotify[song.id] = audio.audio.file_id
db.recoded[song.id] = True
await bot.edit_message_caption(
@@ -150,6 +154,7 @@ async def on_new_chosen(chosen_result: ChosenInlineResult, bot: Bot,
)
elif yt_song and settings['recode_youtube'].value == 'no':
db.recoded[yt_song.id] = audio.message_id
if settings['exact_spotify_search'].value == 'yes':
db.recoded[song.id] = audio.message_id
await db.occasionally_write()

View File

@@ -28,6 +28,18 @@ settings_strings: dict[str, Setting] = {
'no': 'Send original file',
'yes': 'Recode to libmp3lame'
},
),
'exact_spotify_search': Setting(
name='Only exact Spotify matches',
description='When searching on Youtube from Spotify, show only exact matches, '
'may protect against inaccurate matches, but at the same time it '
'can lose reuploaded tracks. Should be enabled always, except in '
'situations where the track is not found on both YouTube and '
'Deezer',
choices={
'yes': 'Only exact matches',
'no': 'Fuzzy matches also'
},
)
}
@@ -50,7 +62,11 @@ class UserSettings:
s = settings_strings.get(item)
if s is None:
return None
try:
s.value = db.settings[self.user_id][item]
except KeyError:
s.value = list(s.choices)[0]
self[item] = s.value
return s
def __setitem__(self, key, value):