2016-12-30 05:38:23 -08:00
|
|
|
"""bandcamp-dl
|
|
|
|
|
2014-05-12 04:59:34 -07:00
|
|
|
Usage:
|
2014-05-21 06:28:55 -07:00
|
|
|
bandcamp-dl.py <url>
|
|
|
|
bandcamp-dl.py [--template=<template>] [--base-dir=<dir>]
|
|
|
|
[--full-album]
|
|
|
|
(<url> | --artist=<artist> --album=<album>)
|
2014-06-07 21:14:56 -07:00
|
|
|
[--overwrite]
|
2016-12-30 05:38:23 -08:00
|
|
|
[--no-art]
|
2014-05-12 04:59:34 -07:00
|
|
|
bandcamp-dl.py (-h | --help)
|
2014-05-21 06:28:55 -07:00
|
|
|
bandcamp-dl.py (--version)
|
2013-04-29 23:59:57 -07:00
|
|
|
|
2014-05-12 04:59:34 -07:00
|
|
|
Options:
|
2014-05-21 06:28:55 -07:00
|
|
|
-h --help Show this screen.
|
|
|
|
-v --version Show version.
|
|
|
|
-a --artist=<artist> The artist's slug (from the URL)
|
|
|
|
-b --album=<album> The album's slug (from the URL)
|
|
|
|
-t --template=<template> Output filename template.
|
|
|
|
[default: %{artist}/%{album}/%{track} - %{title}]
|
2014-06-07 21:14:56 -07:00
|
|
|
-d --base-dir=<dir> Base location of which all files are downloaded.
|
2016-12-30 05:38:23 -08:00
|
|
|
-f --full-album Download only if all tracks are available.
|
|
|
|
-o --overwrite Overwrite tracks that already exist. Default is False.
|
|
|
|
-n --no-art Skip grabbing album art
|
2013-04-29 23:59:57 -07:00
|
|
|
|
2016-12-15 17:28:24 -08:00
|
|
|
Coded by:
|
2013-04-29 23:59:57 -07:00
|
|
|
|
2014-05-12 04:59:34 -07:00
|
|
|
Iheanyi Ekechukwu
|
|
|
|
http://twitter.com/kwuchu
|
|
|
|
http://github.com/iheanyi
|
2013-04-29 18:57:50 -07:00
|
|
|
|
2014-05-12 04:59:34 -07:00
|
|
|
Simon W. Jackson
|
|
|
|
http://miniarray.com
|
|
|
|
http://twitter.com/miniarray
|
|
|
|
http://github.com/miniarray
|
2013-04-29 18:57:50 -07:00
|
|
|
|
2016-12-15 17:28:24 -08:00
|
|
|
Anthony Forsberg:
|
|
|
|
http://evolution0.github.io
|
|
|
|
http://github.com/evolution0
|
|
|
|
|
2014-05-12 04:59:34 -07:00
|
|
|
Iheanyi:
|
|
|
|
Feel free to use this in any way you wish. I made this just for fun.
|
2016-12-15 17:28:24 -08:00
|
|
|
Shout out to darkf for writing a helper function for parsing the JavaScript!
|
|
|
|
"""
|
2013-04-29 18:57:50 -07:00
|
|
|
|
2014-05-21 06:28:55 -07:00
|
|
|
import os
|
2016-12-15 17:28:24 -08:00
|
|
|
from docopt import docopt
|
2016-12-27 15:25:21 -08:00
|
|
|
from .bandcamp import Bandcamp
|
|
|
|
from .bandcampdownloader import BandcampDownloader
|
2016-12-15 17:28:24 -08:00
|
|
|
|
2014-05-21 06:28:55 -07:00
|
|
|
|
2015-12-11 16:02:43 -08:00
|
|
|
def main():
|
2016-12-27 15:25:55 -08:00
|
|
|
arguments = docopt(__doc__, version='bandcamp-dl 0.0.6')
|
2014-05-12 04:59:34 -07:00
|
|
|
bandcamp = Bandcamp()
|
2013-04-29 18:57:50 -07:00
|
|
|
|
2016-12-15 17:28:24 -08:00
|
|
|
if arguments['--artist'] and arguments['--album']:
|
2014-06-07 21:14:56 -07:00
|
|
|
url = Bandcamp.generate_album_url(arguments['--artist'], arguments['--album'])
|
|
|
|
else:
|
|
|
|
url = arguments['<url>']
|
2014-05-21 06:28:55 -07:00
|
|
|
|
2016-12-30 05:38:23 -08:00
|
|
|
if arguments['--no-art']:
|
|
|
|
album = bandcamp.parse(url, False)
|
|
|
|
else:
|
|
|
|
album = bandcamp.parse(url)
|
2015-09-11 05:26:36 -07:00
|
|
|
basedir = arguments['--base-dir'] or os.getcwd()
|
2013-04-29 18:57:50 -07:00
|
|
|
|
2014-06-07 21:14:56 -07:00
|
|
|
if not album:
|
2016-12-15 17:28:24 -08:00
|
|
|
print("The url {} is not a valid bandcamp page.".format(url))
|
2014-06-07 21:14:56 -07:00
|
|
|
elif arguments['--full-album'] and not album['full']:
|
2016-12-15 17:28:24 -08:00
|
|
|
print("Full album not available. Skipping...")
|
2014-05-21 06:28:55 -07:00
|
|
|
else:
|
2014-06-07 21:14:56 -07:00
|
|
|
bandcamp_downloader = BandcampDownloader(url, arguments['--template'], basedir, arguments['--overwrite'])
|
|
|
|
bandcamp_downloader.start(album)
|
2015-12-11 16:02:43 -08:00
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
main()
|