Skip to content

Commit 37cddc0

Browse files
committed
Resilient to errors in getting lyrics
1 parent afc7472 commit 37cddc0

File tree

1 file changed

+22
-12
lines changed

1 file changed

+22
-12
lines changed

src/mediaplayer

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -295,18 +295,25 @@ def download_lyrics(artist, title):
295295
lyrlogger.handlers.clear()
296296
lyrlogger.addHandler(logging.StreamHandler(stream))
297297
lyrlogger.setLevel(logging.INFO)
298-
lt = syncedlyrics.search(
299-
f"{artist} {title}",
300-
synced_only=True,
301-
providers=config["lyrics_providers"],
302-
)
298+
try:
299+
lt = syncedlyrics.search(
300+
f"{artist} {title}",
301+
synced_only=True,
302+
providers=config["lyrics_providers"],
303+
)
304+
except Exception:
305+
logger.debug(
306+
"ERROR: syncedlyrics.search threw an exception. Returning None.")
307+
return None
303308
# This is the main logger
304309
# logger.debug("GOT LYRICS")
305310
# logger.debug("-"*10)
306311
# logger.debug(lt)
307312
# logger.debug("-"*10)
308313
if lt is None:
309-
lt = ""
314+
logger.debug(
315+
"ERROR: syncedlyrics.search returned None. Returning None.")
316+
return None
310317
lt = lt.replace("\n", "")
311318
lt = lt.split("[")
312319
lt = ["["+x for x in lt if x]
@@ -330,8 +337,9 @@ def get_new_lyrics(artist, title):
330337
"provider": None,
331338
}
332339
lyr = download_lyrics(artist, title)
333-
if lyr.lt is None:
334-
logger.debug("No lyrics, returning")
340+
if lyr is None:
341+
logger.debug("ERROR: download_lyrics returned None. Returning.")
342+
lyrics = None
335343
return
336344
lyrics["provider"] = lyr.provider
337345
for i, line in enumerate(lyr.lt):
@@ -513,13 +521,15 @@ def update_progressbar(manager, player):
513521
center_text(s, lyrics.get("max_len", None))
514522
if curr_line:
515523
s[curr_line] = "<b>" + s[curr_line] + "</b>"
516-
tooltip = f"<span variant='title-caps' font_weight='bold'>{s[0]}</span>\n"
517-
tooltip += f"{s[1]}\n"
524+
tooltip = f"<span variant='title-caps' font_weight='bold'>{s[0]}</span>"
525+
tooltip += f"\n{s[1]}"
518526
# Skip album in tooltip if we don't have it
519527
s[2] = s[2].strip()
520528
if s[2]:
521-
tooltip += f"<i>{s[2]}</i>\n"
522-
tooltip += "\n".join(s[3:])
529+
tooltip += f"\n<i>{s[2]}</i>"
530+
if len(s) >= 4 and s[3].strip():
531+
tooltip += "\n"
532+
tooltip += "\n".join(s[3:])
523533
write_output(widget_text, gen_class(perc), tooltip)
524534
# It's important to return True to keep the handler going
525535
last_metadata = metadata

0 commit comments

Comments
 (0)