rclaudio: process additional tags
This commit is contained in:
parent
e9cfcc8377
commit
d6a1f2a7f4
@ -5,6 +5,8 @@
|
|||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
import rclexecm
|
import rclexecm
|
||||||
|
import time
|
||||||
|
import datetime
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import mutagen
|
import mutagen
|
||||||
@ -19,8 +21,43 @@ except:
|
|||||||
# TPA,TPOS,disc DISCNUMBER/TOTALDISCS
|
# TPA,TPOS,disc DISCNUMBER/TOTALDISCS
|
||||||
# TRCK,TRK,trkn TRACKNUMBER/TOTALTRACKS
|
# TRCK,TRK,trkn TRACKNUMBER/TOTALTRACKS
|
||||||
tagdict = {
|
tagdict = {
|
||||||
|
'ALBUM ARTIST': 'ALBUMARTIST',
|
||||||
|
'ALBUM' : 'ALBUM',
|
||||||
|
'ALBUMARTIST' : 'ALBUMARTIST',
|
||||||
|
'ALBUMARTISTSORT' : 'ALBUMARTISTSORT',
|
||||||
|
'ALBUMSORT' : 'ALBUMSORT',
|
||||||
|
'ARTIST' : 'ARTIST',
|
||||||
|
'ARTISTSORT' : 'ARTISTSORT',
|
||||||
|
'BPM' : 'BPM',
|
||||||
'COM' : 'COMMENT',
|
'COM' : 'COMMENT',
|
||||||
'COMM' : 'COMMENT',
|
'COMM' : 'COMMENT',
|
||||||
|
'COMMENT' : 'COMMENT',
|
||||||
|
'COMPILATION' : 'COMPILATION',
|
||||||
|
'COMPOSER' : 'COMPOSER',
|
||||||
|
'COMPOSERSORT' : 'COMPOSERSORT',
|
||||||
|
'CONDUCTOR' : 'CONDUCTOR',
|
||||||
|
'CONTENTGROUP' : 'CONTENTGROUP',
|
||||||
|
'COPYRIGHT' : 'COPYRIGHT',
|
||||||
|
'DATE' : 'DATE',
|
||||||
|
'DISCNUMBER' : 'DISCNUMBER',
|
||||||
|
'DISCSUBTITLE' : 'DISCSUBTITLE',
|
||||||
|
'DISCTOTAL' : 'TOTALDISCS',
|
||||||
|
'ENCODEDBY' : 'ENCODEDBY',
|
||||||
|
'ENSEMBLE' : 'ORCHESTRA',
|
||||||
|
'GENRE' : 'GENRE',
|
||||||
|
'ISRC' : 'ISRC',
|
||||||
|
'LABEL' : 'LABEL',
|
||||||
|
'LANGUAGE' : 'LANGUAGE',
|
||||||
|
'LYRICIST' : 'LYRICIST',
|
||||||
|
'LYRICS' : 'LYRICS',
|
||||||
|
'MOOD' : 'MOOD',
|
||||||
|
'ORCHESTRA' : 'ORCHESTRA',
|
||||||
|
'PERFORMER' : 'PERFORMER',
|
||||||
|
'ORIGINALARTIST' : 'ORIGINALARTIST',
|
||||||
|
'ORIGINALDATE' : 'ORIGINALDATE',
|
||||||
|
'RELEASEDATE' : 'RELEASEDATE',
|
||||||
|
'REMIXER' : 'REMIXER',
|
||||||
|
'SUBTITLE' : 'SUBTITLE',
|
||||||
'TAL' : 'ALBUM',
|
'TAL' : 'ALBUM',
|
||||||
'TALB' : 'ALBUM',
|
'TALB' : 'ALBUM',
|
||||||
'TBP' : 'BPM',
|
'TBP' : 'BPM',
|
||||||
@ -44,6 +81,8 @@ tagdict = {
|
|||||||
'TIT1' : 'CONTENTGROUP',
|
'TIT1' : 'CONTENTGROUP',
|
||||||
'TIT2' : 'TITLE',
|
'TIT2' : 'TITLE',
|
||||||
'TIT3' : 'SUBTITLE',
|
'TIT3' : 'SUBTITLE',
|
||||||
|
'TITLE' : 'TITLE',
|
||||||
|
'TITLESORT' : 'TITLESORT',
|
||||||
'TLA' : 'LANGUAGE',
|
'TLA' : 'LANGUAGE',
|
||||||
'TLAN' : 'LANGUAGE',
|
'TLAN' : 'LANGUAGE',
|
||||||
'TMOO' : 'MOOD',
|
'TMOO' : 'MOOD',
|
||||||
@ -51,6 +90,8 @@ tagdict = {
|
|||||||
'TOPE' : 'ORIGINALARTIST',
|
'TOPE' : 'ORIGINALARTIST',
|
||||||
'TOR' : 'ORIGINALDATE',
|
'TOR' : 'ORIGINALDATE',
|
||||||
'TORY' : 'ORIGINALDATE',
|
'TORY' : 'ORIGINALDATE',
|
||||||
|
'TOTALDISCS' : 'TOTALDISCS',
|
||||||
|
'TOTALTRACKS' : 'TOTALTRACKS',
|
||||||
'TP1' : 'ARTIST',
|
'TP1' : 'ARTIST',
|
||||||
'TP2' : 'ALBUMARTIST',
|
'TP2' : 'ALBUMARTIST',
|
||||||
'TP3' : 'CONDUCTOR',
|
'TP3' : 'CONDUCTOR',
|
||||||
@ -63,9 +104,10 @@ tagdict = {
|
|||||||
'TPE4' : 'REMIXER',
|
'TPE4' : 'REMIXER',
|
||||||
'TPOS' : 'DISCNUMBER',
|
'TPOS' : 'DISCNUMBER',
|
||||||
'TPUB' : 'LABEL',
|
'TPUB' : 'LABEL',
|
||||||
'TXXX:ORCHESTRA' : 'ORCHESTRA',
|
'TRACK' : 'TRACKNUMBER',
|
||||||
'ORCHESTRA' : 'ORCHESTRA',
|
'TRACKNUM' : 'TRACKNUMBER',
|
||||||
'ENSEMBLE' : 'ORCHESTRA',
|
'TRACKNUMBER' : 'TRACKNUMBER',
|
||||||
|
'TRACKTOTAL' : 'TOTALTRACKS',
|
||||||
'TRC' : 'ISRC',
|
'TRC' : 'ISRC',
|
||||||
'TRCK' : 'TRACKNUMBER',
|
'TRCK' : 'TRACKNUMBER',
|
||||||
'TRK' : 'TRACKNUMBER',
|
'TRK' : 'TRACKNUMBER',
|
||||||
@ -85,11 +127,12 @@ tagdict = {
|
|||||||
'TT2' : 'TITLE',
|
'TT2' : 'TITLE',
|
||||||
'TT3' : 'SUBTITLE',
|
'TT3' : 'SUBTITLE',
|
||||||
'TXT' : 'LYRICIST',
|
'TXT' : 'LYRICIST',
|
||||||
|
'TXXX:ORCHESTRA' : 'ORCHESTRA',
|
||||||
'TYE' : 'DATE',
|
'TYE' : 'DATE',
|
||||||
'TYER' : 'DATE',
|
'TYER' : 'DATE',
|
||||||
'YEAR' : 'DATE',
|
|
||||||
'ULT' : 'LYRICS',
|
'ULT' : 'LYRICS',
|
||||||
'USLT' : 'LYRICS',
|
'USLT' : 'LYRICS',
|
||||||
|
'YEAR' : 'DATE',
|
||||||
'aART' : 'ALBUMARTIST',
|
'aART' : 'ALBUMARTIST',
|
||||||
'cpil' : 'COMPILATION',
|
'cpil' : 'COMPILATION',
|
||||||
'cprt' : 'COPYRIGHT',
|
'cprt' : 'COPYRIGHT',
|
||||||
@ -114,46 +157,6 @@ tagdict = {
|
|||||||
'\xa9ope' : 'ORIGINALARTIST',
|
'\xa9ope' : 'ORIGINALARTIST',
|
||||||
'\xa9too' : 'ENCODEDBY',
|
'\xa9too' : 'ENCODEDBY',
|
||||||
'\xa9wrt' : 'COMPOSER',
|
'\xa9wrt' : 'COMPOSER',
|
||||||
'ALBUM' : 'ALBUM',
|
|
||||||
'ALBUM ARTIST': 'ALBUMARTIST',
|
|
||||||
'ALBUMARTIST' : 'ALBUMARTIST',
|
|
||||||
'ALBUMARTISTSORT' : 'ALBUMARTISTSORT',
|
|
||||||
'ALBUMSORT' : 'ALBUMSORT',
|
|
||||||
'ARTIST' : 'ARTIST',
|
|
||||||
'ARTISTSORT' : 'ARTISTSORT',
|
|
||||||
'BPM' : 'BPM',
|
|
||||||
'COMMENT' : 'COMMENT',
|
|
||||||
'COMPILATION' : 'COMPILATION',
|
|
||||||
'COMPOSER' : 'COMPOSER',
|
|
||||||
'COMPOSERSORT' : 'COMPOSERSORT',
|
|
||||||
'CONDUCTOR' : 'CONDUCTOR',
|
|
||||||
'CONTENTGROUP' : 'CONTENTGROUP',
|
|
||||||
'COPYRIGHT' : 'COPYRIGHT',
|
|
||||||
'DATE' : 'DATE',
|
|
||||||
'DISCNUMBER' : 'DISCNUMBER',
|
|
||||||
'DISCSUBTITLE' : 'DISCSUBTITLE',
|
|
||||||
'ENCODEDBY' : 'ENCODEDBY',
|
|
||||||
'GENRE' : 'GENRE',
|
|
||||||
'ISRC' : 'ISRC',
|
|
||||||
'LABEL' : 'LABEL',
|
|
||||||
'LANGUAGE' : 'LANGUAGE',
|
|
||||||
'LYRICIST' : 'LYRICIST',
|
|
||||||
'LYRICS' : 'LYRICS',
|
|
||||||
'MOOD' : 'MOOD',
|
|
||||||
'ORIGINALARTIST' : 'ORIGINALARTIST',
|
|
||||||
'ORIGINALDATE' : 'ORIGINALDATE',
|
|
||||||
'RELEASEDATE' : 'RELEASEDATE',
|
|
||||||
'REMIXER' : 'REMIXER',
|
|
||||||
'SUBTITLE' : 'SUBTITLE',
|
|
||||||
'DISCTOTAL' : 'TOTALDISCS',
|
|
||||||
'TOTALDISCS' : 'TOTALDISCS',
|
|
||||||
'TOTALTRACKS' : 'TOTALTRACKS',
|
|
||||||
'TRACKTOTAL' : 'TOTALTRACKS',
|
|
||||||
'TRACKNUMBER' : 'TRACKNUMBER',
|
|
||||||
'TRACKNUM' : 'TRACKNUMBER',
|
|
||||||
'TRACK' : 'TRACKNUMBER',
|
|
||||||
'TITLE' : 'TITLE',
|
|
||||||
'TITLESORT' : 'TITLESORT',
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# mp3: album, title, artist, genre, date, tracknumber
|
# mp3: album, title, artist, genre, date, tracknumber
|
||||||
@ -193,7 +196,29 @@ class AudioTagExtractor:
|
|||||||
else:
|
else:
|
||||||
return 'png'
|
return 'png'
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
|
# Date formats found in actual files (any date field): [1961] [1967-01-01]
|
||||||
|
# [1996-11-04T08:00:00Z] [] [0000] [1994-08-08 07:00]
|
||||||
|
# We don't try to process the time part.
|
||||||
|
# The method translates the date into a Unix timestamp
|
||||||
|
# which means possible trouble for pre-1970 recordings (negative time).
|
||||||
|
# Oldest possible date with 32 bits time stamp is 1901, which is ok though.
|
||||||
|
#
|
||||||
|
# This is not used as we don't try to set dmtime (which would not
|
||||||
|
# be used by the current indexer anyway). We instead set a 'date'
|
||||||
|
# metadata entry.
|
||||||
|
def parsedate(self, dt):
|
||||||
|
if len(dt) > 10:
|
||||||
|
dt = dt[0:10]
|
||||||
|
l = dt.split('-')
|
||||||
|
if len(l) > 3 or len(l) == 2 or len(l[0]) != 4 or l[0] == '0000':
|
||||||
|
return ''
|
||||||
|
if len(l) == 1:
|
||||||
|
pdt = datetime.datetime.strptime(dt, "%Y")
|
||||||
|
elif len(l) == 3:
|
||||||
|
pdt = datetime.datetime.strptime(dt, "%Y-%m-%d")
|
||||||
|
val = time.mktime(pdt.timetuple())
|
||||||
|
return "%d" % val
|
||||||
|
|
||||||
def extractone(self, params):
|
def extractone(self, params):
|
||||||
#self.em.rclog("extractone %s %s" % (params["filename:"],
|
#self.em.rclog("extractone %s %s" % (params["filename:"],
|
||||||
@ -262,10 +287,11 @@ class AudioTagExtractor:
|
|||||||
if isinstance(val, bool):
|
if isinstance(val, bool):
|
||||||
val0 = str(val)
|
val0 = str(val)
|
||||||
else:
|
else:
|
||||||
val0 = val[0]
|
try:
|
||||||
|
val0 = str(val[0])
|
||||||
|
except:
|
||||||
|
val0 = str(val)
|
||||||
if val0:
|
if val0:
|
||||||
if isinstance(val0, ID3TimeStamp):
|
|
||||||
val0 = str(val0)
|
|
||||||
minf[ntag] = val0
|
minf[ntag] = val0
|
||||||
#self.em.rclog("Tag %s -> %s" % (ntag, val0))
|
#self.em.rclog("Tag %s -> %s" % (ntag, val0))
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user