Giter Club home page Giter Club logo

yt-dlp-telegram-bot's Introduction

yt-dlp-telegram-bot

This bot downloads videos from various supported sources (see yt-dlp) and then re-uploads them to Telegram, so they can be viewed with Telegram's built-in video player.

The bot displays the progress and further information during processing by responding to the message with the URL. Requests are queued, only one gets processed at a time.

The bot uses the Telegram MTProto API, which supports larger video uploads than the default 50MB with the standard Telegram bot API. Videos are not saved on disk. Incompatible video and audio streams are automatically converted to match those which are supported by Telegram's built-in video player.

The only dependencies are yt-dlp and ffmpeg. Tested on Linux, but should be able to run on other operating systems.

Compiling

You'll need Go installed on your computer. Install a recent package of golang. Then:

go get github.com/nonoo/yt-dlp-telegram-bot
go install github.com/nonoo/yt-dlp-telegram-bot

This will typically install yt-dlp-telegram-bot into $HOME/go/bin.

Or just enter go build in the cloned Git source repo directory.

Prerequisites

  1. Create a Telegram bot using BotFather and get the bot's token.
  2. Get your Telegram API Keys (api_id and api_hash). You'll need to create an app if you haven't created one already. Description is optional, set the category to "other". If an error dialog pops up, then try creating the app using your phone's browser.
  3. Make sure yt-dlp, ffprobe and ffmpeg commands are available on your system.

Running

You can get the available command line arguments with -h. Mandatory arguments are:

  • -api-id: set this to your Telegram app api_id
  • -api-hash: set this to your Telegram app api_hash
  • -bot-token: set this to your Telegram bot's token

Set your Telegram user ID as an admin with the -admin-user-ids argument. Admins will get a message when the bot starts and when a newer version of yt-dlp is available (checked every 24 hours).

Other user/group IDs can be set with the -allowed-user-ids and -allowed-group-ids arguments. IDs should be separated by commas.

You can get Telegram user IDs by writing a message to the bot and checking the app's log, as it logs all incoming messages.

You can set a max. upload file size limit with the -max-size argument. Example: -max-size 512MB

All command line arguments can be set through OS environment variables. Note that using a command line argument overwrites a setting by the environment variable. Available OS environment variables are:

  • API_ID
  • API_HASH
  • BOT_TOKEN
  • YTDLP_PATH
  • ALLOWED_USERIDS
  • ADMIN_USERIDS
  • ALLOWED_GROUPIDS
  • MAX_SIZE
  • YTDLP_COOKIES

The contents of the YTDLP_COOKIES environment variable will be written to the file /tmp/ytdlp-cookies.txt. This will be used by yt-dlp if it is running in a docker container, as the yt-dlp.conf file in the container points to this cookie file.

Supported commands

  • /dlp - Download given URL. If the first attribute is "mp3" then only the audio stream will be downloaded and converted (if needed) to 320k MP3
  • /dlpcancel - Cancel ongoing download

You don't need to enter the /dlp command if you send an URL to the bot using a private chat.

Contributors

Donations

If you find this bot useful then buy me a beer. :)

yt-dlp-telegram-bot's People

Contributors

nonoo avatar truulob avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.