Merge with bugfix-0.5
/mp3togo/tags.py
blob:e4243bc6bb657f767e08abb5cde0dbe755b2644c -> blob:41c38e52135dd61eb50fff6d27d716768b0df691
--- mp3togo/tags.py
+++ mp3togo/tags.py
@@ -95,18 +95,27 @@ class Tags(UserDict.DictMixin):
return o
if self._type == 'mp3' and HAVE_ID3:
+ rok = False
if HAVE_eyeD3:
eye = eyeD3.Tag()
- eye.link(self._file)
- self._tags['ARTIST'] = [eye.getArtist() or '']
- self._tags['ALBUM'] = [eye.getAlbum() or '']
- self._tags['TITLE'] = [eye.getTitle() or '']
try:
- self._tags['GENRE'] = [getattr(eye.getGenre(), 'name', 'Other')]
- except eyeD3.tag.GenreException:
- self._tags['GENRE'] = 'Other'
- del eye
- elif HAVE_ID3:
+ eye.link(self._file)
+ self._tags['ARTIST'] = [eye.getArtist() or '']
+ self._tags['ALBUM'] = [eye.getAlbum() or '']
+ self._tags['TITLE'] = [eye.getTitle() or '']
+ if eye.getYear() and eye.getYear() > 1600 and eye.getYear() < 3000:
+ self._tags['DATE'] = [eye.getYear()]
+ if eye.getTrackNum():
+ self._tags['TRACKNUMBER'] = [str(eye.getTrackNum()[0])]
+ try:
+ self._tags['GENRE'] = [getattr(eye.getGenre(), 'name', 'Other')]
+ except eyeD3.tag.GenreException:
+ self._tags['GENRE'] = 'Other'
+ del eye
+ rok = True
+ except eyeD3.tag.TagException:
+ pass
+ if HAVE_ID3 and not rok:
info = ID3.ID3(self._file, as_tuple=1).as_dict()
self._tags = copytags(info)
del info
@@ -158,7 +167,10 @@ class Tags(UserDict.DictMixin):
elif self._tags[key][0] in map(str, range(256)):
d[key] = int(self._tags[key][0])
else:
- d[key] = int(genres.get(self._tags[key][0], '255'))
+ try:
+ d[key] = int(genres.get(self._tags[key][0], '255'))
+ except:
+ d[key] = 12
else:
d[key] = self._tags[key][0]
# No! don't unlock here dumbass! return from puttags
@@ -192,6 +204,16 @@ class Tags(UserDict.DictMixin):
out.setTitle(d['TITLE'])
g = eyeD3.Genre()
g.setId(d.get('GENRE', 12))
+ try:
+ if d.has_key('DATE') and int(d['DATE']) > 1600 and int(d['DATE']) < 3000:
+ out.setDate(d['DATE'])
+ except:
+ pass
+ if d.has_key('TRACKNUMBER') and d['TRACKNUMBER']:
+ try:
+ out.setTrackNum((int(d['TRACKNUMBER']), None))
+ except:
+ pass
out.setGenre(g)
if d.has_key('COMMENT'):
out.addComment(d['COMMENT'])