summaryrefslogtreecommitdiff
path: root/debian/patches/84_dyear_dgenre.patch
blob: a4bf1d1e571eeafeb7243a02f0dd7e8753e7a184 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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: