This commit is contained in:
2025-01-22 06:38:40 -05:00
parent 38dbddd297
commit 4b16a4a265
5 changed files with 64 additions and 11 deletions

View File

@@ -264,7 +264,8 @@ class Cache:
matched.time = time_diff
logging.info("Found %s on redis cache, skipping SQLite...",
f"{artist} - {song}")
f"{artist} - {song}")
await self.redis_cache.increment_found_count(self.label)
return matched
"""SQLite: Fallback"""
@@ -302,6 +303,7 @@ class Cache:
time_end: float = time.time()
time_diff: float = time_end - time_start
matched.time = time_diff
await self.redis_cache.increment_found_count(self.label)
return matched
except:
traceback.print_exc()

View File

@@ -10,9 +10,7 @@ from typing import Optional
from aiohttp import ClientTimeout, ClientSession
from bs4 import BeautifulSoup, ResultSet
import html as htm
from . import private
from . import common
from . import cache
from . import private, common, cache, redis_cache
from lyric_search_new import utils
from lyric_search_new.constructors import LyricsResult
@@ -36,6 +34,7 @@ class Genius:
self.datautils = utils.DataUtils()
self.matcher = utils.TrackMatcher()
self.cache = cache.Cache()
self.redis_cache = redis_cache.RedisCache()
# pylint: disable=unused-argument
async def search(self, artist: str, song: str, **kwargs) -> Optional[LyricsResult]:
@@ -123,6 +122,7 @@ class Genius:
lyrics=returned_lyrics,
confidence=confidence,
time=time_diff)
await self.redis_cache.increment_found_count(self.label)
await self.cache.store(matched)
return matched

View File

@@ -10,8 +10,7 @@ from typing import Optional
from aiohttp import ClientTimeout, ClientSession
from lyric_search_new import utils
from lyric_search_new.constructors import LyricsResult
from . import common
from . import cache
from . import common, cache, redis_cache
logger = logging.getLogger()
log_level = logging.getLevelName(logger.level)
@@ -31,6 +30,7 @@ class LRCLib:
self.datautils = utils.DataUtils()
self.matcher = utils.TrackMatcher()
self.cache = cache.Cache()
self.redis_cache = redis_cache.RedisCache()
async def search(self, artist: str, song: str, plain: bool = True) -> Optional[LyricsResult]:
"""
@@ -121,6 +121,7 @@ class LRCLib:
lyrics=returned_lyrics if plain else lrc_obj,
confidence=confidence,
time=time_diff)
await self.redis_cache.increment_found_count(self.label)
await self.cache.store(matched)
return matched
except:

View File

@@ -78,7 +78,42 @@ class RedisCache:
if fuzzy:
artist = " ".join([f"(%{artist_word}%)" for artist_word in artist.split(" ")])
song = " ".join([f"(%{song_word}%)" for song_word in song.split(" ")])
return (artist, song)
return (artist, song)
async def increment_found_count(self, src: str) -> None:
"""
Increment the found count for a source
Args:
src (str): The source to increment
Returns:
None
"""
try:
src = src.strip().lower()
await self.redis_client.incr(f"returned:{src}")
except Exception as e:
await self.notifier.send(f"ERROR @ {__file__.rsplit("/", maxsplit=1)[-1]}", f"{str(e)}")
traceback.print_exc()
async def get_found_counts(self) -> dict:
"""
Get found counts for all sources
Args:
None
Returns:
dict: In the form {'source': count, 'source2': count, ...}
"""
try:
sources: list = ["cache", "lrclib", "genius"]
counts: dict = {}
for src in sources:
src_found_count = await self.redis_client.get(f"returned:{src}")
counts[src] = src_found_count
logging.info("Returning: %s", counts)
return counts
except Exception as e:
await self.notifier.send(f"ERROR @ {__file__.rsplit("/", maxsplit=1)[-1]}", f"{str(e)}")
traceback.print_exc()
async def search(self, **kwargs) -> list[tuple]: