{"id":13908148,"url":"https://github.com/gpchelkin/scdlbot","last_synced_at":"2025-04-13T21:23:17.668Z","repository":{"id":18646139,"uuid":"49326093","full_name":"gpchelkin/scdlbot","owner":"gpchelkin","description":"Telegram Bot for downloading MP3 rips of tracks/sets from SoundCloud, Bandcamp, YouTube with tags and artwork.","archived":false,"fork":false,"pushed_at":"2025-04-04T09:32:08.000Z","size":3097,"stargazers_count":370,"open_issues_count":18,"forks_count":172,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-04-06T19:01:35.479Z","etag":null,"topics":["audio","bandcamp","bot","download","music","python","soundcloud","telegram","youtube"],"latest_commit_sha":null,"homepage":"https://t.me/scdlbot","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gpchelkin.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.rst","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.rst","dei":null,"publiccode":null,"codemeta":null},"funding":{"ko_fi":"gpchelkin","custom":["buymeacoffee.com/gpchelkin","tinkoff.ru/rm/pchelkin.georgiy1/wlqpS10725","yoomoney.ru/to/41001421333857"]}},"created_at":"2016-01-09T13:53:14.000Z","updated_at":"2025-04-03T15:17:55.000Z","dependencies_parsed_at":"2023-12-24T19:25:46.692Z","dependency_job_id":"ff69a81e-0e2b-4dfe-872e-12f58a2144f0","html_url":"https://github.com/gpchelkin/scdlbot","commit_stats":{"total_commits":1175,"total_committers":12,"mean_commits":97.91666666666667,"dds":0.6314893617021277,"last_synced_commit":"09ab4d097e13ee6e5d3ab44f4a9845a46cebbdbc"},"previous_names":[],"tags_count":75,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gpchelkin%2Fscdlbot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gpchelkin%2Fscdlbot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gpchelkin%2Fscdlbot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gpchelkin%2Fscdlbot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gpchelkin","download_url":"https://codeload.github.com/gpchelkin/scdlbot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248783548,"owners_count":21160950,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","bandcamp","bot","download","music","python","soundcloud","telegram","youtube"],"created_at":"2024-08-06T23:02:30.127Z","updated_at":"2025-04-13T21:23:17.642Z","avatar_url":"https://github.com/gpchelkin.png","language":"Python","funding_links":["https://ko-fi.com/gpchelkin","buymeacoffee.com/gpchelkin","tinkoff.ru/rm/pchelkin.georgiy1/wlqpS10725","yoomoney.ru/to/41001421333857"],"categories":["HarmonyOS","Python"],"sub_categories":["Windows Manager"],"readme":"Music Downloader Telegram Bot aka scdlbot\n=========================================\n\n\n.. image:: https://img.shields.io/badge/telegram-@scdlbot-blue.svg\n        :target: https://t.me/scdlbot\n        :alt: Telegram Bot\n\n.. image:: https://img.shields.io/github/license/gpchelkin/scdlbot.svg\n        :target: https://github.com/gpchelkin/scdlbot/blob/master/LICENSE\n        :alt: MIT License\n\n.. image:: https://readthedocs.org/projects/scdlbot/badge/?version=latest\n        :target: https://scdlbot.readthedocs.io/\n        :alt: Documentation Status\n\n.. image:: https://img.shields.io/pypi/v/scdlbot.svg\n        :target: https://pypi.org/project/scdlbot\n        :alt: PyPI Version\n\n.. image:: https://img.shields.io/endpoint?url=https://python-poetry.org/badge/v0.json\n        :target: https://python-poetry.org/\n        :alt: Poetry\n\n.. image:: https://github.com/gpchelkin/scdlbot/workflows/build/badge.svg?branch=master\u0026event=push\n        :target: https://github.com/gpchelkin/scdlbot/actions/workflows/build.yml\n        :alt: GitHub Actions Build Status\n\n.. image:: https://github.com/gpchelkin/scdlbot/actions/workflows/codeql-analysis.yml/badge.svg?branch=master\u0026event=push\n        :target: https://github.com/gpchelkin/scdlbot/actions/workflows/codeql-analysis.yml\n        :alt: GitHub Actions CodeQL Status\n\n.. image:: https://deepsource.io/gh/gpchelkin/scdlbot.svg/?label=active+issues\u0026show_trend=true\n        :target: https://deepsource.io/gh/gpchelkin/scdlbot/?ref=repository-badge\n        :alt: DeepSource Active Issues\n\n.. image:: https://deepsource.io/gh/gpchelkin/scdlbot.svg/?label=resolved+issues\u0026show_trend=true\n        :target: https://deepsource.io/gh/gpchelkin/scdlbot/?ref=repository-badge\n        :alt: DeepSource Resolved Issues\n\n.. image:: https://codeclimate.com/github/gpchelkin/scdlbot/badges/issue_count.svg\n        :target: https://codeclimate.com/github/gpchelkin/scdlbot\n        :alt: Code Climate Issue Count\n\n.. image:: https://api.codacy.com/project/badge/Grade/7dfb6d8e7a094987b303e9283fc7368c\n        :target: https://app.codacy.com/gh/gpchelkin/scdlbot\n        :alt: Codacy Build Status\n\n.. image:: https://codebeat.co/badges/57243b9d-2269-4f31-a35b-6aedd11626d2\n        :target: https://codebeat.co/projects/github-com-gpchelkin-scdlbot-master\n        :alt: Codebeat Quality\n\n.. image:: https://www.codefactor.io/repository/github/gpchelkin/scdlbot/badge\n        :target: https://www.codefactor.io/repository/github/gpchelkin/scdlbot\n        :alt: CodeFactor\n\nTelegram Bot for downloading MP3 rips of tracks/sets from\nSoundCloud, Bandcamp, YouTube with tags and artwork.\n\n\n* Free software: `MIT License \u003chttps://github.com/gpchelkin/scdlbot/blob/master/LICENSE\u003e`__\n* Documentation: https://scdlbot.readthedocs.io\n\n\n.. contents:: :depth: 2\n\n\nscdlbot Usage in Telegram\n-------------------------\n\nSend ``/start`` or ``/help`` command to bot\nor refer directly to the `help message \u003cscdlbot/texts/help.tg.md\u003e`__.\n\nPlease report all bugs and issues and suggest your improvements\nto `issues \u003chttps://github.com/gpchelkin/scdlbot/issues\u003e`__.\n\nSupported sites and mainly used packages\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nscdlbot is standing on the shoulders of giants:\n\n-  `Telegram Bot API \u003chttps://core.telegram.org/bots/api\u003e`__:\n   `python-telegram-bot \u003chttps://github.com/python-telegram-bot/python-telegram-bot\u003e`__\n-  `SoundCloud \u003chttps://soundcloud.com\u003e`__:\n   `scdl \u003chttps://github.com/flyingrub/scdl\u003e`__\n-  `Bandcamp \u003chttps://bandcamp.com\u003e`__:\n   `bandcamp-dl \u003chttps://github.com/iheanyi/bandcamp-dl\u003e`__\n-  `YouTube \u003chttps://www.youtube.com/\u003e`__, `Yandex.Music \u003chttps://music.yandex.com/\u003e`__,\n   `Mixcloud \u003chttps://www.mixcloud.com/\u003e`__, and almost `everything from this list \u003chttps://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md\u003e`__:\n   `yt-dlp \u003chttps://github.com/yt-dlp/yt-dlp\u003e`__\n\nRun your own scdlbot\n--------------------\n\nInstallation \u0026 Configuration\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nRequirements\n\"\"\"\"\"\"\"\"\"\"\"\"\n\nThose should be available in your ``PATH``:\n\n-  `Python 3.10+ \u003chttps://www.python.org\u003e`__\n   (`pyenv \u003chttps://github.com/pyenv/pyenv\u003e`__ and `poetry \u003chttps://python-poetry.org/\u003e`__ are recommended)\n-  `yt-dlp strongly recommended dependencies \u003chttps://github.com/yt-dlp/yt-dlp#strongly-recommended\u003e`__, including:\n-  `FFmpeg 6.1+ \u003chttps://ffmpeg.org/download.html\u003e`__ (in your `$PATH`) (if not running on Heroku/Render)\n\n   -  `yt-dlp patched builds are highly recommended \u003chttps://github.com/yt-dlp/FFmpeg-Builds\u003e`__\n   -  otherwise these fresh builds are recommended:\n      `Linux \u003chttps://johnvansickle.com/ffmpeg/\u003e`__,\n      `macOS \u003chttps://evermeet.cx/ffmpeg/\u003e`__,\n      `Windows \u003chttps://www.gyan.dev/ffmpeg/builds/#release-builds\u003e`__.\n-  `Heroku CLI \u003chttps://cli.heroku.com\u003e`__ is recommended if you want to deploy to Heroku\n\nInstall / Update stable build from `PyPI \u003chttps://pypi.org/project/scdlbot\u003e`__ (recommended)\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\n::\n\n    pip install --upgrade scdlbot\n\n...or get latest unstable build from `Git source repository \u003chttps://github.com/gpchelkin/scdlbot\u003e`__\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\n::\n\n    git clone https://github.com/gpchelkin/scdlbot.git\n    cd scdlbot\n    pip install --editable \"./\"\n\n    # or just install directly from Git with pip:\n    pip install \"scdlbot @ git+https://github.com/gpchelkin/scdlbot.git@master\"\n\n\nConfigure Bot\n\"\"\"\"\"\"\"\"\"\"\"\"\"\n\nDownload or copy configuration file sample and set up\nconfig environment variables in it:\n\n::\n\n    # Skip if you've got Git source:\n    curl -o .env.sample https://raw.githubusercontent.com/gpchelkin/scdlbot/master/.env.sample\n\n    cp .env.sample .env\n    # Use your favourite editor. Sample config is self-documented:\n    nano .env\n\nTelegram Bot Settings\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\nSend the commands from respective filenames in ``telegram_settings`` dir to `@BotFather \u003chttps://t.me/BotFather\u003e`__, choose your bot and copy corresponding values in order to use the bot conveniently.\nDisable privacy mode if you want bot to read and check every message in group for links.\nOtherwise, it would work only for commands.\n\nRunning Locally or on Dedicated Server\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nUsing `Heroku Local \u003chttps://devcenter.heroku.com/articles/heroku-local#run-your-app-locally-using-the-heroku-local-command-line-tool\u003e`__\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\nYou will need `Heroku CLI \u003chttps://cli.heroku.com/\u003e`__ installed.\n\n::\n\n    # Skip if you've got Git source:\n    curl -O https://raw.githubusercontent.com/gpchelkin/scdlbot/master/Procfile\n\n    # For long polling mode (if WEBHOOK_ENABLE=\"0\"):\n    heroku local -e .env worker\n    # For webhook mode (if WEBHOOK_ENABLE=\"1\"):\n    heroku local -e .env web\n\nUsing only Bash \u0026 Python\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\n::\n\n    export $(grep -v '^#' .env | xargs)\n    python -m scdlbot\n    # or in one line:\n    env $(grep -v '^#' .env | xargs) python -m scdlbot\n\n    # If you've installed package into your system Python,\n    # you can also replace 'python -m scdlbot' with just 'scdlbot'\n    # If you use Windows, you _have_ to replace 'python -m scdlbot' with just 'scdlbot'.\n\nDeploying to `Heroku \u003chttps://www.heroku.com\u003e`__\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n|Deploy|\n\nRegister on Heroku, press the Deploy button above and\nconfigure variables for deploying.\nWhen app is deployed you **must** set only one dyno working on\n\"Resources\" tab in your app settings depending on `which way of getting\nupdates \u003chttps://core.telegram.org/bots/api#getting-updates\u003e`__ you have\nchosen and set in config variables: ``worker`` for polling or ``web``\nfor webhook.\n\nManually\n\"\"\"\"\"\"\"\"\n\nYou can do the same as the button above but using `Heroku\nCLI \u003chttps://cli.heroku.com/\u003e`__. Assuming you are in\n``scdlbot`` Git repository directory:\n\n::\n\n    # Log into Heroku:\n    heroku login\n    # Create app with Python 3 buildpack and set it for upcoming builds:\n    heroku create --buildpack heroku/python myscdlbot\n    #heroku buildpacks:set heroku/python --app=myscdlbot\n    # Add FFmpeg buildpack needed for youtube-dl \u0026 scdl:\n    heroku buildpacks:add --index 1 https://github.com/gpchelkin/heroku-buildpack-ffmpeg-latest.git --app=myscdlbot\n    # Set config vars automatically from your local .env file:\n    heroku plugins:install heroku-config\n    heroku config:push --file=.env --app=myscdlbot\n    # or set them manually like this:\n    heroku config:set TG_BOT_TOKEN=\"\u003cTG_BOT_TOKEN\u003e\" TG_BOT_OWNER_CHAT_ID=\"\u003cTG_BOT_OWNER_CHAT_ID\u003e\" ...\n    # Deploy app to Heroku:\n    #heroku git:remote --app=myscdlbot\n    git push heroku master\n\nThen, if you want to use webhook, start web dyno and stop worker dyno:\n\n::\n\n    heroku ps:scale web=1 worker=0\n    heroku ps:stop worker\n\nIf you want to use polling, start worker dyno and stop web dyno:\n\n::\n\n    heroku ps:scale worker=1 web=0\n    heroku ps:stop web\n\nSome useful commands:\n\n::\n\n    # Attach to logs:\n    heroku logs -t\n    # Test run ffprobe\n    heroku run \"ffprobe -version\"\n\nDeploying to `Dokku \u003chttps://github.com/dokku/dokku\u003e`__\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nUse Dokku (your own Heroku) installed on your own server.\nApp is tested and fully ready for deployment with polling\n(no webhook yet).\nhttps://github.com/dokku/dokku-letsencrypt\n\n::\n\n    export DOKKU=\u003cyour_dokku_server\u003e\n    scp .env $DOKKU:~\n    ssh $DOKKU\n        export DOKKU=\u003cyour_dokku_server\u003e\n        dokku apps:create scdlbot\n        dokku certs:generate scdlbot scdlbot.$DOKKU\n        dokku config:set scdlbot $(cat .env | xargs)\n        logout\n    git remote add dokku dokku@$DOKKU:scdlbot\n    git push dokku master\n    ssh $DOKKU\n        dokku ps:scale scdlbot worker=1 web=0\n        dokku ps:restart scdlbot\n\n.. |Deploy| image:: https://www.herokucdn.com/deploy/button.svg\n    :target: https://heroku.com/deploy\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgpchelkin%2Fscdlbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgpchelkin%2Fscdlbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgpchelkin%2Fscdlbot/lists"}