Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
182 commits
Select commit Hold shift + click to select a range
5c24354
0.18.0 - very initial Mixcloud support. No promises.
Oct 17, 2015
58352df
0.18.1 - adds mp3 bruting and m4a fallbacks for mixcloud streams.
Oct 17, 2015
6cd5f57
M4a support in mc tests
Oct 17, 2015
492762b
Breaks out of loops early when bruting upon 200
Oct 17, 2015
42854f0
0.18.2 - fixes #35 unicode casting problem
Oct 26, 2015
d4ce952
0.18.3 - fixes interrupted publication of 18.2
Oct 26, 2015
794f5fd
0.19.0 - very basic AudioMack support for no reason.
Oct 27, 2015
52f5071
Minor readme formatting fix
Oct 27, 2015
04d4e82
Links PyPI badge to PyPI page
Oct 28, 2015
1af4023
0.19.1 - Converts MD to RST for during distrbution
Oct 29, 2015
76bf7cd
Fix Mixcloud comment
MasterFocus Nov 3, 2015
1f7aa12
Fix Bandcamp URL with just the artist's username
MasterFocus Nov 3, 2015
2095f93
Download all Bandcamp albums from a given artist
MasterFocus Nov 3, 2015
6fc01ec
Fix README.md
MasterFocus Nov 3, 2015
24a9eda
Fix indentation
MasterFocus Nov 3, 2015
c134155
Merge pull request #36 from MasterFocus/master
Nov 3, 2015
49bd43f
0.20.0 - @MasterFocus contributed download all Bandcamp albums from a…
Nov 3, 2015
8316321
First attempt to fix #37
Nov 5, 2015
6ca5b89
0.21.0 - adds set title as album when downloading sets
Nov 5, 2015
ee3f12a
Multiple Bandcamp-related improvements
MasterFocus Nov 5, 2015
796e203
Fix issue #38 and other minor things (Bandcamp)
MasterFocus Nov 6, 2015
771012c
Merge pull request #39 from MasterFocus/master
Nov 6, 2015
d482f0f
0.22.0 - various fixes from @MasterFocus, pep8ification, py3ifications
Nov 6, 2015
0722dbc
Fix issue #38 for non-recursive Bandcamp scraping
MasterFocus Nov 18, 2015
93d1584
Merge pull request #42 from MasterFocus/master
Nov 18, 2015
f888223
0.22.1 - fixes bandcamp --opening from @MasterFocus
Nov 18, 2015
eb6de31
Attempt Python3 packaging and Travis testing
Dec 15, 2015
de3cc1c
Lets try that again, per https://github.com/testing-cabal/mock/issues…
Dec 15, 2015
fbcee4a
Use BB rather than pip version of Mutagen
Dec 15, 2015
ea1f014
maybe fix that..
Dec 15, 2015
ed4a103
Dirtiness to add non-pip gzip to setup reqs
Dec 15, 2015
624f7f6
Change P3 test versions, further p3ify
Dec 15, 2015
c645c87
Futher p3ifyication, maxint to maxsize
Dec 15, 2015
f3d3b5b
Attempt unicode fixes
Dec 16, 2015
78b71c3
Attempt 2to3 conversion
Dec 19, 2015
2c0f668
Move request content bytestream to request text
Dec 19, 2015
ddb2e3c
Remove all explicit encoding for p3 tests
Dec 19, 2015
203b649
0.23.0 - initial Python3 support. Hoping this doesn't break P2 unicode..
Dec 19, 2015
a9e717d
Ready to test potential fix in Unicode for p3
Dec 19, 2015
31626eb
Fix joining int and str
Dec 19, 2015
92a6067
0.23.1 - fix python 2 unicode errors after python3 upgrade
Dec 19, 2015
76e11e9
Fix readme formatting
Dec 19, 2015
2967f6a
0.23.2 - Fixes 500 from 23.1 upload
Dec 19, 2015
f803142
Attempt to fix pip3 packaging..
Dec 20, 2015
39ec508
0.23.3 - hopefully fixes pip3 issue
Dec 20, 2015
f2a9940
Force str casting of soundcloud ids
Dec 24, 2015
2a361df
0.23.4 - fix sc username bug
Dec 24, 2015
81177f2
Fix broken MixCloud links
Jan 4, 2016
d6b5709
Fixes #46 - upsteam problems with Clint, boo
Jan 4, 2016
bcc9637
0.23.5 - Fixes two bugs with MixCloud and Unicode
Jan 4, 2016
82464e8
Fix for #24 - Likes limit
z-z-z-z Jan 8, 2016
d4f3594
Merge pull request #51 from jabui/master
Jan 13, 2016
9b1021e
0.23.6 - Fix packaging errors for older setuptools installs
Feb 13, 2016
e8d43a4
..7 - remove 2.6 support
Feb 13, 2016
b82d1b7
Update Requirements
StewPoll Feb 22, 2016
c0e55e6
Merge pull request #61 from TetraEtc/master
Apr 1, 2016
52bcbb1
hope that pip3 doesnt break
Apr 1, 2016
e2509b0
0.23.8 - stop all this mutagen whining
Apr 1, 2016
814b051
use different test url
Apr 1, 2016
5065a3c
Extremely basic attempt at fixing the 403 error
Apr 8, 2016
fb446b8
0.23.9 - hot fix for the 403 error
Apr 8, 2016
b347ea1
Typo in Audiomack section
svenluijten Apr 30, 2016
bdbc9d7
Merge pull request #72 from svenluijten/master
Apr 30, 2016
1161e72
Move to more aggressive scraping
May 3, 2016
50bc284
Merge branch 'master' of github.com:Miserlou/SoundScrape
May 3, 2016
15501dd
0.23.10 - fixes #74
May 3, 2016
eda9215
Fix deathgrips shittily
May 6, 2016
0ec6606
Replace PDB
May 6, 2016
5374b70
fix for python3
May 6, 2016
159bcb7
Thank you to our anonymous benefactor
May 10, 2016
3463c0e
0.23.11 - hotfix until new sc scrape core
May 10, 2016
e51fbeb
fix test maybe
May 10, 2016
6bb1ffb
0.23.12 - fix small typo
May 17, 2016
b7fab1c
this is probably gonna suck
May 21, 2016
04b8360
Add upgrade instructions
May 27, 2016
fdf6e87
RM sad dms
May 27, 2016
115af69
0.23.13 - slight improvements to new scrapings
May 31, 2016
cb9f92b
use apiv2 for scraping usernames
Jun 3, 2016
689c48e
0.24.0 - convert to APIv2 for pages that cant be softscraped
Jun 3, 2016
1fff8e5
more aggro sanitization
Jun 3, 2016
5f813bb
0.24.1 - fix python3 on api2 scrapes
Jun 3, 2016
994bd69
fixed error when trying to encode ints
Jun 6, 2016
a9d9c04
updated most docstrings to include return types
Jun 6, 2016
184a1ab
updated most docstrings to include return types
Jun 6, 2016
4394eb8
Merge branch 'update-docstrings' of https://github.com/pydo/SoundScra…
Jun 6, 2016
3773612
Merge pull request #85 from pydo/bugfix/cannot-encode-int
Jun 8, 2016
a07295f
merge
Jun 8, 2016
a7a0e14
Merge branch 'pydo-update-docstrings'
Jun 8, 2016
a35c6ac
0.24.2 fix casting by @pydo
Jun 8, 2016
591d3a4
0.25.0 add support for hard-scraped playlists, gracefully skip region…
Jun 9, 2016
7fc7ca4
Add album name on playlists
Jun 9, 2016
b29c253
add puptest
Jun 9, 2016
5815f76
wipe your asses children
Jun 9, 2016
c5c66b8
0.25.1 - add playlist title as album name on scrapes
Jun 9, 2016
b0b863a
crude fix for #91
Jun 19, 2016
56d0372
Fix MixCloud
Jun 19, 2016
2addaac
Add BC hosted urls to docs
Jun 19, 2016
9d39bcb
0.25.2 - fix bc URLs, fix mixcloud
Jun 19, 2016
f4c9c84
0.26.0 - adds keep preview tracks option
Jun 25, 2016
0364bd9
tiny readme typo
Jun 25, 2016
48f6903
fix tests
Jun 25, 2016
84c1a19
fix num for scraped tracks
Jun 25, 2016
b2b1f98
0.26.1 - fixes -n argument break reported in #91, adds -n testing
Jun 25, 2016
57f2fba
potential folder fix
Jun 25, 2016
fbb45c5
0.26.2 - fix folders on scraped tracks
Jun 25, 2016
9658286
add potential windows unicode fix
Jun 25, 2016
eae7c99
0.27.0 - dl using temp files, fix bug, add --version
Jul 5, 2016
448284c
0.27.1 - fix #102
Jul 5, 2016
3c5e358
attempt graceful 404s
Jul 19, 2016
5f45c27
fix the build hopefully
Jul 19, 2016
df7cb85
actually fix build
Jul 19, 2016
191c896
0.27.2 - adds better 404 handler
Jul 19, 2016
a4de182
fix 108
Jul 21, 2016
42480fc
0.27.3 - fixes #108
Jul 21, 2016
f3953e2
fixes #111
Jul 21, 2016
49a046a
0.27.4 - get all likes when getting likes
Jul 21, 2016
bfc5d0c
Removed unnecessary sanitize_filename (Issue #113)
brachna Jul 28, 2016
b40852c
fix sc support for wavs
Aug 9, 2016
407e052
0.28.0 - improve support for WAVs from SoundCloud
Aug 9, 2016
8098900
Merge pull request #114 from brachna/dev
Aug 9, 2016
638f34d
0.28.1 - fix bandcamp -f mode
Aug 31, 2016
fb010d5
Merge branch 'master' of github.com:Miserlou/SoundScrape
Aug 31, 2016
bb2d093
fix for #112
brachna Sep 4, 2016
66d813f
another attempt to fix #112
brachna Sep 4, 2016
9f0acdf
Merge pull request #121 from brachna/dev
Sep 4, 2016
9f585fe
0.28.2 - fixes unicode output on windows
Sep 4, 2016
429b358
adds feature #106
brachna Sep 5, 2016
c332914
quick hack (change '.' to '')
brachna Sep 5, 2016
7d200e5
starting from scratch: adding option and check
brachna Sep 5, 2016
590bb6c
adding option to scrape_bandcamp_url
brachna Sep 5, 2016
6205757
forgot to add 1 argument
brachna Sep 5, 2016
e69bbdb
another try
brachna Sep 5, 2016
431efca
getting closer
brachna Sep 5, 2016
fd6900e
remade soundscrape.py
brachna Sep 5, 2016
30c3cac
remade tests/test.py
brachna Sep 5, 2016
1864953
fixed #125
Alexey1100 Sep 28, 2016
958eeea
Merge pull request #1 from Alexey1100/Alexey1100-patch-1
Alexey1100 Sep 28, 2016
bb5a090
Merge pull request #126 from Alexey1100/master
Sep 28, 2016
6f6b5bc
Merge pull request #122 from brachna/dev
Sep 28, 2016
ce4f273
0.29.0 - (via PR) add destination folder option
Sep 30, 2016
8d2026e
Fix for #127
brachna Oct 2, 2016
b6ace0a
another attempt to fix #125
brachna Oct 2, 2016
1e52421
Merge pull request #128 from brachna/dev
Oct 3, 2016
348767e
0.29.1 - unicode fixes via pr
Oct 3, 2016
69e73ac
fix for #133: downloads full bandcamp artwork
brachna Oct 6, 2016
d448c91
changing replace() back
brachna Oct 6, 2016
a0f65dc
forgot slash
brachna Oct 6, 2016
1e01af6
Merge pull request #134 from brachna/dev
Oct 6, 2016
e8ebf47
bandcamp: adds #116 and fixes date tag
brachna Oct 7, 2016
8862d79
oops, forgot that EasyID3 is not used anymore
brachna Oct 7, 2016
c263986
Merge pull request #136 from brachna/dev
Oct 7, 2016
6c2638b
0.29.2 sm fixes
Oct 8, 2016
f57251f
trivial commit because travis failed
Oct 8, 2016
8ff156f
Shrinking the tracks array to the size defined by -n on the command l…
atr0s Oct 23, 2016
6f355cb
Shrinking the array to get around an issue
atr0s Oct 24, 2016
f6760ce
attempt to fix issue #140
brachna Nov 3, 2016
d4420dc
removed unnecessary comment line
brachna Nov 3, 2016
94d274e
updated puts_safe
brachna Nov 3, 2016
52e669f
crude mixcloud fix
Nov 3, 2016
d902db4
fix automerge
Nov 3, 2016
59b910a
0.29.3 - fix mixcloud, fix windows p3 hopefully
Nov 3, 2016
680ff44
Merge pull request #141 from atr0s/playlist-sets-bugfix
Nov 4, 2016
268b4c2
bump ag client id
Dec 6, 2016
0b550fc
0.29.4 - bump client id
Dec 6, 2016
13c3699
Attempt to fix mixcloud
Jan 10, 2017
4d88539
pdbs wont pass tests..
Jan 10, 2017
b13c76c
works for me^tm
Jan 10, 2017
3d671e3
Adds support for MusicBed.com (#153)
brachna Jan 11, 2017
c552726
nerf mixcloud test for now
Jan 13, 2017
21d4569
0.29.5 - fix mixcloud
Jan 13, 2017
b63f6a7
Merge pull request #155 from brachna/dev
Jan 16, 2017
5498939
add default mb account
Jan 16, 2017
30bd5d2
0.30.0 - musicbed support
Jan 16, 2017
edf1b6f
comment test removal
Jan 19, 2017
d8780e0
Typo in argparse description
huntrar Apr 29, 2017
5f8b859
Merge pull request #173 from huntrar/master
Apr 29, 2017
7d3a189
new client_id but this may be a terrible idea
Oct 9, 2017
c09947a
Merge branch 'master' of github.com:Miserlou/SoundScrape
Oct 9, 2017
3341e40
add hard test, rm broken tests
Oct 9, 2017
dd5c2d7
0.30.1 - add new key and more error
Oct 9, 2017
efc63b9
0.31.2 - steal some keys
Feb 5, 2018
9864ac9
bad force
Jan 14, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@ env/
*.DS_Store
*.pyc
*.bak
build/
dist/
7 changes: 5 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
language: python
python:
- "2.6"
- "2.7"
- "3.3"
- "3.4"
- "3.5"
# command to install dependencies
install:
- "pip install -r requirements.txt"
# - "pip install -r requirements.txt"
- "pip install setuptools --upgrade; python setup.py install"
# command to run tests
script: nosetests
68 changes: 65 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
![SoundScrape!](http://i.imgur.com/nHAt2ow.png)

SoundScrape [![Build Status](https://travis-ci.org/Miserlou/SoundScrape.svg)](https://travis-ci.org/Miserlou/SoundScrape) [![PyPI](https://img.shields.io/pypi/dm/SoundScrape.svg?style=flat)]()
SoundScrape [![Build Status](https://travis-ci.org/Miserlou/SoundScrape.svg)](https://travis-ci.org/Miserlou/SoundScrape) [![Python 2](https://img.shields.io/badge/Python-2-brightgreen.svg)](https://pypi.python.org/pypi/soundscrape/) [![Python 3](https://img.shields.io/badge/Python-3-brightgreen.svg)](https://pypi.python.org/pypi/soundscrape/) [![PyPI](https://img.shields.io/pypi/v/soundscrape.svg)](https://pypi.python.org/pypi/SoundScrape)
==============

**SoundScrape** makes it super easy to download artists from SoundCloud (and Bandcamp) - even those which don't have download links! It automatically creates ID3 tags as well (including album art), which is handy.
**SoundScrape** makes it super easy to download artists from SoundCloud (and Bandcamp and MixCloud) - even those which don't have download links! It automatically creates ID3 tags as well (including album art), which is handy.

Usage
---------
Expand All @@ -14,6 +14,12 @@ First, install it:
pip install soundscrape
```

Note that if you are having problems, please first try updating to the latest version:

```bash
pip install soundscrape --upgrade
```

Then, just call soundscrape and the name of the artist you want to scrape:

```bash
Expand Down Expand Up @@ -85,10 +91,25 @@ By default, SoundScrape will try to rip everything it can. However, if you only
soundscrape sly-dogg -d
```

Keep Preview Tracks
--------

By default, SoundScrape will skip the 30-second preview tracks that SoundCloud now provides. You can choose to keep these preview snippets with the *-k* argument.

```bash
soundscrape chromeo -k
```

Folders
--------

By default, SoundScrape aims to act like _wget_, downloading in place in the current directory. With the *-f* argument, however, SoundScrape acts more like a download manager and sorts songs in to ./ARTIST_NAME/ARTIST_NAME_SONG_TITLE.mp3 format. It will also skip previously downloaded tracks.
By default, SoundScrape aims to act like _wget_, downloading in place in the current directory. With the *-f* argument, however, SoundScrape acts more like a download manager and sorts songs into the following format:

```
./ARTIST_NAME - ALBUM_NAME/SONG_NUMBER - SONG_TITLE.mp3
```

It will also skip previously downloaded tracks.

```bash
soundscrape murdercitydevils -f
Expand All @@ -99,10 +120,51 @@ Bandcamp

SoundScrape can also pull down albums from Bandcamp. For Bandcamp pages, use the *-b* argument along with an artist's username or a specific URL. It only downloads one album at a time. This works with all of the other arguments, except *-d* as Bandcamp streams only come at one bitrate, as far as I can tell.

Note: Currently, when using the *-n* argument, the limit is evaluated for each album separately.

```bash
soundscrape warsaw -b -f
```

This also works for non-Bandcamp URLs that are hosted on Bandcamp:

```bash
soundscrape -b http://music.monstercat.com/
```

Note that the full URL must be included.

Mixcloud
--------

SoundScrape can also grab mixes from Mixcloud. This feature is extremely expermental and is in no way guaranteed to work!

Finds the original mp3 of a mix and grabs that (with tags and album art) if it can, or else just gets the raw m4a stream.

Mixcloud currently only takes an invidiual mix. Capacity for a whole artist's profile due shortly.

```bash
soundscrape https://www.mixcloud.com/corenewsuploads/flume-essential-mix-2015-10-03/ -of
```

Audiomack
--------

Just for fun, SoundScrape can also download individual songs from Audiomack. Not that you'd ever want to.

```bash
soundscrape -a http://www.audiomack.com/song/bottomfeedermusic/top-shottas
```

MusicBed
--------

For some strange reason, it also works for MusicBed.com. Thanks @brachna for this feature.

```bash
soundscrape https://www.musicbed.com/albums/be-still/2828
```

Opening Files
--------

Expand Down
16 changes: 8 additions & 8 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
args>=0.1.0
clint>=0.3.2
demjson==2.2.2
fudge==1.0.3
mutagen==1.31
nose==1.3.7
requests[security]>=2.1.0
simplejson==3.3.1
demjson>=2.2.2
fudge>=1.0.3
nose>=1.3.7
requests[security]>=2.9.0
setuptools>=18.0.0
simplejson>=3.3.1
soundcloud>=0.4.1
wheel==0.24.0
wsgiref==0.1.2
wheel>=0.24.0
mutagen>=1.31.0
25 changes: 22 additions & 3 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,24 @@
import os
import setuptools
import soundscrape
import sys

from setuptools import setup

# To support 2/3 installation
setup_version = int(setuptools.__version__.split('.')[0])
if setup_version < 18:
print("Please upgrade your setuptools to install SoundScrape: ")
print("pip install -U pip wheel setuptools")
quit()

# Set external files
README = open(os.path.join(os.path.dirname(__file__), 'README.md')).read()
try:
from pypandoc import convert
README = convert('README.md', 'rst')
except ImportError:
README = open(os.path.join(os.path.dirname(__file__), 'README.md')).read()

with open(os.path.join(os.path.dirname(__file__), 'requirements.txt')) as f:
required = f.read().splitlines()

Expand All @@ -11,9 +27,10 @@

setup(
name='soundscrape',
version='0.17.2',
version=soundscrape.__version__,
packages=['soundscrape'],
install_requires=required,
extras_require={ ':python_version < "3.0"': [ 'wsgiref>=0.1.2', ], },
include_package_data=True,
license='MIT License',
description='Scrape an artist from SoundCloud',
Expand All @@ -31,8 +48,10 @@
'License :: OSI Approved :: Apache Software License',
'Operating System :: OS Independent',
'Programming Language :: Python',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Topic :: Internet :: WWW/HTTP',
'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
],
Expand Down
1 change: 1 addition & 0 deletions soundscrape/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
__version__ = '0.30.2'
Loading