remove retired lyric search code, removed lyric_search_history endpoint.

This commit is contained in:
codey 2025-01-19 08:37:59 -05:00
parent c82c18cfb7
commit 112f79e38b

View File

@ -100,11 +100,8 @@ class LyricSearch(FastAPI):
self.endpoints = {
"typeahead/artist": self.artist_typeahead_handler,
"typeahead/song": self.song_typeahead_handler,
# "lyric_search": self.lyric_search_handler,
"lyric_search": self.new_test, #test
"lyric_search": self.lyric_search_handler,
"lyric_cache_list": self.lyric_cache_list_handler,
"lyric_search_history": self.lyric_search_log_handler,
"lyric_search_test": self.new_test,
}
self.acceptable_request_sources = [
@ -168,7 +165,7 @@ class LyricSearch(FastAPI):
'history': last_10k_sings
}
async def new_test(self, data: ValidLyricRequest):
async def lyric_search_handler(self, data: ValidLyricRequest):
"""
Search for lyrics (testing)
@ -249,168 +246,3 @@ class LyricSearch(FastAPI):
# if not data.extra:
# result.pop('src')
return result
async def lyric_search_handler(self, data: ValidLyricRequest):
"""
Search for lyrics
- **a**: artist
- **s**: song
- **t**: track (artist and song combined) [used only if a & s are not used]
- **extra**: include extra details in response [optional, default: false]
- **lrc**: Request LRCs?
- **sub**: text to search within lyrics, if found lyrics will begin at found verse [optional, default: none]
- **src**: the script/utility which initiated the request
"""
lrc = data.lrc
src = data.src.upper()
if not src in self.acceptable_request_sources:
raise HTTPException(detail="Invalid request source", status_code=403)
await self.glob_state.increment_counter('lyric_requests')
search_artist = data.a
search_song = data.s
search_text = data.t
add_extras = data.extra
sub_search = data.sub
search_object = None
random_song_requested = (search_artist == "!" and search_song == "!")
query_valid = (
not(search_artist is None) and
not(search_song is None) and
len(search_artist) >= 1 and
len(search_song) >= 1 and
len(search_artist) + len(search_song) >= 3
)
if not random_song_requested and (not search_text and not query_valid):
return {
"err": True,
"errorText": "Invalid parameters"
}
if search_artist and search_song:
search_artist = self.constants.DOUBLE_SPACE_REGEX.sub(" ", search_artist.strip())
search_song = self.constants.DOUBLE_SPACE_REGEX.sub(" ", search_song.strip())
search_artist = urllib.parse.unquote(search_artist)
search_song = urllib.parse.unquote(search_song)
if search_text is None:
# pylint: disable=consider-using-f-string
search_object = self.lyrics_engine.create_query_object("%s : %s" % (search_artist, search_song))
if sub_search:
sub_search = regex.sub(r'\s{2,}', ' ', sub_search.strip())
search_object = self.lyrics_engine.create_query_object("%s : %s : %s" % (search_artist, search_song, sub_search))
else:
search_object = self.lyrics_engine.create_query_object(str(search_text))
if lrc:
search_worker = await self.lyrics_engine.grabFromSpotify(searching=search_object,
lrc=True)
spotify_lyrics_unsynced = True
if search_worker and search_worker.get('l'):
for line in search_worker.get('l'):
if line.get('timeTag') and line.get('timeTag') != "00:00.00":
spotify_lyrics_unsynced = False
if not search_worker or spotify_lyrics_unsynced:
# Try LRCLib before failing out
try:
lrclib_api_url = "https://lrclib.net/api/get"
sane_artist = urllib.parse.quote_plus(search_artist)
sane_track = urllib.parse.quote_plus(search_song)
async with aiohttp.ClientSession() as session:
async with session.get(f"{lrclib_api_url}?artist_name={sane_artist}&track_name={sane_track}") as request:
request.raise_for_status()
response_json = await request.json()
if not "syncedLyrics" in response_json:
raise BaseException("LRCLib Fallback Failed")
lrc_content = response_json.get('syncedLyrics')
returned_artist = response_json.get('artistName')
returned_song = response_json.get('trackName')
logging.debug("Synced Lyrics [LRCLib]: %s",
lrc_content)
lrc_content_out = []
for line in lrc_content.split("\n"):
_timetag = None
_words = None
if not line.strip():
continue
reg_helper = regex.findall(self.lrc_regex, line.strip())
if not reg_helper:
continue
reg_helper = reg_helper[0]
_timetag = reg_helper[0]
if not reg_helper[1].strip():
_words = ""
else:
_words = reg_helper[1]
lrc_content_out.append({
"timeTag": _timetag,
"words": _words,
})
return {
'err': False,
'artist': returned_artist,
'song': returned_song,
'combo_lev': "N/A",
'lrc': lrc_content_out,
'from_cache': False,
'src': 'Alt LRC SRC',
'reqn': await self.glob_state.get_counter('lyric_requests'),
}
except:
traceback.print_exc()
return {
'err': True,
'errorText': 'Search failed!',
}
return {
'err': True,
'errorText': 'Search failed!',
}
if lrc:
return {
'err': False,
'artist': search_worker['artist'],
'song': search_worker['song'],
'combo_lev': search_worker['combo_lev'],
'lrc': search_worker['l'],
'from_cache': False,
'src': search_worker['method'],
'reqn': await self.glob_state.get_counter('lyric_requests'),
}
search_worker = await self.lyrics_engine.lyrics_worker(searching=search_object)
if not search_worker or not 'l' in search_worker.keys():
await self.glob_state.increment_counter('failedlyric_requests')
return {
'err': True,
'errorText': 'Sources exhausted, lyrics not located.'
}
await self.lyrics_engine.storeHistEntry(artist=search_worker.get('artist'),
song=search_worker.get('song'),
retr_method=search_worker.get('method'),
request_src=src.strip())
return {
'err': False,
'artist': search_worker['artist'],
'song': search_worker['song'],
'combo_lev': f'{search_worker['combo_lev']:.2f}',
'lyrics': regex.sub(r"\s/\s", "<br>", " ".join(search_worker['l'])),
'from_cache': search_worker['method'].strip().lower().startswith("local cache"),
'src': search_worker['method'] if add_extras else None,
'reqn': await self.glob_state.get_counter('lyric_requests')
}