Prepare for releases

This commit is contained in:
Linus Groh
2018-02-02 15:19:12 +01:00
parent 08ae7ae24a
commit 177f72b532
6 changed files with 202 additions and 29 deletions

110
.gitignore vendored
View File

@@ -1,9 +1,111 @@
config.yml config.yml
Music/ Music/
*.txt *.txt
.coverage
*.pyc
__pycache__/
.cache/ .cache/
README.rst
upload.sh
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
# Translations
*.mo
*.pot
# Django stuff:
*.log
.static_storage/
.media/
local_settings.py
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# pyenv
.python-version .python-version
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/

13
CHANGES.md Normal file
View File

@@ -0,0 +1,13 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
## [Unreleased]
## 1.0.0-alpha.1 - 2018-02-02
### Added
- Initial release, prepare for 1.0.0
[Unreleased]: https://github.com/olivierlacan/keep-a-changelog/compare/v1.0.0-alpha.1...HEAD

View File

@@ -38,26 +38,31 @@ If you need to use Python 2 though, check out the (old) `python2` branch.
since they were not of much use and created unnecessary clutter. since they were not of much use and created unnecessary clutter.
You can still get them back by using `old` branch though. You can still get them back by using `old` branch though.
### Debian, Ubuntu, Linux & Mac ### Debian-like GNU/Linux & macOS
``` ```
$ cd $ pip install spotify-downloader
$ git clone https://github.com/ritiek/spotify-downloader
$ cd spotify-downloader
$ pip install -U -r requirements.txt
``` ```
**Important:** if you have installed both Python 2 and 3, the `pip` command **Important:** if you have installed both Python 2 and 3, the `pip` command
could invoke an installation for Python 2. To see which Python version `pip` could invoke an installation for Python 2. To see which Python version `pip`
refers to, try `$ pip -V`. If it turns out `pip` is your Python 2 pip, try refers to, try `$ pip -V`. If it turns out `pip` is your Python 2 pip, try
`$ pip3 install -U -r requirements.txt` instead. `$ pip3 install spotify-downloader` instead.
You'll also need to install FFmpeg for conversion You'll also need to install FFmpeg for conversion
(use `--avconv` if you'd like to use that instead): (use `--avconv` if you'd like to use that instead):
Linux: `$ sudo apt-get install ffmpeg` GNU/Linux:
Mac: `$ brew install ffmpeg --with-libmp3lame --with-libass --with-opus --with-fdk-aac` ```
$ sudo apt-get install ffmpeg
```
macOS:
```
$ brew install ffmpeg --with-libmp3lame --with-libass --with-opus --with-fdk-aac
```
If it does not install correctly, you may have to build it from source. If it does not install correctly, you may have to build it from source.
For more info see https://trac.ffmpeg.org/wiki/CompilationGuide. For more info see https://trac.ffmpeg.org/wiki/CompilationGuide.
@@ -65,18 +70,21 @@ For more info see https://trac.ffmpeg.org/wiki/CompilationGuide.
### Windows ### Windows
Assuming you have Python 3 Assuming you have Python 3
([preferably v3.6 or above to stay away from Unicode errors](https://stackoverflow.com/questions/30539882/whats-the-deal-with-python-3-4-unicode-different-languages-and-windows)) already installed and in PATH. ([preferably v3.6 or above to stay away from Unicode errors](https://stackoverflow.com/questions/30539882/whats-the-deal-with-python-3-4-unicode-different-languages-and-windows)) and pip already installed and in PATH.
- Download and extract the [zip file](https://github.com/ritiek/spotify-downloader/archive/master.zip)
from master branch.
- Download FFmpeg for Windows from [here](http://ffmpeg.zeranoe.com/builds/). - Download FFmpeg for Windows from [here](http://ffmpeg.zeranoe.com/builds/).
Copy `ffmpeg.exe` from `ffmpeg-xxx-winxx-static\bin\ffmpeg.exe` to PATH Copy `ffmpeg.exe` from `ffmpeg-xxx-winxx-static\bin\ffmpeg.exe` to PATH
(usually C:\Windows\System32\) or just place it in the root directory extracted (usually C:\Windows\System32\) or just place it in the root directory extracted
from the above step. from the above step.
- Open `cmd` and type `$ pip install -U -r requirements.txt` to install dependencies. - Open `cmd` and type `pip install spotify-downloader`.
The same note about `pip` as for Debian, Ubuntu, Linux & Mac applies. The same note about `pip` as for GNU/Linux and macOS applies.
### From GitHub releases
- Download and extract the [latest](https://github.com/ritiek/spotify-downloader/releases/latest) or a [specific](https://github.com/ritiek/spotify-downloader/releases/latest) release archive file.
- `cd` into the directory and `python3 setup.py install`
## Instructions for Downloading Songs ## Instructions for Downloading Songs

View File

@@ -1,10 +0,0 @@
pathlib >= 1.0.1
youtube_dl >= 2017.5.1
pafy >= 0.5.3.1
spotipy >= 2.4.4
mutagen >= 1.37
unicode-slugify >= 0.1.3
titlecase >= 0.10.0
logzero >= 1.3.1
lyricwikia >= 0.1.8
PyYAML >= 3.12

53
setup.py Normal file
View File

@@ -0,0 +1,53 @@
from setuptools import setup
from spotdl import __version__
# Created from README.md using pandoc
with open('README.rst', 'r') as f:
long_description = f.read()
setup(
name='spotify-downloader',
py_modules=['spotdl'],
# Tests are included automatically:
# https://docs.python.org/3.6/distutils/sourcedist.html#specifying-the-files-to-distribute
packages=['core'],
version=__version__,
install_requires=[
'pathlib >= 1.0.1',
'youtube_dl >= 2017.5.1',
'pafy >= 0.5.3.1',
'spotipy >= 2.4.4',
'mutagen >= 1.37',
'unicode-slugify >= 0.1.3',
'titlecase >= 0.10.0',
'logzero >= 1.3.1',
'lyricwikia >= 0.1.8',
'PyYAML >= 3.12'
],
description='Download songs from YouTube using Spotify song URLs or playlists with albumart and meta-tags.',
long_description=long_description,
author='Ritiek Malhotra and the spotify-downloader contributors',
license='MIT',
url='https://github.com/ritiek/spotify-downloader',
download_url='https://pypi.org/project/spotify-downloader/',
keywords=['spotify', 'downloader', 'download', 'music', 'youtube', 'mp3', 'album', 'metadata'],
classifiers=[
'Development Status :: 4 - Beta',
'Intended Audience :: End Users/Desktop',
'License :: OSI Approved :: MIT License',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3 :: Only',
'Topic :: Multimedia',
'Topic :: Multimedia :: Sound/Audio',
'Topic :: Utilities'
],
entry_points={
'console_scripts': [
'spotdl = spotdl:cli',
],
}
)

View File

@@ -16,6 +16,8 @@ import time
import platform import platform
import pprint import pprint
__version__ = '1.0.0b1'
def check_exists(music_file, raw_song, meta_tags): def check_exists(music_file, raw_song, meta_tags):
""" Check if the input song already exists in the given folder. """ """ Check if the input song already exists in the given folder. """
@@ -167,12 +169,13 @@ def download_single(raw_song, number=None):
return True return True
if __name__ == '__main__': def main():
const.args = handle.get_arguments() const.args = handle.get_arguments()
internals.filter_path(const.args.folder) internals.filter_path(const.args.folder)
const.log = const.logzero.setup_logger(formatter=const.formatter, const.log = const.logzero.setup_logger(formatter=const.formatter,
level=const.args.log_level) level=const.args.log_level)
global log
log = const.log log = const.log
log.debug('Python version: {}'.format(sys.version)) log.debug('Python version: {}'.format(sys.version))
log.debug('Platform: {}'.format(platform.platform())) log.debug('Platform: {}'.format(platform.platform()))
@@ -197,3 +200,7 @@ if __name__ == '__main__':
except KeyboardInterrupt as e: except KeyboardInterrupt as e:
log.exception(e) log.exception(e)
sys.exit(3) sys.exit(3)
if __name__ == '__main__':
main()