rg support

This commit is contained in:
2025-07-29 22:07:54 +02:00
parent 8bbc57ffb2
commit 3e3622b5be
4 changed files with 121 additions and 71 deletions

View File

@@ -1,57 +1,43 @@
BEGIN {
OFS="\t"
year[0] = 0; del year[0]
title[0] = 0; del title[0]
type[0] = 0; del type[0]
id[0] = 0; del id[0]
score[0] = 0; del score[0]
}
function get_score(rgdt, rgti, dt, ti, qy, res) {
res = 0
if (rgdt == dt)
res = res + 5
if (rgti == ti)
res = res + 5
if (qy == "normal" || qy == "unknown")
res = res + 1
if (qy == "high")
res = res + 2
return res
}
BEGIN { OFS="\t" }
{
gsub("&", "\\\\&")
rgmi = $1 # Release Group ID
rgty = $2 # Release Group Type
rgdt = substr($3, 1, 4) + 0 # Release Group Year
rgti = $4 # Release Group Title
mi = $5 # MusicBrainz Release ID
qy = $6 # Release Quality
dt = substr($7, 1, 4) + 0 # Release Year
ti = $8 # Release Title
s = get_score(rgdt, rgti, dt, ti, qy)
if (score[rgmi] < s) {
score[rgmi] = s
year[rgmi] = dt
title[rgmi] = ti
type[rgmi] = rgty
id[rgmi] = mi
id = $1
status = $2
year = substr($3, 1, 4) + 0
year = year == 0 ? "" : year
covercount = $4
label = $5
trackcnt = $6
media = $7
country = $8
title = $9
artist = $10
switch (status) {
case "Official": line_status=release_official; break
case "Promotion": line_status=release_promotion; break
case "Bootleg": line_status=release_bootleg; break
case "Pseudo-release": line_status=release_pseudo; break
case "Withdrawn": line_status=release_withdrawn; break
case "Expunged": line_status=release_expunged; break
case "Cancelled": line_status=release_cancelled; break
default: line_status=""
}
}
line = release_format
if (artist != rg_artist && title != rg_title)
line = line "\t" release_format_title_artist
else if (artist != rg_artist && title == rg_title)
line = line "\t" release_format_artist
else if (artist != rg_artist && title == rg_title)
line = line "\t" release_format_title
END {
for (rgmi in id) {
if (type[rgmi] == "Single")
line = format_single
else if (type[rgmi] == "Album")
line = format_album
else if (type[rgmi] == "EP")
line = format_ep
else
line = format_album
sub("<<year>>", dt, line)
sub("<<title>>", ti, line)
print mi, line
}
sub("<<status>>", line_status, line)
sub("<<year>>", year, line)
sub("<<tracks>>", trackcnt, line)
sub("<<media>>", media, line)
sub("<<label>>", label, line)
sub("<<title>>", title, line)
sub("<<artist>>", artist, line)
sortk = year ? year : 0
print sortk, line, id
}