Support two default running
The robot is running, and the command download
or forward
is issued from the robot
Download as a one-time download tool
After running, open a browser and visit
localhost:5000
If it is a remote machine, you need to configure web_host: 0.0.0.0
Need to configure bot_token, please refer to Documentation
Category | Support |
---|---|
Language | Python 3.7 and above |
Download media types | audio, document, photo, video, video_note, voice |
For *nix os distributions with make
availability
git clone https://github.com/tangyoha/telegram_media_downloader.git
cd telegram_media_downloader
make install
For Windows which doesn't have make
inbuilt
git clone https://github.com/tangyoha/telegram_media_downloader.git
cd telegram_media_downloader
pip3 install -r requirements.txt
For more detailed installation tutorial, please check the wiki
Make sure you have docker and docker-compose installed
docker pull tangyoha/telegram_media_downloader:latest
mkdir -p ~/app && mkdir -p ~/app/log/ && cd ~/app
wget https://raw.githubusercontent.com/tangyoha/telegram_media_downloader/master/docker-compose.yaml -O docker-compose.yaml
wget https://raw.githubusercontent.com/tangyoha/telegram_media_downloader/master/config.yaml -O config.yaml
wget https://raw.githubusercontent.com/tangyoha/telegram_media_downloader/master/data.yaml -O data.yaml
# vi config.yaml and docker-compose.yaml
vi config.yaml
# The first time you need to start the foreground
# enter your phone number and code, then exit(ctrl + c)
docker-compose run --rm telegram_media_downloader
# After performing the above operations, all subsequent startups will start in the background
docker-compose up -d
# Upgrade
docker pull tangyoha/telegram_media_downloader:latest
cd ~/app
docker-compose down
docker-compose up -d
cd telegram_media_downloader
pip3 install -r requirements.txt
All the configurations are passed to the Telegram Media Downloader via config.yaml
file.
Getting your API Keys: The very first step requires you to obtain a valid Telegram API key (API id/hash pair):
Getting chat id:
1. Using web telegram:
Now go to the chat/channel and you will see the URL as something like
https://web.telegram.org/?legacy=1#/im?p=u853521067_2449618633394
here 853521067
is the chat id.https://web.telegram.org/?legacy=1#/im?p=@somename
here somename
is the chat id.https://web.telegram.org/?legacy=1#/im?p=s1301254321_6925449697188775560
here take 1301254321
and add -100
to the start of the id => -1001301254321
.https://web.telegram.org/?legacy=1#/im?p=c1301254321_6925449697188775560
here take 1301254321
and add -100
to the start of the id => -1001301254321
.2. Using bot:
api_hash: your_api_hash
api_id: your_api_id
chat:
- chat_id: telegram_chat_id
last_read_message_id: 0
download_filter: message_date >= 2022-12-01 00:00:00 and message_date <= 2023-01-17 00:00:00
- chat_id: telegram_chat_id_2
last_read_message_id: 0
# note we remove ids_to_retry to data.yaml
ids_to_retry: []
media_types:
- audio
- document
- photo
- video
- voice
- animation #gif
file_formats:
audio:
- all
document:
- pdf
- epub
video:
- mp4
save_path: D:\telegram_media_downloader
file_path_prefix:
- chat_title
- media_datetime
upload_drive:
# required
enable_upload_file: true
# required
remote_dir: drive:/telegram
# required
upload_adapter: rclone
# option,when config upload_adapter rclone then this config are required
rclone_path: D:\rclone\rclone.exe
# option
before_upload_file_zip: True
# option
after_upload_file_delete: True
hide_file_name: true
file_name_prefix:
- message_id
- file_name
file_name_prefix_split: ' - '
max_download_task: 5
web_host: 127.0.0.1
web_port: 5000
language: EN
web_login_secret: 123
allowed_user_ids:
- 'me'
date_format: '%Y_%m'
enable_download_txt: false
chat_id
- The id of the chat/channel you want to download media. Which you get from the above-mentioned steps.download_filter
- Download filter, see How to use Filterlast_read_message_id
- If it is the first time you are going to read the channel let it be 0
or if you have already used this script to download media it will have some numbers which are auto-updated after the scripts successful execution. Don't change it.ids_to_retry
- Leave it as it is.
This is used by the downloader script to keep track of all skipped downloads so that it can be downloaded during the next execution of the script.audio
, document
and video
. Default format is all
, downloads all files.chat_title
- Channel or group title, it will be chat id if not exist title.media_datetime
- Media date.media_type
- Media type, also see media_types
.enable_upload_file
- Enable upload file, default false
.remote_dir
- Where you upload, like drive_id/drive_name
.upload_adapter
- Upload file adapter, which can be rclone
, aligo
. If it is rclone
, it supports all rclone
servers that support uploading. If it is aligo
, it supports uploading Ali cloud disk
.rclone_path
- RClone exe path, see How to use rclonebefore_upload_file_zip
- Zip file before upload, default false
.after_upload_file_delete
- Delete file after upload success, default false
.message_id
- Message idfile_name
- File name (may be empty)caption
- The title of the message (may be empty)-
false
EN
), optional ZH
(Chinese),RU
,UA
logging._nameToLevel
.false
python3 media_downloader.py
All downloaded media will be stored at the root of save_path
.
The specific location reference is as follows:
The complete directory of video download is: save_path
/chat_title
/media_datetime
/media_type
.
The order of the list is not fixed and can be randomly combined.
If the configuration is empty, all files are saved under save_path
.
socks4, socks5, http
proxies are supported in this project currently. To use it, add the following to the bottom of your config.yaml
file
proxy:
scheme: socks5
hostname: 127.0.0.1
port: 1234
username: your_username(delete the line if none)
password: your_password(delete the line if none)
If your proxy doesn’t require authorization you can omit username and password. Then the proxy will automatically be enabled.
Read through our contributing guidelines to learn about our submission process, coding rules and more.
Want to file a bug, contribute some code, or improve documentation? Excellent! Read up on our guidelines for contributing.
Help us keep Telegram Media Downloader open and inclusive. Please read and follow our Code of Conduct.