Control: tags -1 patch
I attach the patch making jack compatible with
current eyed3 version.
The patch can be applied at the end of the
current debian patchset.
This patch is distribuited under the same
terms as jack (GPL-2+).
Regards,
Gaetano
diff --git a/jack_globals.py b/jack_globals.py
index 35fe371..1fbb8db 100644
--- a/jack_globals.py
+++ b/jack_globals.py
@@ -17,11 +17,11 @@
### along with this program; if not, write to the Free Software
### Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-from jack_constants import *
from jack_config import cf
-from jack_init import eyeD3
+from jack_constants import *
+from jack_generic import debug, error, expand, info, warning
+from jack_init import eyed3
-from jack_generic import info, warning, debug, error, expand
#import jack_generic
#error = jack_generic.error
@@ -43,5 +43,4 @@ def debug(x):
revision = 0 # initial revision of freedb data
is_submittable = 0 # well-formed freedb-file?
-id3genres = eyeD3.genres
-
+id3genres = eyed3.id3.ID3_GENRES
diff --git a/jack_init.py b/jack_init.py
index b968428..b317738 100644
--- a/jack_init.py
+++ b/jack_init.py
@@ -16,11 +16,12 @@
### along with this program; if not, write to the Free Software
### Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+import os
import string
import sys
-import os
-from jack_globals import *
+
from jack_generic import *
+from jack_globals import *
try:
from fcntl import F_SETFL
@@ -33,7 +34,7 @@ except:
from FCNTL import O_NONBLOCK
try:
- from eyeD3 import eyeD3
+ import eyed3.id3
except:
print "Please install the eyeD3 module available from http://eyed3.nicfit.net/"
sys.exit(1)
@@ -63,4 +64,3 @@ try:
import mutagen.flac as flac
except ImportError:
flac = None
-
diff --git a/jack_tag.py b/jack_tag.py
index 5a4cd38..0734444 100755
--- a/jack_tag.py
+++ b/jack_tag.py
@@ -30,7 +30,7 @@ import jack_misc
import jack_m3u
from jack_init import ogg
-from jack_init import eyeD3
+from jack_init import eyed3
from jack_init import flac
from jack_globals import *
@@ -41,6 +41,30 @@ genretxt = None
a_artist = None
a_title = None
+
+def _set_id3_tag(mp3file, version, encoding, a_title, t_name, track_num, t_artist,
+ genre, year, comment, play_count):
+ tag = eyed3.id3.Tag()
+ tag.parse(mp3file)
+ tag.album = a_title
+ tag.title = t_name
+ tag.track_num = track_num
+ tag.artist = t_artist
+
+ old_genre = tag.genre
+ if genre != -1:
+ tag.genre = genre
+ elif old_genre == None:
+ tag.genre = 255
+
+ if year != -1:
+ tag.release_date = year
+ if comment:
+ tag.comments.set(comment)
+ tag.play_count = play_count
+
+ tag.save(mp3file, version, encoding=encoding)
+
def tag(freedb_rename):
global a_artist, a_title
@@ -99,60 +123,21 @@ def tag(freedb_rename):
t_comm = ""
if jack_helpers.helpers[cf['_encoder']]['target'] == "mp3":
if cf['_write_id3v2']:
- mp3file = file(mp3name, "rw")
- tag = eyeD3.Tag()
- tag.link(mp3file)
- tag.header.setVersion(eyeD3.ID3_V2_4)
- tag.setTextEncoding(eyeD3.UTF_8_ENCODING)
- tag.setAlbum(a_title)
- tag.setTitle(t_name)
- tag.setTrackNum((i[NUM],len(jack_ripstuff.all_tracks_orig)))
- tag.setTitle(t_name)
- tag.setArtist(t_artist)
- if cf['_id3_genre'] != -1:
- tag.setGenre("(%d)" % (cf['_id3_genre']))
- if cf['_id3_year'] != -1:
- try:
- tag.setDate(cf['_id3_year'])
- except eyeD3.tag.TagException, e:
- print "Error tagging file: %s" % e
- tag.setPlayCount(int(i[LEN] * 1000.0 / 75 + 0.5))
- tag.update()
- mp3file.close()
+ _set_id3_tag(
+ mp3name, eyed3.id3.ID3_V2_4, 'utf-8', a_title,
+ t_name, (i[NUM],len(jack_ripstuff.all_tracks_orig)),
+ t_artist, cf['_id3_genre'], cf['_id3_year'], None,
+ int(i[LEN] * 1000.0 / 75 + 0.5)
+ )
if cf['_write_id3v1']:
- mp3file = file(mp3name, "rw")
- tag = eyeD3.Tag()
- tag.link(mp3file)
-
- tag.header.setVersion(eyeD3.ID3_V1_1)
- tag.setTextEncoding(eyeD3.LATIN1_ENCODING)
- old_genre = tag.getGenre()
-
- tag.setAlbum(a_title)
- if t_comm:
- tag.addComment(t_comm)
- tag.setTitle(t_name2)
- else:
- tag.setTitle(t_name)
- tag.setTrackNum((i[NUM],len(jack_ripstuff.all_tracks_orig)))
- tag.setTitle(t_name)
- tag.setArtist(t_artist)
- if cf['_id3_genre'] != -1:
- tag.setGenre("(%d)" % (cf['_id3_genre']))
- elif old_genre == None:
- tag.setGenre("(255)") # unknown
- if cf['_id3_year'] != -1:
- try:
- tag.setDate(cf['_id3_year'])
- except eyeD3.tag.TagException, e:
- print "Error tagging file: %s" % e
- try:
- tag.update()
- except UnicodeEncodeError:
- if not cf['_write_id3v2']:
- print
- print "Track %02d contains data not supported by id3v1; please use --write-id3v2" % i[NUM]
- mp3file.close()
+ # encoding ??
+ _set_id3_tag(
+ mp3name, eyed3.id3.ID3_V1_1, 'latin1',
+ a_title, t_name,
+ (i[NUM],len(jack_ripstuff.all_tracks_orig)),
+ t_artist, cf['_id3_genre'], cf['_id3_year'], t_comm,
+ int(i[LEN] * 1000.0 / 75 + 0.5)
+ )
elif jack_helpers.helpers[cf['_encoder']]['target'] == "flac":
if flac:
f = flac.FLAC(mp3name)
@@ -244,4 +229,3 @@ def tag(freedb_rename):
if jack_m3u.wavm3u:
os.environ["JACK_JUST_RIPPED"] = "\n".join(jack_m3u.wavm3u)
jack_m3u.write()
-