Skip to main content

Telegram Bot for downloading MP3 rips of tracks/sets from SoundCloud, Bandcamp, YouTube with tags and artwork.

Project description

Music Downloader Telegram Bot

Telegram Bot Documentation Status GitHub License PyPI Version PyUp Updates Travis CI Build Status Code Climate GPA Code Climate Issue Count Code Climate Test Coverage Codacy Build Status Scrutinizer Code Quality Better Code Hub Compliance Codebeat Quality

Telegram Bot for downloading MP3 rips of tracks/sets from SoundCloud, Bandcamp, YouTube with tags and artwork.

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:

Install / Update from Git source
git clone https://github.com/gpchelkin/scdlbot.git
cd scdlbot
pip3 install --requirement requirements.txt

# Update:
git pull
pip3 install --requirement requirements.txt

# System-wide install link to current sources, recommended:
python3 setup.py develop

# System-wide install copy of current sources, not recommended:
python3 setup.py install

Configuration

Download or copy config file sample and set up config environment variables in it:

# For PyPI installs: download sample config:
curl -o .env https://raw.githubusercontent.com/gpchelkin/scdlbot/master/.env.sample

# For Git source installs: copy sample config:
cp .env.sample .env

# Use your favourite editor:
nano .env
Required
  • TG_BOT_TOKEN: Telegram Bot API Token, obtain here

  • 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

  • APP_URL: app URL like https://<appname>.herokuapp.com/, required for webhook

  • PORT: port for webhook to listen to; Heroku sets this automatically for web dynos

  • BOTAN_TOKEN: Botan.io token

  • 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

  • GOOGL_API_KEY: Goo.gl URL shortener API key

Telegram Settings

Send the commands from filenames in telegram_settings dir to @BotFather, choose your bot and copy corresponding values in order to use the bot conveniently. Also disable privacy mode if you want to.

Running Locally

Using Heroku Local (preferred)

You will need Heroku CLI installed.

# For PyPI installs: first download Procfile:
curl -O 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
# For PyPI or Git source system-wide installs:
export $(cat .env | xargs)
scdlbot
# or just:
env $(cat .env | xargs) scdlbot

# For not-installed Git source repository directory:
export $(cat .env | xargs)
python -m scdlbot
# or just:
env $(cat .env | xargs) python -m scdlbot

Deploying to Heroku

Deploy

Register on Heroku, press the button above and configure variables for deploying. 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 (your own Heroku) installed on your own server. App is tested and fully ready for deployment with polling (no webhook yet). https://github.com/python-telegram-bot/python-telegram-bot/wiki/Webhooks#creating-a-self-signed-certificate-using-openssl

export DOKKU=<your_dokku_server>
scp .env $DOKKU:~
ssh $DOKKU
    export DOKKU=<your_dokku_server>
    dokku apps:create scdlbot
    dokku certs:generate scdlbot scdlbot.$DOKKU
    dokku config:set scdlbot $(cat .env | xargs)
    logout
git remote add dokku dokku@$DOKKU:scdlbot
git push dokku master
ssh $DOKKU
    dokku ps:scale scdlbot worker=1 web=0
    dokku ps:restart scdlbot

History

0.7.3 (2017-07-20)

  • orig_msg_id hotfix and don’t send chat action on every link

0.7.2 (2017-07-19)

  • Updated requirements

0.7.1 (2017-07-05)

  • Hotfix

0.7.0 (2017-07-05)

  • Travis CI, tests and docs from cookiecutter

0.6.3 (2017-07-04)

  • Back to bandcamp-dl and scdl and download timeouts

0.6.2 (2017-07-04)

  • Help message in groups now redirects to PM

0.6.1 (2017-07-03)

  • Async run of download/send command

  • Link command

0.6.0 (2017-07-02)

  • Added text files to sdist

  • Bandcamp and SoundCloud-widgets is now downloaded with youtube-dl

  • Supported parsing widgets from pages

  • Refactor

0.5.1 (2017-07-02)

  • New clutter command

  • Help refinements

  • Some fixes

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.

Source Distribution

scdlbot-0.7.3.tar.gz (27.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scdlbot-0.7.3-py3-none-any.whl (20.4 kB view details)

Uploaded Python 3

File details

Details for the file scdlbot-0.7.3.tar.gz.

File metadata

  • Download URL: scdlbot-0.7.3.tar.gz
  • Upload date:
  • Size: 27.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for scdlbot-0.7.3.tar.gz
Algorithm Hash digest
SHA256 2b67bde8cbcb520e9ca7011223d185ad55b72125cfad28eb530c6378218a8a33
MD5 6d79a545e389cabb2f3c8e922ad32076
BLAKE2b-256 cbebdb7ca0702df3c91ac08c4e4f013b0dc37d413d7020135c456d1397449122

See more details on using hashes here.

File details

Details for the file scdlbot-0.7.3-py3-none-any.whl.

File metadata

File hashes

Hashes for scdlbot-0.7.3-py3-none-any.whl
Algorithm Hash digest
SHA256 b994a4416d58b136774018d4d6ac43882fae8c38f94a286c845c31af8bec1ccb
MD5 5cafac0226ac71672e61a83f8bc53070
BLAKE2b-256 a57d7b6c4afc3d3d9049240f82b436063c2b3338bc25addf437de7b9332f55f7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page