Aria/qBittorrent Telegram Mirror Bot With Additional Features
Go to file
Shivam Jha 641197bbca
Force httplib2 to v0.15.0
The new version breaks, google's client api. Force it to use older version until google fixes their shit
2020-01-17 00:20:29 -08:00
bot Set logging level to debug 2020-01-16 10:46:50 -08:00
.gitignore Read setup variables from environment variables 2019-12-09 15:34:12 +05:30
Dockerfile give execution permissions to aria.sh 2020-01-01 10:44:39 +05:30
LICENSE License source under GPL v3 2019-09-29 17:24:51 +05:30
README.md Drop official support for heroku 2020-01-10 17:29:12 +05:30
aria.bat Specify Download Dir with RPC 2019-09-18 11:48:19 -04:00
aria.sh Project Rebase 2019-12-23 13:26:32 +05:30
captain-definition Fix caprover file 2019-12-24 17:31:50 +05:30
config_sample.env Fixed Folder upload to Team Drives 2019-12-24 21:11:33 +05:30
generate_drive_token.py Fixed files not being shown which were not uploaded by bot 2019-12-26 14:47:05 +05:30
requirements.txt Force httplib2 to v0.15.0 2020-01-17 00:20:29 -08:00
start.sh Project Rebase 2019-12-23 13:26:32 +05:30

What is this repo about?

This is a telegram bot writen in python for mirroring files on the internet to our beloved Google Drive.

Inspiration

This project is heavily inspired from @out386 's telegram bot which is written in JS.

Features supported:

  • Mirroring direct download links to google drive
  • Download progress
  • Upload progress
  • Download/upload speeds and ETAs
  • Docker support
  • Uploading To Team Drives.
  • Index Link support

Upcoming features (TODOs):

  • Mirror from Telegram files

How to deploy?

Deploying is pretty much straight forward and is divided into several steps as follows:

Installing requirements

  • Clone this repo:
git clone https://github.com/lzzy12/python-aria-mirror-bot mirror-bot/
cd mirror-bot
  • Install requirements For Debian based distros
sudo apt install python3
sudo snap install docker 
  • For Arch and it's derivatives:
sudo pacman -S docker python

Setting up config file

cp config_sample.env config.env
  • Remove the first line saying:
_____REMOVE_THIS_LINE_____=True

Fill up rest of the fields. Meaning of each fields are discussed below:

  • BOT_TOKEN : The telegram bot token that you get from @BotFather
  • GDRIVE_FOLDER_ID : This is the folder ID of the Google Drive Folder to which you want to upload all the mirrors.
  • DOWNLOAD_DIR : The path to the local folder where the downloads should be downloaded to
  • DOWNLOAD_STATUS_UPDATE_INTERVAL : A short interval of time in seconds after which the Mirror progress message is updated. (I recommend to keep it 5 seconds at least)
  • OWNER_ID : The Telegram user ID (not username) of the owner of the bot
  • AUTO_DELETE_MESSAGE_DURATION : Interval of time (in seconds), after which the bot deletes it's message (and command message) which is expected to be viewed instantly. Note: Set to -1 to never automatically delete messages
  • IS_TEAM_DRIVE : (Optional field) Set to "True" if GDRIVE_FOLDER_ID is from a Team Drive else False or Leave it empty.
  • INDEX_URL : (Optional field) Refer to https://github.com/maple3142/GDIndex/ The URL should not have any trailing '/'

Note: You can limit maximum concurrent downloads by changing the value of MAX_CONCURRENT_DOWNLOADS in aria.sh. By default, it's set to 2

Getting Google OAuth API credential file

  • Visit the Google Cloud Console
  • Go to the OAuth Consent tab, fill it, and save.
  • Go to the Credentials tab and click Create Credentials -> OAuth Client ID
  • Choose Other and Create.
  • Use the download button to download your credentials.
  • Move that file to the root of mirror-bot, and rename it to credentials.json
  • Finally, run the script to generate token file (token.pickle) for Google Drive:
pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib
python3 generate_drive_token.py

Deploying

  • Start docker daemon (skip if already running):
sudo dockerd
  • Build Docker image:
sudo docker build . -t mirror-bot
  • Run the image:
sudo docker run mirror-bot