Package: scdlbot
Telegram Bot for downloading MP3 rips of tracks/sets from
SoundCloud, Bandcamp, YouTube with tags and artwork.Free software:MIT LicenseDocumentation:https://scdlbot.readthedocs.ioContentsscdlbot Usage in TelegramSupported sites and mainly used packagesRun your own scdlbotInstallation & ConfigurationRunning Locally or at Dedicated ServerDeploying to HerokuDeploying to Dokkuscdlbot Usage in TelegramSend/startor/helpcommand to bot
or refer directly to thehelp message.Please report all bugs and issues and suggest your improvements
toissues.Supported sites and mainly used packagesscdlbot is standing on the shoulders of giants:Telegram Bot API:python-telegram-botSoundCloud:scdlBandcamp:bandcamp-dlYouTube,Yandex.Music,Mixcloud, and almosteverything from this list:yt-dlpRun your own scdlbotInstallation & ConfigurationRequirementsThose should be available in yourPATH:Python 3.9+(pyenvandpoetryare recommended)FFmpeg 4.0+if not running on Heroku
(fresh builds forWindows,macOSandLinuxare recommended)Heroku CLIis recommended if you want to deploy to HerokuInstall / Update stable fromPyPI(recommended)pip3 install scdlbot --upgrade…or get unstable fromGit source repositorygit clone https://github.com/gpchelkin/scdlbot.git
cd scdlbot
pip3 install --requirement requirements.txt

# Update:
git pull
pip3 install --requirement requirements.txtConfigure BotDownload or copy configuration file sample and set up
config environment variables in it:# If you've installed from PyPI - download sample config somewhere:
curl -o .env https://raw.githubusercontent.com/gpchelkin/scdlbot/master/.env.sample

# If you've got Git source - just copy sample config:
cp .env.sample .env

# Use your favourite editor. Sample config is self-documented:
nano .envTelegram Bot SettingsSend the commands from respective filenames intelegram_settingsdir to@BotFather, choose your bot and copy corresponding values in order to use the bot conveniently.
Disable privacy mode if you want bot to read and check every message in group for links.
Otherwise, it would work only for commands.Running Locally or at Dedicated ServerUsingHeroku Local(preferred)You will needHeroku CLIinstalled.# If you've installed from PyPI - download Procfile first (otherwise already present in Git repository):
curl -O https://raw.githubusercontent.com/gpchelkin/scdlbot/master/Procfile

# For long polling mode (when WEBHOOK_ENABLE=0):
heroku local -e .env worker
# For webhook mode (when WEBHOOK_ENABLE=1):
heroku local -e .env webUsing Python onlyexport $(grep -v '^#' .env | xargs)
python3 -m scdlbot
# or in one line:
env $(grep -v '^#' .env | xargs) python3 -m scdlbot

# If you've installed package from PyPI into the system,
# you can also replace 'python3 -m scdlbot' with only 'scdlbot'Deploying toHerokuRegister on Heroku, press the button above and
configure variables for deploying.
When app is deployed youmustset only one dyno working on
“Resources” tab in your app settings depending onwhich way of getting
updatesyou have
chosen and set in config variables:workerfor polling orwebfor webhook.ManuallyYou can do the same as the button above but usingHeroku
CLI, not as much of a fun. Assuming you are inscdlbotrepository directory:heroku login
# Create app with Python 3 buildpack and set it for upcoming builds:
heroku create --buildpack heroku/python
heroku buildpacks:set heroku/python
# Add FFmpeg buildpack needed for youtube-dl & scdl:
heroku buildpacks:add --index 1 https://github.com/jonathanong/heroku-buildpack-ffmpeg-latest.git --app scdlbot
# Deploy app to Heroku:
git push heroku master
# Set config vars automatically from your local .env file
heroku plugins:install heroku-config
heroku config:push
# Or set them manually:
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 workerIf you use polling, start worker dyno and stop web dyno:heroku ps:scale worker=1 web=0
heroku ps:stop webSome useful commands:# Attach to logs:
heroku logs -t
# Test run ffprobe
heroku run "ffprobe -version"Deploying toDokkuUse 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/dokku/dokku-letsencryptexport 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