Add non-exact matches for spotify (in settings)
This commit is contained in:
@@ -34,16 +34,17 @@ async def on_new_chosen(chosen_result: ChosenInlineResult, bot: Bot,
|
|||||||
song.full_name,
|
song.full_name,
|
||||||
exact_match=True,
|
exact_match=True,
|
||||||
)
|
)
|
||||||
if ((song.all_artists != yt_song.all_artists or song.name != yt_song.name)
|
if settings['exact_spotify_search'].value == 'yes':
|
||||||
and not not_strict_name(song, yt_song)):
|
if ((song.all_artists != yt_song.all_artists or song.name != yt_song.name)
|
||||||
await bot.edit_message_caption(
|
and not not_strict_name(song, yt_song)):
|
||||||
inline_message_id=chosen_result.inline_message_id,
|
await bot.edit_message_caption(
|
||||||
caption='🙄 Cannot find this song on YouTube, trying Deezer...',
|
inline_message_id=chosen_result.inline_message_id,
|
||||||
reply_markup=None,
|
caption='🙄 Cannot find this song on YouTube, trying Deezer...',
|
||||||
parse_mode='HTML',
|
reply_markup=None,
|
||||||
)
|
parse_mode='HTML',
|
||||||
yt_song = None
|
)
|
||||||
bytestream = False
|
yt_song = None
|
||||||
|
bytestream = False
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if bytestream is None:
|
if bytestream is None:
|
||||||
@@ -98,7 +99,8 @@ async def on_new_chosen(chosen_result: ChosenInlineResult, bot: Bot,
|
|||||||
assert e
|
assert e
|
||||||
|
|
||||||
if audio:
|
if audio:
|
||||||
db.spotify[song.id] = audio.audio.file_id
|
if settings['exact_spotify_search'].value == 'yes':
|
||||||
|
db.spotify[song.id] = audio.audio.file_id
|
||||||
|
|
||||||
await bot.edit_message_media(
|
await bot.edit_message_media(
|
||||||
inline_message_id=chosen_result.inline_message_id,
|
inline_message_id=chosen_result.inline_message_id,
|
||||||
@@ -135,9 +137,11 @@ async def on_new_chosen(chosen_result: ChosenInlineResult, bot: Bot,
|
|||||||
duration=bytestream.duration,
|
duration=bytestream.duration,
|
||||||
)
|
)
|
||||||
db.youtube[yt_song.id] = audio.audio.file_id
|
db.youtube[yt_song.id] = audio.audio.file_id
|
||||||
db.spotify[song.id] = audio.audio.file_id
|
|
||||||
db.recoded[yt_song.id] = True
|
db.recoded[yt_song.id] = True
|
||||||
db.recoded[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(
|
await bot.edit_message_caption(
|
||||||
inline_message_id=chosen_result.inline_message_id,
|
inline_message_id=chosen_result.inline_message_id,
|
||||||
@@ -150,6 +154,7 @@ async def on_new_chosen(chosen_result: ChosenInlineResult, bot: Bot,
|
|||||||
)
|
)
|
||||||
elif yt_song and settings['recode_youtube'].value == 'no':
|
elif yt_song and settings['recode_youtube'].value == 'no':
|
||||||
db.recoded[yt_song.id] = audio.message_id
|
db.recoded[yt_song.id] = audio.message_id
|
||||||
db.recoded[song.id] = audio.message_id
|
if settings['exact_spotify_search'].value == 'yes':
|
||||||
|
db.recoded[song.id] = audio.message_id
|
||||||
|
|
||||||
await db.occasionally_write()
|
await db.occasionally_write()
|
||||||
|
|||||||
@@ -28,6 +28,18 @@ settings_strings: dict[str, Setting] = {
|
|||||||
'no': 'Send original file',
|
'no': 'Send original file',
|
||||||
'yes': 'Recode to libmp3lame'
|
'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)
|
s = settings_strings.get(item)
|
||||||
if s is None:
|
if s is None:
|
||||||
return None
|
return None
|
||||||
s.value = db.settings[self.user_id][item]
|
try:
|
||||||
|
s.value = db.settings[self.user_id][item]
|
||||||
|
except KeyError:
|
||||||
|
s.value = list(s.choices)[0]
|
||||||
|
self[item] = s.value
|
||||||
return s
|
return s
|
||||||
|
|
||||||
def __setitem__(self, key, value):
|
def __setitem__(self, key, value):
|
||||||
|
|||||||
Reference in New Issue
Block a user