created add_genres to allow batch add of artist/genre pairs, alongside add_genre for singletons
This commit is contained in:
parent
6bc982f668
commit
40fa51af36
@ -185,7 +185,12 @@ class RadioUtil:
|
|||||||
params: tuple[str, str] = (artist, genre)
|
params: tuple[str, str] = (artist, genre)
|
||||||
res = await _db.execute_insert(query, params)
|
res = await _db.execute_insert(query, params)
|
||||||
if res:
|
if res:
|
||||||
|
logging.debug("Query executed successfully for %s/%s, committing",
|
||||||
|
artist, genre)
|
||||||
|
await _db.commit()
|
||||||
return True
|
return True
|
||||||
|
logging.debug("Failed to store artist/genre pair: %s/%s (res: %s)",
|
||||||
|
artist, genre, res)
|
||||||
return False
|
return False
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.info("Failed to store artist/genre pair: %s/%s (%s)",
|
logging.info("Failed to store artist/genre pair: %s/%s (%s)",
|
||||||
@ -193,6 +198,47 @@ class RadioUtil:
|
|||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
async def add_genres(self, pairs: list[dict[str, str]]) -> bool:
|
||||||
|
"""
|
||||||
|
(BATCH) Add artist/genre pairings to DB
|
||||||
|
Expects list of dicts comprised of artist name (key), genre (value)
|
||||||
|
Args:
|
||||||
|
pairs (list[dict[str, str]]): Pairs of artist/genres to add, list of dicts
|
||||||
|
Returns:
|
||||||
|
bool
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
added_rows: int = 0
|
||||||
|
async with sqlite3.connect(self.artist_genre_db_path, timeout=2) as _db:
|
||||||
|
for pair in pairs:
|
||||||
|
try:
|
||||||
|
artist, genre = pair
|
||||||
|
query: str = "INSERT OR IGNORE INTO artist_genre (artist, genre) VALUES(?, ?)"
|
||||||
|
params: tuple[str, str] = (artist, genre)
|
||||||
|
res = await _db.execute_insert(query, params)
|
||||||
|
if res:
|
||||||
|
logging.debug("add_genres: Query executed successfully for %s/%s",
|
||||||
|
artist, genre)
|
||||||
|
added_rows += 1
|
||||||
|
else:
|
||||||
|
logging.debug("Failed to store artist/genre pair: %s/%s (res: %s)",
|
||||||
|
artist, genre, res)
|
||||||
|
except Exception as e:
|
||||||
|
logging.info("Failed to store artist/genre pair: %s/%s (%s)",
|
||||||
|
artist, genre, str(e))
|
||||||
|
continue
|
||||||
|
if added_rows:
|
||||||
|
logging.info("add_genres: Committing %s rows", added_rows)
|
||||||
|
await _db.commit()
|
||||||
|
return True
|
||||||
|
logging.info("add_genres: Failed (No rows added)")
|
||||||
|
return False
|
||||||
|
except Exception as e:
|
||||||
|
logging.info("Failed to store artist/genre pairs: %s",
|
||||||
|
str(e))
|
||||||
|
traceback.print_exc()
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
async def get_genre(self, artist: str) -> str:
|
async def get_genre(self, artist: str) -> str:
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user