diff --git a/README.md b/README.md index 6d1eff551be..6c79a187c68 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ python3 generate_drive_token.py ## Deployment -Fork this repo, than upload credentials.json and token.pickle to your forks +Fork this repo, than upload **token.pickle** to your forks

Deploy to Heroku

diff --git a/bot/helper/mirror_utils/download_utils/direct_link_generator.py b/bot/helper/mirror_utils/download_utils/direct_link_generator.py index 1a6a3973002..74b4f61b9f5 100644 --- a/bot/helper/mirror_utils/download_utils/direct_link_generator.py +++ b/bot/helper/mirror_utils/download_utils/direct_link_generator.py @@ -43,30 +43,37 @@ def direct_link_generator(link: str): else: raise DirectDownloadLinkException(f'No Direct link function found for {link}') +""" Zippy-Share up-to-date plugin from https://github.com/UsergeTeam/Userge-Plugins/blob/master/plugins/zippyshare.py """ +""" Thanks to all contributors @aryanvikash, rking32, @BianSepang """ + +link = r'https://www(\d{1,3}).zippyshare.com/v/(\w{8})/file.html' +regex_result = ( + r'var a = (\d{6});\s+var b = (\d{6});\s+document\.getElementById' + r'\(\'dlbutton\'\).omg = "f";\s+if \(document.getElementById\(\'' + r'dlbutton\'\).omg != \'f\'\) {\s+a = Math.ceil\(a/3\);\s+} else' + r' {\s+a = Math.floor\(a/3\);\s+}\s+document.getElementById\(\'d' + r'lbutton\'\).href = "/d/[a-zA-Z\d]{8}/\"\+\(a \+ \d{6}%b\)\+"/(' + r'[\w%-.]+)";' +) def zippy_share(url: str) -> str: - """ ZippyShare direct links generator - Based on https://github.com/LameLemon/ziggy""" - dl_url = '' - try: - link = re.findall(r'\bhttps?://.*zippyshare\.com\S+', url)[0] - except IndexError: - raise DirectDownloadLinkException("`No ZippyShare links found`\n") session = requests.Session() - base_url = re.search('http.+.com', link).group() - response = session.get(link) - page_soup = BeautifulSoup(response.content, "lxml") - scripts = page_soup.find_all("script", {"type": "text/javascript"}) - for script in scripts: - if "getElementById('dlbutton')" in script.text: - url_raw = re.search(r'= (?P\".+\" \+ (?P\(.+\)) .+);', - script.text).group('url') - math = re.search(r'= (?P\".+\" \+ (?P\(.+\)) .+);', - script.text).group('math') - dl_url = url_raw.replace(math, '"' + str(eval(math)) + '"') - break - dl_url = base_url + eval(dl_url) - name = urllib.parse.unquote(dl_url.split('/')[-1]) + with session as ses: + match = re.match(link, url) + if not match: + raise ValueError("Invalid URL: " + str(url)) + server, id_ = match.group(1), match.group(2) + res = ses.get(url) + res.raise_for_status() + match = re.search(regex_result, res.text, re.DOTALL) + if not match: + raise ValueError("Invalid Response!") + val_1 = int(match.group(1)) + val_2 = math.floor(val_1 / 3) + val_3 = int(match.group(2)) + val = val_1 + val_2 % val_3 + name = match.group(3) + dl_url = "https://www{}.zippyshare.com/d/{}/{}/{}".format(server, id_, val, name) return dl_url diff --git a/bot/modules/clone.py b/bot/modules/clone.py index 893d47a702f..418c5c4a4b5 100644 --- a/bot/modules/clone.py +++ b/bot/modules/clone.py @@ -4,18 +4,32 @@ from bot.helper.telegram_helper.filters import CustomFilters from bot.helper.telegram_helper.bot_commands import BotCommands from bot.helper.ext_utils.bot_utils import new_thread -from bot import dispatcher +from bot import dispatcher, LOGGER @new_thread def cloneNode(update,context): + if update.message.from_user.last_name: + last_name = f" {update.message.from_user.last_name}" + else: + last_name = "" + if update.message.from_user.username: + username = f"@{update.message.from_user.username}" + else: + username = "" + name = f'{update.message.from_user.first_name}{last_name}' + args = update.message.text.split(" ",maxsplit=1) if len(args) > 1: link = args[1] - msg = sendMessage(f"Cloning: {link}",context.bot,update) + msg = f'Cloning...\n' \ + f'User: {username}\n' \ + f'Link: {link}' + sendMessage(msg, context.bot, update) gd = GoogleDriveHelper() result, button = gd.clone(link) - deleteMessage(context.bot,msg) + LOGGER.info('ID: {} - Username: {} - Message: {}'.format(update.message.chat.id,update.message.chat.username,update.message.text)) + # deleteMessage(context.bot,msg) sendMarkup(result,context.bot,update,button) else: sendMessage("Provide G-Drive Shareable Link to Clone.",context.bot,update)