Files
iTunes/navidrome/analyzer.py

52 lines
1.5 KiB
Python

import sqlite3
import meilisearch
client = meilisearch.Client("http://127.0.0.1:7700", "aSampleMasterKey")
index = client.index("itunes-albums")
con = sqlite3.connect("navidrome.db")
cur = con.cursor()
instertor = con.cursor()
update_statement = """UPDATE album SET
persistent_id = ?,
itunes_date = ?,
meili_nb_res = ?,
meili_title = ?,
meili_artist = ?,
meili_doc = ?,
meili_song_count = ?,
validated = ?
WHERE id = ?"""
for row in cur.execute("SELECT * FROM album;"):
msearch = index.search(
row[1], {"filter": [f'Artist="{row[2]}"'], "showRankingScore": True}
)
meili_result_len = len(msearch["hits"])
if meili_result_len > 0:
meili_hit = msearch["hits"][0]
if meili_hit["_rankingScore"] > 0.5:
print(f"Update {row[1]}")
val_score = 0
if meili_result_len == 1:
val_score += 50
if meili_hit["Track Count"] == row[3]:
val_score += 40
if meili_hit["Name"] == row[1]:
val_score += 30
if row[2] in meili_hit["Artist"]:
val_score += 10
data = (
meili_hit["Persistent ID"],
meili_hit["Date Added"],
meili_result_len,
meili_hit["Name"],
str(meili_hit["Artist"]),
str(meili_hit),
meili_hit["Track Count"],
val_score,
row[0],
)
instertor.execute(update_statement, data)
con.commit()