Download videos from Youtube and other platforms through a Telegram Bot
Find a file
Sanuja Seneviratne 829c62bf0e
yt-dlp's Python dependencies must be installed using the default group, beginning with 2024.11.04 release (#455)
* Bump yt-dlp from 2024.10.22 to 2024.11.04  #451

* yt-dlp's Python dependencies installing using the default group
2024-11-10 11:10:10 +01:00
.github fix README.md 2023-12-12 20:59:32 +01:00
assets Tron (#318) 2023-12-08 18:56:57 +01:00
conf deps 2024-01-09 19:37:19 +01:00
k8s Add K8S Deloyment and Readme 2022-12-03 20:52:37 +01:00
scripts Correct balance and transfer amount in TRX 2023-12-10 21:29:35 +01:00
ytdlbot disable buy 2024-09-26 18:14:34 +02:00
.dockerignore let's try pyrogram 2.x again 2023-12-17 14:11:19 +01:00
.gitignore limitations on premium download 2023-12-21 19:38:47 +01:00
app.json Update app.json (#279) 2023-08-12 16:46:29 +02:00
docker-compose.yml update text 2024-04-09 18:31:37 +02:00
Dockerfile use yt-dlp with commit hash 2024-03-01 21:45:05 +01:00
k8s.md token mode instead of vip mode 2023-04-08 12:50:04 +02:00
LICENSE Initial commit 2021-05-03 18:24:44 +08:00
Makefile hot patch container 2022-02-02 15:15:52 +08:00
Procfile update README.md, fix heroku 2022-01-02 22:27:34 +08:00
README.md Update README.md (#426) 2024-09-10 16:24:09 +02:00
requirements.txt yt-dlp's Python dependencies must be installed using the default group, beginning with 2024.11.04 release (#455) 2024-11-10 11:10:10 +01:00
worker.yml Pyrogram2 (#291) 2023-09-10 14:08:11 +02:00

ytdlbot

docker image

YouTube Download Bot🚀🎬⬇️

This Telegram bot allows you to download videos from YouTube and other supported websites.

Celery mode won't work and I don't know why. So I may shutting down this bot soon.

Usage

Just send a link directly to the bot.

Supported websites

  • YouTube 😅

  • Any websites supported by yt-dlp

    • Instagram (Videos, Photos, Reels, IGTV & carousel)
    • Pixeldrain
    • KrakenFiles
    • Terabox (file/folders) (you need to add cookies txt in ytdlbot folder with name) terabox.txt.

Features

  1. fast download and upload.
  2. ads free
  3. support progress bar
  4. audio conversion
  5. playlist download
  6. payment support: afdian, buy me a coffee, Telegram Payment and Tron(TRX)
  7. different video resolutions
  8. sending as file or streaming as video
  9. celery worker distribution - faster than before. NOT WORKING
  10. subscriptions to YouTube Channels
  11. cache mechanism - download once for the same video.
  12. instagram posts(only available for my bot)
  13. 4 GiB file size support with Telegram Premium
  14. History and inline mode support
  15. Supports multiple download engines (yt-dlp, aria2, requests).

Note

For users of my official bot
Files larger than 2 GiB will be automatically uploaded by me(My Premium Account). By utilizing our service for such downloads, you consent to this process.
That means I know who you are and what you download.
Rest assured that we handle your personal information with the utmost care.

Limitations

Due to limitations on servers and bandwidth, there are some restrictions on this free service.

  • Each user is limited to 10 free downloads per 24-hour period
  • Maximum of three subscriptions allowed for YouTube channels.
  • Files bigger than 2 GiB will require at least 1 download token.

If you need more downloads, you can buy download tokens.

Thank you for using the official bot.

Screenshots

Normal download

Instagram download

celery NOT WORKING

How to deploy?

This bot can be deployed on any platform that supports Python.

Run natively on your machine

To deploy this bot, follow these steps:

  1. Install bot dependencies

    • Install Python 3.10 or a later version, FFmpeg.
    • (optional)Aria2 and add it to the PATH.
  2. Clone the code from the repository and cd into it.

    • git clone https://github.com/tgbot-collection/ytdlbot
      
    • cd ytdlbot/
      
  3. Creating a virtual environment and installing required modules in Python.

    • python -m venv venv
      
    • source venv/bin/activate   # Linux
      #or
      .\venv\Scripts\activate   # Windows
      
    • pip install --upgrade pip
      
    • pip install -r requirements.txt
      
  4. Set the environment variables TOKEN, APP_ID, APP_HASH, and any others that you may need.

    • Change values in ytdlbot/config.py or
    • Use export APP_ID=111 APP_HASH=111 TOKEN=123
  5. Finally, run the bot with

    • python ytdlbot/ytdl_bot.py
      

Docker

One line command to run the bot

docker run -e APP_ID=111 -e APP_HASH=111 -e TOKEN=370FXI bennythink/ytdlbot

Heroku

Deploy to heroku

Deploy to Heroku

If you are having trouble deploying, you can fork the project to your personal account and deploy it from there.

Starting November 28, 2022, free Heroku Dynos, free Heroku Postgres, and free Heroku Data for Redis® plans will no longer be available. Heroku Announcement

Complete deployment guide for docker-compose

  • contains every functionality
  • compatible with amd64 and arm64

1. get docker-compose.yml

Download docker-compose.yml file to a directory

2. create data directory

mkdir data
mkdir env

3. configuration

3.1. set environment variables

vim env/ytdl.env

You can configure all the following environment variables:

  • WORKERS: workers count for celery NOT WORKING
  • PYRO_WORKERS: number of workers for pyrogram, default is 100
  • APP_ID: REQUIRED, get it from https://core.telegram.org/
  • APP_HASH: REQUIRED
  • TOKEN: REQUIRED
  • REDIS: REQUIRED if you need VIP mode and cache ⚠️ Don't publish your redis server on the internet. ⚠️
  • EXPIRE: token expire time, default: 1 day
  • ENABLE_VIP: enable VIP mode
  • OWNER: owner username
  • AUTHORIZED_USER: only authorized users can use the bot
  • REQUIRED_MEMBERSHIP: group or channel username, user must join this group to use the bot
  • ENABLE_CELERY: celery mode, default: disable NOT WORKING
  • BROKER: celery broker, should be redis://redis:6379/0 NOT WORKING
  • MYSQL_HOST:MySQL host
  • MYSQL_USER: MySQL username
  • MYSQL_PASS: MySQL password
  • AUDIO_FORMAT: default audio format
  • ARCHIVE_ID: forward all downloads to this group/channel
  • IPv6 = os.getenv("IPv6", False)
  • ENABLE_FFMPEG = os.getenv("ENABLE_FFMPEG", False)
  • PROVIDER_TOKEN: stripe token on Telegram payment
  • PLAYLIST_SUPPORT: download playlist support
  • M3U8_SUPPORT: download m3u8 files support
  • ENABLE_ARIA2: enable aria2c download
  • FREE_DOWNLOAD: free download count per day
  • TOKEN_PRICE: token price per 1 USD
  • GOOGLE_API_KEY: YouTube API key, required for YouTube video subscription.
  • RCLONE_PATH: rclone path to upload files to cloud storage
  • TMPFILE_PATH: tmpfile path(file download path)
  • TRONGRID_KEY: TronGrid key, better use your own key to avoid rate limit
  • TRON_MNEMONIC: Tron mnemonic, the default one is on nile testnet.
  • PREMIUM_USER: premium user ID, it can help you to download files larger than 2 GiB

3.2 Set up init data

If you only need basic functionality, you can skip this step.

3.2.1 Create MySQL db

Required for VIP(Download token), settings, YouTube subscription.

docker-compose up -d
docker-compose exec mysql bash

mysql -u root -p

> create database ytdl;

3.2.2 Setup flower db in ytdlbot/ytdlbot/data

Required if you enable celery and want to monitor the workers. NOT WORKING

{} ~ python3
Python 3.9.9 (main, Nov 21 2021, 03:22:47)
[Clang 12.0.0 (clang-1200.0.32.29)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import dbm;dbm.open("flower","n");exit()

3.3 Tidy docker-compose.yml

In flower service section, you may want to change your basic authentication username password and publish port.

You can also limit CPU and RAM usage by adding a deploy key, use --compatibility when deploying.

    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 1500M

4. run

4.1. standalone mode

If you only want to run the mode without any celery worker and VIP mode, you can just start ytdl service

docker-compose up -d ytdl

4.2 VIP mode

You'll have to start MySQL and redis to support VIP mode, subscription and settings.

docker-compose up -d mysql redis ytdl

4.3 Celery worker mode

NOT WORKING Firstly, set ENABLE_CELERY to true. And then, on one machine:

docker-compose up -d

On the other machine:

docker-compose -f worker.yml up -d

⚠️ You should not publish Redis directly on the internet. ⚠️

4.4 4 GiB Support

  1. Subscribe to Telegram Premium
  2. Setup user id PREMIUM_USER in ytdl.env
  3. Create session file by running python premium.py
  4. Copy the session file premium.session to data directory
  5. docker-compose up -d premium

kubernetes

refer guide here kubernetes

Command

start - Let's start
about - What's this bot?
help - Help
spdl - Use to download specific link downloader links
ytdl - Download video in group
leech - Download file using aria2
direct - Download file using requests
settings - Set your preference
buy - Buy token
sub - Subscribe to YouTube Channel
unsub - Unsubscribe from YouTube Channel
sub_count - Check subscription status, owner only.
uncache - Delete cache for this link, owner only.
purge - Delete all tasks, owner only.
ping - Ping the Bot
stats - Bot running status
show_history - Show download history
clear_history - Clear download history

Test data

Tap to expand

Test video

https://www.youtube.com/watch?v=BaW_jenozKc

Test Playlist

https://www.youtube.com/playlist?list=PL1Hdq7xjQCJxQnGc05gS4wzHWccvEJy0w

Test twitter

https://twitter.com/nitori_sayaka/status/1526199729864200192 https://twitter.com/BennyThinks/status/1475836588542341124

Test instagram

Test Pixeldrain

https://pixeldrain.com/u/765ijw9i

Test KrakenFiles

https://krakenfiles.com/view/oqmSTF0T5t/file.html

Test TeraBox

https://terabox.com/s/1mpgNshrZVl6KuH717Hs23Q


Donation

Found this bot useful? You can donate to support the development of this bot.

Donation Platforms

Stripe

You can choose to donate via Stripe.

USD(Card, Apple Pay and Google Pay) CNY(Card, Apple Pay, Google Pay and Alipay)
USD CNY

Cryptocurrency

TRX or USDT(TRC20)

TF9peZjC2FYjU4xNMPg3uP4caYLJxtXeJS

License

Apache License 2.0