Downloads MP3 rips of tracks/sets from SoundCloud, Bandcamp, YouTube with tags and artwork.
Project description
Music Downloader Telegram Bot
Bot Usage
Send /start or /help command to bot or refer directly to the help message.
Please report all bugs and issues and suggest your improvements to issues.
Supported sites and used packages
Development
Installation
Requirements
Those should be available in your PATH:
Python 3.4+ (pyenv recommended)
FFmpeg for running locally (fresh builds for Windows and Linux recommended)
Heroku CLI is recommended
Install from PyPI (preferred)
pip3 install scdlbot
Install from Git source
git clone https://github.com/gpchelkin/scdlbot.git cd scdlbot pip3 install --requirement requirements.txt # If you want to install system-wide, not recommended: python3 setup.py install # Install only a link to current project sources: python3 setup.py develop
Configuration
Copy config file sample and set up config environment variables in it:
# if you installed from PyPI, download sample: wget https://raw.githubusercontent.com/gpchelkin/scdlbot/master/.env.sample cp .env.sample .env nano .env
Required
TG_BOT_TOKEN: Telegram Bot API Token, obtain here, also diable privacy mode if you want
STORE_CHAT_ID: Chat ID for storing audios for inline mode
SC_AUTH_TOKEN: SoundCloud Auth Token, obtain here
Optional
USE_WEBHOOK: use webhook for bot updates: 1, use polling (default): 0, more info
PORT: Heroku sets this automatically for web dynos if you are using webhook
APP_URL: Heroku App URL like https://<appname>.herokuapp.com/, required for webhook
NO_CLUTTER_CHAT_IDS: Comma-separated chat IDs with no replying and caption hashtags
BIN_PATH: Custom directory where scdl and bandcamp-dl binaries are available, e.g. ~/.pyenv/shims/ if you use pyenv, default: empty
DL_DIR: Parent directory for MP3 download directory, default: ~ (user’s home directory)
SYSLOG_ADDRESS: Syslog server, for example logsX.papertrailapp.com:ABCDE
HOSTNAME: Hostname to show up in Syslog messages
Running Locally
Using Heroku Local (preferred)
You will need Heroku CLI installed.
# if you installed from PyPI, download Procfile: wget https://raw.githubusercontent.com/gpchelkin/scdlbot/master/Procfile # for long polling: heroku local worker # for webhooks (you will also need to set up some NGINX with SSL): heroku local web
Using just Python
# if you installed from PyPI or system-wide: export $(cat .env | xargs) scdlbot # or just: env $(cat .env | xargs) scdlbot # if you haven't installed from PyPI or system-wide: export $(cat .env | xargs) python -m scdlbot # or just: env $(cat .env | xargs) python -m scdlbot
Deploying to Heroku
When app is deployed you must set only one dyno working on “Resources” tab in your app settings depending on which way of getting updates you have chosen and set in config variables: worker for polling or web for webhook.
Manually
You can do the same as the button above but using Heroku CLI, not much of a fun. Assuming you are in scdbot repository directory:
heroku login # Create app with Python3 buildpack and set it for upcoming builds: heroku create --buildpack heroku/python heroku buildpacks:set heroku/python # Add FFmpeg buildpack needed for youtube-dl: heroku buildpacks:add --index 1 https://github.com/laddhadhiraj/heroku-buildpack-ffmpeg.git --app scdlbot # Deploy app to Heroku: git push heroku master # Set config vars automatically from your .env file heroku plugins:install heroku-config heroku config:push # Or set them one by one: heroku config:set TG_BOT_TOKEN="<TG_BOT_TOKEN>" STORE_CHAT_ID="<STORE_CHAT_ID>" ...
If you use webhook, start web dyno and stop worker dyno:
heroku ps:scale web=1 worker=0 heroku ps:stop worker
If you use polling, start worker dyno and stop web dyno:
heroku ps:scale worker=1 web=0 heroku ps:stop web
Some useful commands:
# Attach to logs: heroku logs -t # Test run ffprobe heroku run "ffprobe -version"
Deploying to Dokku
Use Dokku and their docs on your own server. App is tested and fully ready for deployment with polling (no webhook yet).
export DOKKU=<your_dokku_server> scp .env $DOKKU:~ ssh $DOKKU dokku apps:create scdlbot dokku config:set scdlbot $(cat .env | xargs) # Ctrl+D git remote add dokku dokku@$DOKKU:scdlbot git push dokku master ssh $DOKKU dokku ps:scale scdlbot worker=1 web=0 dokku ps:restart
History
0.5.0 (2017-06-28)
Big refactor to class-based
Syslog support
Some fixes
0.4.0 (2017-06-15)
Console script!
Setup script version improvements
Ask in groups only, download immediately in private
Bandcamp: Download links without ‘bandcamp’ for /dl
Move TODOs to issues
Button to destroy music from the Internet
0.3.1 (2017-06-12)
Markdown to reStructuredText
Copy tags to parts
0.3.0 (2017-06-10)
YouTube playlists support
Split audio by 50 MB size for sending
Disable privacy mode and ask for download
0.2.0 (2017-06-06)
Webhooks and async
0.1.0 (2017-06-04)
First usable and stable version.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.