rclaudio: properly parse mp4 trkn = (x,y)

This commit is contained in:
Jean-Francois Dockes 2017-12-03 17:57:37 +01:00
parent 2443533703
commit bbb30d3351

View File

@ -7,6 +7,7 @@ import os
import rclexecm import rclexecm
import time import time
import datetime import datetime
import re
try: try:
import mutagen import mutagen
@ -17,6 +18,8 @@ except:
sys.exit(1); sys.exit(1);
re_pairnum = re.compile(r'\(([0-9]+),\s*([0-9]+)\)')
# The 'Easy' mutagen tags conversions are incomplete. We do it ourselves. # The 'Easy' mutagen tags conversions are incomplete. We do it ourselves.
# TPA,TPOS,disc DISCNUMBER/TOTALDISCS # TPA,TPOS,disc DISCNUMBER/TOTALDISCS
# TRCK,TRK,trkn TRACKNUMBER/TOTALTRACKS # TRCK,TRK,trkn TRACKNUMBER/TOTALTRACKS
@ -134,10 +137,12 @@ tagdict = {
'USLT' : 'LYRICS', 'USLT' : 'LYRICS',
'YEAR' : 'DATE', 'YEAR' : 'DATE',
'aART' : 'ALBUMARTIST', 'aART' : 'ALBUMARTIST',
'cond' : 'CONDUCTOR',
'cpil' : 'COMPILATION', 'cpil' : 'COMPILATION',
'cprt' : 'COPYRIGHT', 'cprt' : 'COPYRIGHT',
'disk' : 'DISCNUMBER', 'disk' : 'DISCNUMBER',
'gnre' : 'GENRE', 'gnre' : 'GENRE',
'labl' : 'LABEL',
'soaa' : 'ALBUMARTISTSORT', 'soaa' : 'ALBUMARTISTSORT',
'soal' : 'ALBUMSORT', 'soal' : 'ALBUMSORT',
'soar' : 'ARTISTSORT', 'soar' : 'ARTISTSORT',
@ -297,8 +302,8 @@ class AudioTagExtractor:
except Exception as err: except Exception as err:
self.em.rclog("Error while extracting tag: %s"%err) self.em.rclog("Error while extracting tag: %s"%err)
else: else:
pass
#self.em.rclog("Unprocessed tag: %s, value %s"%(tag,val)) #self.em.rclog("Unprocessed tag: %s, value %s"%(tag,val))
pass
# TPA,TPOS,disc DISCNUMBER/TOTALDISCS # TPA,TPOS,disc DISCNUMBER/TOTALDISCS
# TRCK,TRK,trkn TRACKNUMBER/TOTALTRACKS # TRCK,TRK,trkn TRACKNUMBER/TOTALTRACKS
@ -307,10 +312,18 @@ class AudioTagExtractor:
if k in minf: if k in minf:
l = minf[k] l = minf[k]
if not isinstance(l, tuple): if not isinstance(l, tuple):
l = l.split('/') mo = re_pairnum.match(l)
if mo:
l = (mo.group(1), mo.group(2))
else:
l = l.split('/')
else:
self.em.rclog("l is tuple: %s" %l)
if len(l) == 2: if len(l) == 2:
minf[k] = str(l[0]) minf[k] = str(l[0])
minf['total' + what + 's'] = str(l[1]) #self.em.rclog("minf[%s] = %s" % (k, minf[k]))
if l[1] != 0:
minf['total' + what + 's'] = str(l[1])
if 'orchestra' in minf: if 'orchestra' in minf:
val = minf['orchestra'] val = minf['orchestra']