This commit is contained in:
BennyThink 2021-08-29 10:19:49 +08:00
parent 6d51e3e5c1
commit 78e5ed8568
No known key found for this signature in database
GPG Key ID: 6CD0DBDA5235D481
5 changed files with 110 additions and 30 deletions

1
.gitignore vendored
View File

@ -140,3 +140,4 @@ dmypy.json
/*.sqlite /*.sqlite
/.idea/dataSources.xml /.idea/dataSources.xml
/.idea/sqldialects.xml /.idea/sqldialects.xml
/.idea/.gitignore

8
.idea/.gitignore vendored
View File

@ -1,8 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/

View File

@ -1,39 +1,97 @@
# ytdl-bot # ytdlbot
YouTube Download🚀
Download videos from YouTube and other platforms through a Telegram Bot Download videos from YouTube and other platforms through a Telegram Bot
[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy) [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy)
# Usage: # Usage
[https://t.me/benny_ytdlbot](https://t.me/benny_ytdlbot) [https://t.me/benny_ytdlbot](https://t.me/benny_ytdlbot)
Send link from YouTube directly to the bot. Send link directly to the bot. Any
Any platform [supported by youtube-dl](https://ytdl-org.github.io/youtube-dl/supportedsites.html) will also work. platform [supported by youtube-dl](https://ytdl-org.github.io/youtube-dl/supportedsites.html) will also work.
## Limitation of my bot
Because I have limited resources, hundreds of Gigabytes doesn't sound like a sustainable solution.
**In that case, I added one limitation: 5GiB per 24 hours for each user. Might change in future**
You can choose to become 'VIP' if you really need large traffic. And also, you could always deploy your own bot.
# Features
# Feature
![](assets/1.jpeg) ![](assets/1.jpeg)
1. fast download and upload. Many thanks to [FastTelethon](https://gist.github.com/painor/7e74de80ae0c819d3e9abcf9989a8dd6) and 1. fast download and upload.
[JasonKhew96](https://github.com/JasonKhew96)'s contribution on this! 2. ads free
2. ads free - I'll never send ads to you, also I don't even print logs that will identify you.
So feel free to download any type of video from any website.
3. support progress bar 3. support progress bar
4. audio conversion
5. playlist support
6. VIP support
# How to deploy? # How to deploy?
## Normal ## Normal
1. clone code and update submodule `git submodule update --init --recursive`
1. clone code
2. install ffmpeg 2. install ffmpeg
3. install Python 3.6+ 3. install Python 3.6+
4. pip3 install -r requirements.txt 4. pip3 install -r requirements.txt
5. set environment variables `TOKEN`, `APP_ID` and `APP_HASH` 5. set environment variables `TOKEN`, `APP_ID` and `APP_HASH`, and more if you like.
6. `python3 bot.py` 6. `python3 ytdl.py`
7. supervisor on your own preference.
## docker ## docker
see [here](https://github.com/tgbot-collection/BotsRunner)
Compatible with amd64, arm64 and armv7l
### 1. get docker-compose.yml
Download this file to a directory, for example `~/ytdl/docker-compose.yml`
### 2. create VIP database
```shell
mkdir ~/ytdl/data/
touch ~/ytdl/data/vip.sqlite
```
### 3. create env file
```shell
mkdir ~/ytdl/env/
vim ~/ytdl/env/ytdl.env
```
you can configure all the following environment variables:
* APP_ID: **REQUIRED**
* APP_HASH: **REQUIRED**
* TOKEN: **REQUIRED**
* REDIS: **REQUIRED**
* OWNER: owner username
* QUOTA: quota in bytes
* EX: quota expire time
* MULTIPLY: vip quota comparing to normal quota
* USD2CNY: exchange rate
* VIP: enable VIP or not, default: disable
* AFD_LINK
* COFFEE_LINK
* COFFEE_TOKEN
* AFD_TOKEN
* AFD_USER_ID
* WORKERS: default 100
### 4. run
```
docker-compose up -d
```
# Command # Command
``` ```
start - Let's start start - Let's start
about - Want to contribute? about - Want to contribute?
@ -45,10 +103,13 @@ terms - View Terms of Service
``` ```
# Test video # Test video
https://www.youtube.com/watch?v=BaW_jenozKc https://www.youtube.com/watch?v=BaW_jenozKc
# Test Playlist # Test Playlist
https://www.youtube.com/playlist?list=PL1Hdq7xjQCJxQnGc05gS4wzHWccvEJy0w https://www.youtube.com/playlist?list=PL1Hdq7xjQCJxQnGc05gS4wzHWccvEJy0w
# License # License
Apache License 2.0 Apache License 2.0

View File

@ -9,15 +9,15 @@ __author__ = "Benny <benny.think@gmail.com>"
import os import os
QUOTA = 5 * 1024 * 1024 * 1024 # 5G QUOTA = os.getenv("QUOTA", 5 * 1024 * 1024 * 1024) # 5G
if os.uname().sysname == "Darwin": if os.uname().sysname == "Darwin":
QUOTA = 10 * 1024 * 1024 # 10M QUOTA = 10 * 1024 * 1024 # 10M
EX = 24 * 3600 EX = os.getenv("EX", 24 * 3600)
MULTIPLY = 5 # VIP1 is 5*5-25G, VIP2 is 50G MULTIPLY = os.getenv("MULTIPLY", 5) # VIP1 is 5*5-25G, VIP2 is 50G
USD2CNY = 6 # $5 --> ¥30 USD2CNY = os.getenv("USD2CNY", 6) # $5 --> ¥30
ENABLE_VIP = False ENABLE_VIP = os.getenv("VIP", False)
AFD_LINK = os.getenv("AFD_LINK", "https://afdian.net/@BennyThink") AFD_LINK = os.getenv("AFD_LINK", "https://afdian.net/@BennyThink")
COFFEE_LINK = os.getenv("COFFEE_LINK", "https://www.buymeacoffee.com/bennythink") COFFEE_LINK = os.getenv("COFFEE_LINK", "https://www.buymeacoffee.com/bennythink")
COFFEE_TOKEN = os.getenv("COFFEE_TOKEN") COFFEE_TOKEN = os.getenv("COFFEE_TOKEN")

26
docker-compose.yml Normal file
View File

@ -0,0 +1,26 @@
version: '3.1'
services:
socat:
image: jmb12686/socat
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
entrypoint: [ "socat", "tcp-listen:2375,fork,reuseaddr","unix-connect:/var/run/docker.sock" ]
redis:
image: redis:alpine
restart: always
logging:
driver: none
ytdl:
image: bennythink/ytdlbot
env_file:
- env/ytdl.env
volumes:
- ./data/vip.sqlite:/ytdlbot/vip.sqlite
restart: always
depends_on:
- socat
- redis