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
|
# ex: set filetype=python
|
||||||
|
|
||||||
import argparse
|
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
|
import os
|
||||||
from shutil importy copyfile
|
from shutil importy copyfile
|
||||||
import xml.etree.cElementTree as xml
|
import xml.etree.cElementTree as xml
|
||||||
@@ -17,6 +21,7 @@ class Track():
|
|||||||
for k, v in zip(it, it):
|
for k, v in zip(it, it):
|
||||||
setattr(self, k.text.replace(' ', ''), v.text)
|
setattr(self, k.text.replace(' ', ''), v.text)
|
||||||
|
|
||||||
|
|
||||||
def parseXml(xml_file):
|
def parseXml(xml_file):
|
||||||
"""
|
"""
|
||||||
Parses an xml file and returns the DOM tree.
|
Parses an xml file and returns the DOM tree.
|
||||||
@@ -28,7 +33,7 @@ def parseXml(xml_file):
|
|||||||
tracks.append(Track(t))
|
tracks.append(Track(t))
|
||||||
return tracks
|
return tracks
|
||||||
|
|
||||||
def copy_file(track, targetFolder):
|
def copy_file(track: Track, targetFolder) -> str:
|
||||||
"""
|
"""
|
||||||
Copies a track from its source to the destination folder
|
Copies a track from its source to the destination folder
|
||||||
"""
|
"""
|
||||||
@@ -41,6 +46,33 @@ def copy_file(track, targetFolder):
|
|||||||
print('File {0} not found.')
|
print('File {0} not found.')
|
||||||
return dst
|
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():
|
def main():
|
||||||
"""
|
"""
|
||||||
@@ -63,6 +95,7 @@ def main():
|
|||||||
|
|
||||||
for t in tracks:
|
for t in tracks:
|
||||||
new_file = copy_file(t, args.target)
|
new_file = copy_file(t, args.target)
|
||||||
|
tag_file(t, new_file)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|||||||
Reference in New Issue
Block a user