Lyrics saved as USTL tag inside MP3
Modified/Merged @sun2rise's PR, was having issues merging the actual PR due to the repo being gone (and I'm bad at git) Had to make some changes to the imports as Mutagen has had some changes.master
parent
33e5053c52
commit
6ba85c44fb
|
@ -1,6 +1,6 @@
|
||||||
from bs4 import BeautifulSoup
|
from bs4 import BeautifulSoup
|
||||||
import requests
|
import requests
|
||||||
import jsobj
|
from .jsobj import read_js_object
|
||||||
|
|
||||||
|
|
||||||
class Bandcamp:
|
class Bandcamp:
|
||||||
|
@ -65,6 +65,9 @@ class Bandcamp:
|
||||||
new_track['duration'] = track['duration']
|
new_track['duration'] = track['duration']
|
||||||
new_track['track'] = track['track_num']
|
new_track['track'] = track['track_num']
|
||||||
new_track['title'] = track['title']
|
new_track['title'] = track['title']
|
||||||
|
if track['lyrics'] != 'null':
|
||||||
|
track['lyrics'] = track['lyrics'].encode(encoding='UTF-8', errors='ignore')
|
||||||
|
new_track['lyrics'] = track['lyrics'].replace('\\r\\n', '\n')
|
||||||
|
|
||||||
return new_track
|
return new_track
|
||||||
|
|
||||||
|
@ -78,7 +81,7 @@ class Bandcamp:
|
||||||
stringBlock = block[1]
|
stringBlock = block[1]
|
||||||
|
|
||||||
stringBlock = stringBlock.split("};")[0] + "};"
|
stringBlock = stringBlock.split("};")[0] + "};"
|
||||||
stringBlock = jsobj.read_js_object("var TralbumData = {}".format(stringBlock))
|
stringBlock = read_js_object("var TralbumData = {}".format(stringBlock))
|
||||||
|
|
||||||
if 'album_title' not in embedData['EmbedData']:
|
if 'album_title' not in embedData['EmbedData']:
|
||||||
album['title'] = "Unknown Album"
|
album['title'] = "Unknown Album"
|
||||||
|
@ -111,6 +114,6 @@ class Bandcamp:
|
||||||
|
|
||||||
embedStringBlock = embedBlock[1]
|
embedStringBlock = embedBlock[1]
|
||||||
embedStringBlock = embedStringBlock.split("};")[0] + "};"
|
embedStringBlock = embedStringBlock.split("};")[0] + "};"
|
||||||
embedStringBlock = jsobj.read_js_object("var EmbedData = {}".format(embedStringBlock))
|
embedStringBlock = read_js_object("var EmbedData = {}".format(embedStringBlock))
|
||||||
|
|
||||||
return embedStringBlock
|
return embedStringBlock
|
||||||
|
|
|
@ -42,12 +42,11 @@ Iheanyi:
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from docopt import docopt
|
from docopt import docopt
|
||||||
from bandcamp import Bandcamp
|
from .bandcamp import Bandcamp
|
||||||
from bandcampdownloader import BandcampDownloader
|
from .bandcampdownloader import BandcampDownloader
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
arguments = docopt(__doc__, version='bandcamp-dl 0.0.5')
|
|
||||||
bandcamp = Bandcamp()
|
bandcamp = Bandcamp()
|
||||||
|
|
||||||
if arguments['--artist'] and arguments['--album']:
|
if arguments['--artist'] and arguments['--album']:
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import requests
|
import requests
|
||||||
from mutagen.mp3 import MP3
|
from mutagen.mp3 import MP3
|
||||||
from mutagen.id3._id3v1 import TIT2
|
from mutagen.id3._id3v1 import TIT2
|
||||||
|
from mutagen.id3 import ID3
|
||||||
|
from mutagen.id3._frames import USLT
|
||||||
from mutagen.easyid3 import EasyID3
|
from mutagen.easyid3 import EasyID3
|
||||||
from slugify import slugify
|
from slugify import slugify
|
||||||
|
|
||||||
|
@ -49,6 +50,9 @@ class BandcampDownloader:
|
||||||
"track": track['track'],
|
"track": track['track'],
|
||||||
"date": album['date']
|
"date": album['date']
|
||||||
}
|
}
|
||||||
|
if 'lyrics' in track.keys():
|
||||||
|
track_meta['lyrics'] = track['lyrics']
|
||||||
|
|
||||||
print("Accessing track " + str(track_index + 1) + " of " + str(len(album['tracks'])))
|
print("Accessing track " + str(track_index + 1) + " of " + str(len(album['tracks'])))
|
||||||
|
|
||||||
filename = self.template_to_path(track_meta)
|
filename = self.template_to_path(track_meta)
|
||||||
|
@ -121,4 +125,9 @@ class BandcampDownloader:
|
||||||
audio["date"] = meta['date']
|
audio["date"] = meta['date']
|
||||||
audio.save()
|
audio.save()
|
||||||
|
|
||||||
|
if 'lyrics' in meta.keys():
|
||||||
|
audio = ID3(filename)
|
||||||
|
audio[u"USLT::'eng'"] = (USLT(encoding=3, lang=u'eng', desc=u'', text=meta['lyrics']))
|
||||||
|
audio.save(filename)
|
||||||
|
|
||||||
print("Done encoding . . .")
|
print("Done encoding . . .")
|
||||||
|
|
2
setup.py
2
setup.py
|
@ -6,7 +6,7 @@ here = path.abspath(path.dirname(__file__))
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
name='bandcamp-downloader',
|
name='bandcamp-downloader',
|
||||||
version='0.0.5',
|
version='0.0.6',
|
||||||
description='bandcamp-dl downloads albums and tracks from Bandcamp for you',
|
description='bandcamp-dl downloads albums and tracks from Bandcamp for you',
|
||||||
long_description=open('README.rst').read(),
|
long_description=open('README.rst').read(),
|
||||||
url='https://github.com/iheanyi/bandcamp-dl',
|
url='https://github.com/iheanyi/bandcamp-dl',
|
||||||
|
|
Loading…
Reference in New Issue