- Added Uptobox support
- Check file in drive before mirror and stop duplicate mirror
This commit is contained in:
Hafitz Setya 2021-03-06 09:35:15 +07:00 committed by GitHub
parent def8e7b78b
commit 2ba98ac0de
Signed by untrusted user: GitHub
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 78 additions and 3 deletions

View File

@ -32,7 +32,8 @@ Fork this repo, than upload credentials.json and token.pickle to your forks
## Features supported:
- Mirroring direct download links to Google Drive
- Mirroring Mega.nz links to google drive (In development stage)
- Mirroring Mega.nz links to Google Drive (In development stage)
- Mirroring Uptobox.com links to Google Drive (Uptobox account must be premium)
- Copy files from someone's drive to your drive (Using Autorclone)
- Download/upload progress
- Download/upload speeds and ETAs

View File

@ -66,6 +66,10 @@
"description": "This is to authenticate to your telegram account for downloading Telegram files. You can get this from https://my.telegram.org.",
"required": true
},
"UPTOBOX_TOKEN": {
"description": "Uptobox token to mirror uptobox links. Get it from [Uptobox Premium Account](https://uptobox.com/my_account).",
"required": false
},
"MEGA_API_KEY": {
"description": "Mega.nz api key to mirror mega.nz links. Get it from https://mega.nz/sdk.",
"required": false
@ -82,6 +86,10 @@
"description": "If you want to remove mega.nz mirror support, set it to True.",
"required": false
},
"STOP_DUPLICATE_MIRROR": {
"description": "If this field is set to True, bot will check file in drive, if it is present in drive, downloading will be stopped.",
"required": false
},
"SHORTENER": {
"description": "If you want to use shortener in Gdrive and index link.",
"required": false

View File

@ -90,6 +90,16 @@ except KeyError as e:
LOGGER.error("One or more env variables missing! Exiting now")
exit(1)
try:
UPTOBOX_TOKEN = getConfig('UPTOBOX_TOKEN')
except KeyError:
logging.warning('UPTOBOX_TOKEN not provided!')
UPTOBOX_TOKEN = None
try:
UPTOBOX_TOKEN = getConfig('UPTOBOX_TOKEN')
except KeyError:
logging.warning('UPTOBOX_TOKEN not provided!')
UPTOBOX_TOKEN = None
try:
MEGA_API_KEY = getConfig('MEGA_API_KEY')
except KeyError:
@ -160,6 +170,14 @@ try:
except KeyError:
BUTTON_FIVE_NAME = None
BUTTON_FIVE_URL = None
try:
STOP_DUPLICATE_MIRROR = getConfig('STOP_DUPLICATE_MIRROR')
if STOP_DUPLICATE_MIRROR.lower() == 'true':
STOP_DUPLICATE_MIRROR = True
else:
STOP_DUPLICATE_MIRROR = False
except KeyError:
STOP_DUPLICATE_MIRROR = False
try:
IS_TEAM_DRIVE = getConfig('IS_TEAM_DRIVE')
if IS_TEAM_DRIVE.lower() == 'true':

View File

@ -1,4 +1,5 @@
from bot import aria2, download_dict_lock
from bot import aria2, download_dict_lock, STOP_DUPLICATE_MIRROR
from bot.helper.mirror_utils.upload_utils.gdriveTools import GoogleDriveHelper
from bot.helper.ext_utils.bot_utils import *
from .download_helper import DownloadHelper
from bot.helper.mirror_utils.status_utils.aria_download_status import AriaDownloadStatus
@ -15,7 +16,25 @@ class AriaDownloadHelper(DownloadHelper):
@new_thread
def __onDownloadStarted(self, api, gid):
sleep(1)
LOGGER.info(f"onDownloadStart: {gid}")
dl = getDownloadByGid(gid)
download = api.get_download(gid)
self.name = download.name
sname = download.name
if STOP_DUPLICATE_MIRROR:
if dl.getListener().isTar == True:
sname = sname + ".tar"
if dl.getListener().extract == True:
smsg = None
else:
gdrive = GoogleDriveHelper(None)
smsg, button = gdrive.drive_list(sname)
if smsg:
dl.getListener().onDownloadError(f'😡 File is already available in drive. You should have search before mirror any file. You might get ban if you do this again. This download has been stopped.\n\n')
sendMarkup(" Here are the search results:👇", dl.getListener().bot, dl.getListener().update, button)
aria2.remove([download])
return
update_all_messages()
def __onDownloadComplete(self, api: API, gid):

View File

@ -8,6 +8,8 @@ from https://github.com/AvinashReddy3108/PaperplaneExtended . I hereby take no c
than the modifications. See https://github.com/AvinashReddy3108/PaperplaneExtended/commits/master/userbot/modules/direct_links.py
for original authorship. """
from bot import UPTOBOX_TOKEN
import logging
import json
import re
import urllib.parse
@ -32,6 +34,8 @@ def direct_link_generator(link: str):
return cm_ru(link)
elif 'mediafire.com' in link:
return mediafire(link)
elif 'uptobox.com' in link:
return uptobox(link)
elif 'osdn.net' in link:
return osdn(link)
elif 'github.com' in link:
@ -100,6 +104,29 @@ def cm_ru(url: str) -> str:
dl_url = data['download']
return dl_url
def uptobox(url: str) -> str:
""" Uptobox direct links generator
based on https://github.com/jovanzers/WinTenCermin """
try:
link = re.findall(r'\bhttps?://.*uptobox\.com\S+', url)[0]
except IndexError:
raise DirectDownloadLinkException("`No Uptobox links found`\n")
if UPTOBOX_TOKEN is None:
logging.error('UPTOBOX_TOKEN not provided!')
dl_url = url
else:
try:
link = re.findall(r'\bhttp?://.*uptobox\.com/dl\S+', url)[0]
logging.info('Uptobox direct link')
dl_url = url
except:
file_id = re.findall(r'\bhttps?://.*uptobox\.com/(\w+)', url)[0]
file_link = 'https://uptobox.com/api/link?token=%s&file_code=%s' % (UPTOBOX_TOKEN, file_id)
req = requests.get(file_link)
result = req.json()
dl_url = result['data']['dlLink']
return dl_url
def mediafire(url: str) -> str:
""" MediaFire direct links generator """

View File

@ -14,11 +14,13 @@ TELEGRAM_HASH = ""
USE_SERVICE_ACCOUNTS = ""
# Optional config
AUTHORIZED_CHATS = ""
INDEX_URL = ""
INDEX_URL = ""
UPTOBOX_TOKEN = ""
MEGA_API_KEY = ""
MEGA_EMAIL_ID = ""
MEGA_PASSWORD = ""
BLOCK_MEGA_LINKS = ""
STOP_DUPLICATE_MIRROR = ""
SHORTENER = ""
SHORTENER_API = ""
# Add more buttons (two buttons are already added of file link and index link, you can add extra buttons too, these are optional)