Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
858910e
Moving to GitHub Actions.
SimplicityGuy May 13, 2020
966bbad
Fixing typo.
SimplicityGuy May 13, 2020
77b7c8a
Adding Black formatter.
SimplicityGuy May 14, 2020
b4c7c4e
Moving to single quotes.
SimplicityGuy May 14, 2020
89c7395
Removing Python 3.5.
SimplicityGuy May 14, 2020
eb52467
Reformatted with Black.
SimplicityGuy May 14, 2020
4e7e248
Fixing build status to move away from Travis-CI.
SimplicityGuy May 14, 2020
59c6bec
Removing support for Python 3.5 and earlier.
SimplicityGuy May 14, 2020
e61db56
Fixing workflow to not have version specific formatting.
SimplicityGuy May 14, 2020
7b05430
Fixing a few flake8 issues.
SimplicityGuy May 14, 2020
9e39ecc
Version bump.
SimplicityGuy May 14, 2020
59ac4ed
Remove hive.co support since it was never completed.
SimplicityGuy May 14, 2020
be2ff59
Fixing up a bunch of flake8 violations.
SimplicityGuy May 14, 2020
0885031
Removing status for Python 2.7.
SimplicityGuy May 14, 2020
c050b46
Removing an ignore since we're selecting in the rules we want at that…
SimplicityGuy May 14, 2020
be6f13e
Removed broken code and identified a path forward for strange SoundCl…
SimplicityGuy May 16, 2020
a714248
Changing how track downloading works in the case where no tracks are …
SimplicityGuy May 16, 2020
077ffae
Upgraded strings to Python 3.6 f-strings.
SimplicityGuy May 17, 2020
8c66da8
Adding VSCode to the ignore spec.
SimplicityGuy May 17, 2020
5e15ba2
Cleaning up some logic and resultant duplicated code. Clarifying comm…
SimplicityGuy May 17, 2020
baf0d4e
Removed custom filename sanitization code for a library that is way m…
SimplicityGuy May 17, 2020
7a986df
Minor whitespace fixes.
SimplicityGuy May 17, 2020
2d6c475
Correcting name of package.
SimplicityGuy May 17, 2020
b90ca14
Removing Python 3.6 support due to dependency on sanitize-filename.
SimplicityGuy May 17, 2020
aee51db
Safely handle getting the cover art for the id3 tags.
SimplicityGuy May 17, 2020
7cc1068
Accidentally renamed and reused a local that was a param. Also proper…
SimplicityGuy May 17, 2020
057d925
Writing the tags only once, scoping the try/except, and handling the …
SimplicityGuy May 17, 2020
8174447
Fixing issue with different mutagen objects used for different id3 ta…
SimplicityGuy May 17, 2020
897e3da
Minor refactoring (better checks against None, renaming vars).
SimplicityGuy May 17, 2020
0425cd5
Refactoring 3 areas with nearly identical code around downloading a s…
SimplicityGuy May 17, 2020
57715e0
Minor renaming of methods.
SimplicityGuy May 17, 2020
8fe1d7d
Fixing error handling.
SimplicityGuy May 23, 2020
6904385
Making the parameter consistent as .
SimplicityGuy May 23, 2020
b1031ba
Adding support for multiple enclosures in the feeds path from SoundCl…
SimplicityGuy May 23, 2020
f7dc908
Simplifying the multiple track download path to reuse more code. Bonu…
SimplicityGuy May 23, 2020
2d42cab
Better handling for playlists and sets, including reusing a modified …
SimplicityGuy May 23, 2020
29789a6
Removing the option around keeping previews as the property doesn't …
SimplicityGuy May 23, 2020
f2bcfac
Extracting function for downloading from a feed.
SimplicityGuy May 23, 2020
587f899
Renaming some functions to better reflect what they do.
SimplicityGuy May 23, 2020
9fad322
Fixing flake8 violations.
SimplicityGuy May 23, 2020
672eb72
Reformatting.
SimplicityGuy May 23, 2020
570a0e7
Moving to pytest.
SimplicityGuy May 23, 2020
41b845e
Removing unnecessary requirements.
SimplicityGuy May 23, 2020
62dbb51
Fixing syntax error in Github Actions setup.
SimplicityGuy May 23, 2020
a94300d
Fixing syntax error in Github Actions setup.
SimplicityGuy May 23, 2020
9e3b734
Fixing linting and formatting errors.
SimplicityGuy May 23, 2020
e000ed7
Adding coverage report.
SimplicityGuy May 23, 2020
ca0f91a
Fixing gitignore.
SimplicityGuy May 23, 2020
c39946c
Minor test cleanup.
SimplicityGuy May 23, 2020
faa16dc
Flake8 fixes.
SimplicityGuy May 23, 2020
0334555
Cleaing up what's a request and a response.
SimplicityGuy May 23, 2020
75700a5
MixCloud has completely broken the scraping methodology here. After s…
SimplicityGuy May 23, 2020
13093f8
Revert "MixCloud has completely broken the scraping methodology here.…
SimplicityGuy May 23, 2020
b5c40e5
Revert "Revert "MixCloud has completely broken the scraping methodolo…
SimplicityGuy May 23, 2020
1d5f3a3
Fixing README.
SimplicityGuy May 23, 2020
0c99efb
Cleaning up README.
SimplicityGuy May 24, 2020
6bf8aad
Ignore htmlcov folder.
SimplicityGuy May 24, 2020
3ab2c39
Minor cleanup including adding specifying the number of tracks to dow…
SimplicityGuy May 24, 2020
5a22790
Adding test for SoundCloud feeds path.
SimplicityGuy May 24, 2020
47eca89
Reformatting.
SimplicityGuy May 24, 2020
21f35f6
Bumping version to 1.00 as there are a number of incompatible changes…
SimplicityGuy May 24, 2020
93a2d8e
Adding Mac and Windows builders.
SimplicityGuy May 24, 2020
a615d35
Adding Mac and Windows builders.
SimplicityGuy May 24, 2020
9bdb237
Removing Windows for now since bash is not supported there. :/
SimplicityGuy May 24, 2020
833ca01
Bug fixes for issues found adding new tests.
SimplicityGuy May 24, 2020
d9c06b1
Adding 2 more test cases.
SimplicityGuy May 24, 2020
5787b1b
Adding test for one more path for downloading a track.
SimplicityGuy May 24, 2020
408cd96
Minor fix for unused var.
SimplicityGuy May 24, 2020
618e11f
Update README.md
SimplicityGuy Aug 2, 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
37 changes: 37 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: SoundScrape CI

on: [push, pull_request]

jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: ["ubuntu-latest", "macos-latest"]
python-version: [3.7, 3.8]
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install flake8 black pytest coverage
pip install -r requirements.txt
- name: Black code formatting
run: |
black --check --line-length 127 .
- name: Lint with flake8
run: |
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --ignore=E203,E231 --statistics
- name: Run tests
run: |
PYTHONPATH=$(pwd) coverage run -m --include="soundscrape/*" pytest tests/test.py
- name: Coverage report
run: |
coverage report -m
10 changes: 8 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
.vscode/
build/
dist/
env/
htmlcov/
.coverage
*.DS_Store
*.pyc
*.bak
build/
dist/
*.mp3
*.m4a
*.tmp
12 changes: 0 additions & 12 deletions .travis.yml

This file was deleted.

26 changes: 2 additions & 24 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) [![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 [![Build Status](https://github.com/Miserlou/SoundScrape/workflows/SoundScrape%20CI/badge.svg)](https://github.com/Miserlou/SoundScrape/actions) [![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 and MixCloud) - 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 others) - even those which don't have download links! It automatically creates ID3 tags as well (including album art), which is handy.

Usage
---------
Expand Down Expand Up @@ -91,15 +91,6 @@ 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
--------

Expand Down Expand Up @@ -134,19 +125,6 @@ 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
--------

Expand Down
5 changes: 2 additions & 3 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
args>=0.1.0
atoma>=0.0.17
clint>=0.3.2
demjson>=2.2.2
fudge>=1.0.3
nose>=1.3.7
requests[security]>=2.9.0
sanitize-filename>=1.2.0
setuptools>=18.0.0
simplejson>=3.3.1
soundcloud>=0.4.1
wheel>=0.24.0
mutagen>=1.31.0
58 changes: 23 additions & 35 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,58 +1,46 @@
"""Package setup for SoundScrape."""
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()
import soundscrape

# Set external files
try:
from pypandoc import convert
README = convert('README.md', 'rst')

README = convert("README.md", "rst")
except ImportError:
README = open(os.path.join(os.path.dirname(__file__), 'README.md')).read()
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:
with open(os.path.join(os.path.dirname(__file__), "requirements.txt")) as f:
required = f.read().splitlines()

# allow setup.py to be run from any path
os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir)))

setup(
name='soundscrape',
name="soundscrape",
version=soundscrape.__version__,
packages=['soundscrape'],
packages=["soundscrape"],
install_requires=required,
extras_require={ ':python_version < "3.0"': [ 'wsgiref>=0.1.2', ], },
extras_requires={"tests": ["pytest", "coverage"],},
include_package_data=True,
license='MIT License',
description='Scrape an artist from SoundCloud',
license="MIT License",
description="Scrape an artist from SoundCloud",
long_description=README,
url='https://github.com/Miserlou/SoundScrape',
author='Rich Jones',
author_email='rich@openwatch.net',
entry_points={
'console_scripts': [
'soundscrape = soundscrape.soundscrape:main',
]
},
url="https://github.com/Miserlou/SoundScrape",
author="Rich Jones",
author_email="rich@openwatch.net",
entry_points={"console_scripts": ["soundscrape = soundscrape.soundscrape:main",]},
classifiers=[
'Environment :: Console',
'License :: OSI Approved :: Apache Software License',
'Operating System :: OS Independent',
'Programming Language :: Python',
'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',
"Environment :: Console",
"License :: OSI Approved :: Apache Software License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Topic :: Internet :: WWW/HTTP",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
],
)
1 change: 0 additions & 1 deletion soundscrape/.gitignore

This file was deleted.

6 changes: 5 additions & 1 deletion soundscrape/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
__version__ = '0.30.2'
"""SoundScrape initialization."""

# Semantic versioning
# (reference: https://packaging.python.org/guides/distributing-packages-using-setuptools/#semantic-versioning-preferred)
__version__ = "1.00"
Loading