Add tagging function for mp3 files
This commit is contained in:
35
scraper.py
35
scraper.py
@@ -2,6 +2,10 @@
|
||||
# ex: set filetype=python
|
||||
|
||||
import argparse
|
||||
from mutagen.mp3 import MP3
|
||||
from mutagen.easyid3 import EasyID3
|
||||
import mutagen.id3
|
||||
from mutagen.id3 import ID3, TIT2, TIT3, TALB, TRCK, TYER
|
||||
import os
|
||||
from shutil importy copyfile
|
||||
import xml.etree.cElementTree as xml
|
||||
@@ -17,6 +21,7 @@ class Track():
|
||||
for k, v in zip(it, it):
|
||||
setattr(self, k.text.replace(' ', ''), v.text)
|
||||
|
||||
|
||||
def parseXml(xml_file):
|
||||
"""
|
||||
Parses an xml file and returns the DOM tree.
|
||||
@@ -28,7 +33,7 @@ def parseXml(xml_file):
|
||||
tracks.append(Track(t))
|
||||
return tracks
|
||||
|
||||
def copy_file(track, targetFolder):
|
||||
def copy_file(track: Track, targetFolder) -> str:
|
||||
"""
|
||||
Copies a track from its source to the destination folder
|
||||
"""
|
||||
@@ -41,6 +46,33 @@ def copy_file(track, targetFolder):
|
||||
print('File {0} not found.')
|
||||
return dst
|
||||
|
||||
def tag_file(track: Track, file_name: str):
|
||||
"""
|
||||
Adds ID3 tags to a file.
|
||||
"""
|
||||
if not file_name.endswith('.mp3'):
|
||||
print('Skipping file {0}. It\'s not an mp3 file.'.format(file_name))
|
||||
return
|
||||
|
||||
print('Tagging file {0}'.format(file_name))
|
||||
mp3file = MP3(file_name, ID3=EasyID3)
|
||||
if hasattr(track,'Album'): mp3file['album'] = track.Album
|
||||
if hasattr(track,'BPM'): mp3file['bpm'] = track.BPM
|
||||
if hasattr(track,'Compilation'): mp3file['compilation'] = 'true'
|
||||
if hasattr(track,'Composer'): mp3file['composer'] = track.Composer
|
||||
if hasattr(track,'TotalTime'): mp3file['length'] = track.TotalTime
|
||||
if hasattr(track,'Name'): mp3file['title'] = track.Name
|
||||
if hasattr(track,'Artist'): mp3file['artist'] = track.Artist
|
||||
if hasattr(track,'AlbumArtist'): mp3file['albumartist'] = track.AlbumArtist
|
||||
if hasattr(track,'DiscNumber'): mp3file['discnumber'] = track.DiscNumber
|
||||
if hasattr(track,'TrackNumber'):
|
||||
if hasattr(track,'TrackCount'):
|
||||
mp3file['tracknumber'] = '{0}/{1}'.format(track.TrackNumber, track.TrackCount)
|
||||
else:
|
||||
mp3file['tracknumber'] = track.TrackNumber
|
||||
if hasattr(track,'Genre'): mp3file['genre'] = track.Genre
|
||||
mp3file.save()
|
||||
|
||||
|
||||
def main():
|
||||
"""
|
||||
@@ -63,6 +95,7 @@ def main():
|
||||
|
||||
for t in tracks:
|
||||
new_file = copy_file(t, args.target)
|
||||
tag_file(t, new_file)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user