diff options
Diffstat (limited to 'debian/patches/84_dyear_dgenre.patch')
-rw-r--r-- | debian/patches/84_dyear_dgenre.patch | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/debian/patches/84_dyear_dgenre.patch b/debian/patches/84_dyear_dgenre.patch new file mode 100644 index 0000000..a4bf1d1 --- /dev/null +++ b/debian/patches/84_dyear_dgenre.patch @@ -0,0 +1,107 @@ +Add support for DYEAR and DGENRE as defined in CDDB protocol level 5. +Debian #277932. + +diff -urN a/jack_freedb.py jack-3.1.1+cvs20050801/jack_freedb.py +--- a/jack_freedb.py 2006-02-05 15:54:03.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_freedb.py 2006-02-05 15:54:32.000000000 +0000 +@@ -179,6 +179,23 @@ + f.write(freedb_split("DTITLE", names[0][0] + " / " + names[0][1])) + else: + f.write("DTITLE=\n") ++ freedb_year, freedb_id3genre = -1, -1 ++ if cf['_id3_genre'] >= 0 and cf['_id3_genre'] < len(id3genres) or cf['_id3_genre'] == 255: ++ freedb_id3genre = cf['_id3_genre'] ++ elif names and len(names[0]) == 4: ++ freedb_id3genre = names[0][3] ++ if cf['_id3_year'] >= 0: ++ freedb_year = cf['_id3_year'] ++ elif names and len(names[0]) == 4: ++ freedb_year = names[0][2] ++ if freedb_year >= 0: ++ f.write("DYEAR=%d\n" % freedb_year) ++ else: ++ f.write("DYEAR=\n") ++ if freedb_id3genre >= 0: ++ f.write("DGENRE=%s\n" % id3genres[freedb_id3genre]) ++ else: ++ f.write("DGENRE=\n") + for i in tracks: + if names: + if names[i[NUM]][0]: # various +@@ -193,15 +210,6 @@ + f.write(freedb_split("TTITLE" + `i[NUM]-1`, names[i[NUM]][1])) + else: + f.write("TTITLE" + `i[NUM]-1` + "=\n") +- freedb_year, freedb_id3genre = -1, -1 +- if cf['_id3_genre'] >= 0 and cf['_id3_genre'] < len(id3genres) or cf['_id3_genre'] == 255: +- freedb_id3genre = cf['_id3_genre'] +- elif names and len(names[0]) == 4: +- freedb_id3genre = names[0][3] +- if cf['_id3_year'] >= 0: +- freedb_year = cf['_id3_year'] +- elif names and len(names[0]) == 4: +- freedb_year = names[0][2] + if freedb_year >= 0 or freedb_id3genre >= 0: + f.write("EXTD=\\nYEAR: %4s ID3G: %3s\n" % (freedb_year, freedb_id3genre)) + else: +@@ -338,7 +346,7 @@ + line = string.replace(line, "\r", "") # I consider "\r"s as bugs in db info + if jack_functions.starts_with(line, "# Revision:"): + revision = int(line[11:]) +- for i in ["DISCID", "DTITLE", "TTITLE", "EXTD", "EXTT", "PLAYORDER"]: ++ for i in ["DISCID", "DTITLE", "DYEAR", "DGENRE", "TTITLE", "EXTD", "EXTT", "PLAYORDER"]: + if jack_functions.starts_with(line, i): + buf = line + if string.find(buf, "=") != -1: +@@ -418,7 +426,29 @@ + dtitle = "(unknown artist)/" + dtitle + + names = [string.split(dtitle,"/",1)] +- if freedb.has_key('EXTD'): ++ year = -1 ++ if freedb.has_key('DYEAR'): ++ try: ++ year = int(freedb['DYEAR']) ++ except ValueError: ++ warning("DYEAR has to be an integer but it's the string '%s'" % freedb['DYEAR']) ++ else: ++ if year == 0: ++ warning("DYEAR should not be 0 but empty") ++ genre = -1 ++ if freedb.has_key('DGENRE'): ++ try: ++ genre = int(freedb['DGENRE']) ++ except ValueError: ++ if freedb['DGENRE'].upper() in [x.upper() for x in id3genres]: ++ genre = [x.upper() for x in id3genres].index(freedb['DGENRE'].upper()) ++ else: ++ warning("DGENRE should be a string, not an integer.") ++ if genre != -1: ++ names[0].extend([year, genre]) ++ elif year != -1: ++ names[0].extend([year]) ++ if freedb.has_key('EXTD') and not(freedb.has_key('DYEAR') or freedb.has_key('DGENRE')): + extra_tag_pos = string.find(freedb['EXTD'], "\\nYEAR:") + if extra_tag_pos >= 0: + try: +diff -urN a/jack_tag.py jack-3.1.1+cvs20050801/jack_tag.py +--- a/jack_tag.py 2006-02-05 15:54:03.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_tag.py 2006-02-05 15:54:25.000000000 +0000 +@@ -65,12 +65,11 @@ + + if cf['_set_id3tag'] or freedb_rename: + jack_m3u.init() +- if len(track_names[0]) == 4: +- # use freedb year and genre data if available +- if cf['_id3_genre'] == -1: +- cf['_id3_genre'] = track_names[0][3] +- if cf['_id3_year'] == -1: +- cf['_id3_year'] = track_names[0][2] ++ # use freedb year and genre data if available ++ if cf['_id3_year'] == -1 and len(track_names[0]) >= 3: ++ cf['_id3_year'] = track_names[0][2] ++ if cf['_id3_genre'] == -1 and len(track_names[0]) == 4: ++ cf['_id3_genre'] = track_names[0][3] + + print "Tagging", + for i in jack_ripstuff.all_tracks_todo_sorted: |