예제 #1
0
def _telegram_file(client, message):
    user_id = message.from_user.id
    sent_message = message.reply_text('🕵️**Checking File...**', quote=True)
    if message.document:
        file = message.document
    elif message.video:
        file = message.video
    elif message.audio:
        file = message.audio
    sent_message.edit(
        Messages.DOWNLOAD_TG_FILE.format(file.file_name,
                                         humanbytes(file.file_size),
                                         file.mime_type))
    LOGGER.info(f'Download:{user_id}: {file.file_id}')
    try:
        file_path = message.download(file_name=DOWNLOAD_DIRECTORY)
        sent_message.edit(
            Messages.DOWNLOADED_SUCCESSFULLY.format(
                os.path.basename(file_path),
                humanbytes(os.path.getsize(file_path))))
        msg = GoogleDrive(user_id).upload_file(file_path, file.mime_type)
        sent_message.edit(msg)
    except RPCError:
        sent_message.edit(Messages.WENT_WRONG)
    LOGGER.info(f'Deleteing: {file_path}')
    os.remove(file_path)
예제 #2
0
 def clone(self, link):
     self.transferred_size = 0
     try:
         file_id = self.getIdFromUrl(link)
     except (IndexError, KeyError):
         return Messages.INVALID_GDRIVE_URL
     try:
         meta = self.__service.files().get(
             supportsAllDrives=True,
             fileId=file_id,
             fields="name,id,mimeType,size").execute()
         if meta.get("mimeType") == self.__G_DRIVE_DIR_MIME_TYPE:
             dir_id = self.create_directory(meta.get('name'))
             result = self.cloneFolder(meta.get('name'), meta.get('name'),
                                       meta.get('id'), dir_id)
             return Messages.COPIED_SUCCESSFULLY.format(
                 meta.get('name'),
                 self.__G_DRIVE_DIR_BASE_DOWNLOAD_URL.format(dir_id),
                 humanbytes(self.transferred_size))
         else:
             file = self.copyFile(meta.get('id'), self.__parent_id)
             return Messages.COPIED_SUCCESSFULLY.format(
                 file.get('name'),
                 self.__G_DRIVE_BASE_DOWNLOAD_URL.format(file.get('id')),
                 humanbytes(int(meta.get('size'))))
     except Exception as err:
         if isinstance(err, RetryError):
             LOGGER.info(
                 f"Total Attempts: {err.last_attempt.attempt_number}")
             err = err.last_attempt.exception()
         err = str(err).replace('>', '').replace('<', '')
         LOGGER.error(err)
         return f"**ERROR:** ```{err}```"
예제 #3
0
 def upload_file(self, file_path, mimeType=None):
     mime_type = mimeType if mimeType else guess_type(file_path)[0]
     mime_type = mime_type if mime_type else "text/plain"
     media_body = MediaFileUpload(
         file_path,
         mimetype=mime_type,
         chunksize=150*1024*1024,
         resumable=True
     )
     filename = os.path.basename(file_path)
     filesize = humanbytes(os.path.getsize(file_path))
     body = {
         "name": filename,
         "description": "Uploaded using @UploadGdriveBot",
         "mimeType": mime_type,
     }
     body["parents"] = [self.__parent_id]
     LOGGER.info(f'Upload: {file_path}')
     try:
       uploaded_file = self.__service.files().create(body=body, media_body=media_body, fields='id', supportsTeamDrives=True).execute()
       file_id = uploaded_file.get('id')
       return Messages.UPLOADED_SUCCESSFULLY.format(filename, self.__G_DRIVE_BASE_DOWNLOAD_URL.format(file_id), filesize)
     except HttpError as err:
       if err.resp.get('content-type', '').startswith('application/json'):
         reason = json.loads(err.content).get('error').get('errors')[0].get('reason')
         if reason == 'userRateLimitExceeded' or reason == 'dailyLimitExceeded':
           return Messages.RATE_LIMIT_EXCEEDED_MESSAGE
         else:
           return f"**ERROR:** {reason}"
     except Exception as e:
       return f"**ERROR:** ```{e}```"
예제 #4
0
 def clone(self, link):
     self.transferred_size = 0
     try:
         file_id = self.getIdFromUrl(link)
     except (IndexError, KeyError):
         return Messages.INVALID_GDRIVE_URL
     try:
         meta = self.__service.files().get(
             supportsAllDrives=True,
             fileId=file_id,
             fields="name,id,mimeType,size").execute()
     except HttpError as err:
         if err.resp.get('content-type', '').startswith('application/json'):
             reason = json.loads(
                 err.content).get('error').get('errors')[0].get('reason')
             if 'notFound' in reason:
                 return Messages.FILE_NOT_FOUND_MESSAGE.format(file_id)
             else:
                 return f"**ERROR:** ```{str(err).replace('>', '').replace('<', '')}```"
     except Exception as e:
         return f"**ERROR:** ```{str(e).replace('>', '').replace('<', '')}```"
     if meta.get("mimeType") == self.__G_DRIVE_DIR_MIME_TYPE:
         dir_id = self.create_directory(meta.get('name'))
         try:
             result = self.cloneFolder(meta.get('name'), meta.get('name'),
                                       meta.get('id'), dir_id)
             return Messages.COPIED_SUCCESSFULLY.format(
                 meta.get('name'),
                 self.__G_DRIVE_DIR_BASE_DOWNLOAD_URL.format(dir_id),
                 humanbytes(self.transferred_size))
         except Exception as e:
             return f'**ERROR:** ```{e}```'
     else:
         try:
             file = self.copyFile(meta.get('id'), self.__parent_id)
             return Messages.COPIED_SUCCESSFULLY.format(
                 file.get('name'),
                 self.__G_DRIVE_BASE_DOWNLOAD_URL.format(file.get('id')),
                 humanbytes(int(meta.get('size'))))
         except Exception as e:
             return f'**ERROR:** ```{e}```'
예제 #5
0
def _ytdl(client, message):
    user_id = message.from_user.id
    if len(message.command) > 1:
        sent_message = message.reply_text('🕵️**Checking Link...**', quote=True)
        link = message.command[1]
        LOGGER.info(f'YTDL:{user_id}: {link}')
        sent_message.edit(Messages.DOWNLOADING.format(link))
        result, file_path = utube_dl(link)
        if result:
            sent_message.edit(
                Messages.DOWNLOADED_SUCCESSFULLY.format(
                    os.path.basename(file_path),
                    humanbytes(os.path.getsize(file_path))))
            msg = GoogleDrive(user_id).upload_file(file_path)
            sent_message.edit(msg)
            LOGGER.info(f'Deleteing: {file_path}')
            os.remove(file_path)
        else:
            sent_message.edit(Messages.DOWNLOAD_ERROR.format(file_path, link))
    else:
        message.reply_text(Messages.PROVIDE_YTDL_LINK, quote=True)
예제 #6
0
def _download(client, message):
    user_id = message.from_user.id
    if not message.media:
        sent_message = message.reply_text('🕵️**Checking link...**', quote=True)
        if message.command:
            link = message.command[1]
        else:
            link = message.text
        if 'drive.google.com' in link:
            sent_message.edit(Messages.CLONING.format(link))
            LOGGER.info(f'Copy:{user_id}: {link}')
            msg = GoogleDrive(user_id).clone(link)
            sent_message.edit(msg)
        else:
            if '|' in link:
                link, filename = link.split('|')
                link = link.strip()
                filename.strip()
                dl_path = os.path.join(
                    f'{Config.DOWNLOAD_DIRECTORY}/{filename}')
            else:
                link = link.strip()
                filename = os.path.basename(link)
                dl_path = Config.DOWNLOAD_DIRECTORY
            LOGGER.info(f'Download:{user_id}: {link}')
            sent_message.edit(Messages.DOWNLOADING.format(link))
            result, file_path = download_file(link, dl_path)
            if result == True:
                sent_message.edit(
                    Messages.DOWNLOADED_SUCCESSFULLY.format(
                        os.path.basename(file_path),
                        humanbytes(os.path.getsize(file_path))))
                msg = GoogleDrive(user_id).upload_file(file_path)
                sent_message.edit(msg)
                LOGGER.info(f'Deleteing: {file_path}')
                os.remove(file_path)
            else:
                sent_message.edit(
                    Messages.DOWNLOAD_ERROR.format(file_path, link))
예제 #7
0
def _download(client, message):
    user_id = message.from_user.id
    LOGGER.info(f'Download request from {user_id}')
    sent_message = message.reply_text('**Checking link...**', quote=True)
    if not message.media:
        if message.command:
            link = message.command[1]
        else:
            link = message.text
        if '|' in link:
            link, filename = link.split('|')
            link = link.strip()
            filename.strip()
            dl_path = os.path.join(f'{DOWNLOAD_DIRECTORY}/{filename}')
        else:
            link = link.strip()
            filename = os.path.basename(link)
            dl_path = os.path.join(f'{DOWNLOAD_DIRECTORY}/')
        sent_message.edit(Messages.DOWNLOADING.format(filename))
        result, file_path = download_file(link, dl_path)
        if result == False:
            sent_message.edit(Messages.DOWNLOAD_ERROR.format(file_path, link))
            return
    elif message.media:
        sent_message.edit(Messages.DOWNLOAD_TG_FILE)
        try:
            file_path = client.download_media(message)
        except FloodWait as e:
            sleep(e.x)
        except Exception as e:
            sent_message.edit(f'**ERROR:** ```{e}```')
            return
    sent_message.edit(
        Messages.DOWNLOADED_SUCCESSFULLY.format(
            os.path.basename(file_path),
            humanbytes(os.path.getsize(file_path))))
    msg = GoogleDrive(user_id).upload_file(file_path)
    sent_message.edit(msg)
    os.remove(file_path)
예제 #8
0
def _download(client, message):
    user_id = message.from_user.id
    if not message.media:
        sent_message = message.reply_text('🕵️**Checking link...**', quote=True)
        if message.command:
            link = message.command[1]
        else:
            link = message.text
        if 'drive.google.com' in link:
            sent_message.edit(Messages.CLONING.format(link))
            LOGGER.info(f'Copy:{user_id}: {link}')
            msg = GoogleDrive(user_id).clone(link)
            sent_message.edit(msg)
        elif 'mediafire.com' in link:
            """ MediaFire """
            if '|' in link:
                link, filename = link.split('|')
                link = link.strip()
                filename.strip()
                dl_path = os.path.join(
                    f'{Config.DOWNLOAD_DIRECTORY}/{filename}')
            else:
                link = link.strip()
                filename = os.path.basename(link)
                dl_path = Config.DOWNLOAD_DIRECTORY
            try:
                link = re.findall(r'\bhttps?://.*mediafire\.com\S+', url)[0]
            except IndexError:
                return sent_message.edit(
                    "No MediaFire links found\nMight Be File/Files Deleted. \nOpen The Link And Check"
                )
            page = BeautifulSoup(requests.get(link).content, 'lxml')
            info = page.find('a', {'aria-label': 'Download file'})
            link = info.get('href')
            sent_message.edit(Messages.DOWNLOADING.format(link))
            result, file_path = download_file(link, dl_path)
            if result == True:
                sent_message.edit(
                    Messages.DOWNLOADED_SUCCESSFULLY.format(
                        os.path.basename(file_path),
                        humanbytes(os.path.getsize(file_path))))
                msg = GoogleDrive(user_id).upload_file(file_path)
                sent_message.edit(msg)
                # LOGGER.info(f'Deleteing: {file_path}')
                os.remove(file_path)
            else:
                sent_message.edit(
                    Messages.DOWNLOAD_ERROR.format(file_path, link))
        elif 'zippyshare.com' in link:
            """ ZippyShare """
            if '|' in link:
                link, filename = link.split('|')
                link = link.strip()
                filename.strip()
                dl_path = os.path.join(
                    f'{Config.DOWNLOAD_DIRECTORY}/{filename}')
            else:
                link = link.strip()
                filename = os.path.basename(link)
                dl_path = Config.DOWNLOAD_DIRECTORY
            try:
                link = re.findall(r'\bhttps?://.*zippyshare\.com\S+', url)[0]
            except IndexError:
                raise DirectDownloadLinkException("No Zippyshare links found")
            try:
                base_url = re.search('http.+.zippyshare.com', link).group()
                response = requests.get(link).content
                pages = BeautifulSoup(response, "lxml")
                try:
                    js_script = pages.find("div", {
                        "class": "center"
                    }).find_all("script")[1]
                except IndexError:
                    js_script = pages.find("div", {
                        "class": "right"
                    }).find_all("script")[0]
                js_content = re.findall(r'\.href.=."/(.*?)";', str(js_script))
                js_content = 'var x = "/' + js_content[0] + '"'
                evaljs = EvalJs()
                setattr(evaljs, "x", None)
                evaljs.execute(js_content)
                js_content = getattr(evaljs, "x")
                link = base_url + js_content
            except IndexError:
                raise sent_message.edit("ERROR: Can't find download button")
            sent_message.edit(Messages.DOWNLOADING.format(link))
            result, file_path = download_file(link, dl_path)
            if result == True:
                sent_message.edit(
                    Messages.DOWNLOADED_SUCCESSFULLY.format(
                        os.path.basename(file_path),
                        humanbytes(os.path.getsize(file_path))))
                msg = GoogleDrive(user_id).upload_file(file_path)
                sent_message.edit(msg)
                # LOGGER.info(f'Deleteing: {file_path}')
                os.remove(file_path)
            else:
                sent_message.edit(
                    Messages.DOWNLOAD_ERROR.format(file_path, link))
        elif 'anonfiles.com' in link:
            """ Anonfiles """
            if '|' in link:
                link, filename = link.split('|')
                link = link.strip()
                filename.strip()
                dl_path = os.path.join(
                    f'{Config.DOWNLOAD_DIRECTORY}/{filename}')
            else:
                link = link.strip()
                filename = os.path.basename(link)
                dl_path = Config.DOWNLOAD_DIRECTORY
            bypasser = lk21.Bypass()
            link = bypasser.bypass_anonfiles(link)
            sent_message.edit(Messages.DOWNLOADING.format(link))
            result, file_path = download_file(link, dl_path)
            if result == True:
                sent_message.edit(
                    Messages.DOWNLOADED_SUCCESSFULLY.format(
                        os.path.basename(file_path),
                        humanbytes(os.path.getsize(file_path))))
                msg = GoogleDrive(user_id).upload_file(file_path)
                sent_message.edit(msg)
                # LOGGER.info(f'Deleteing: {file_path}')
                os.remove(file_path)
            else:
                sent_message.edit(
                    Messages.DOWNLOAD_ERROR.format(file_path, link))
        elif 'bayfiles.com' in link:
            """ Bayfiles """
            if '|' in link:
                link, filename = link.split('|')
                link = link.strip()
                filename.strip()
                dl_path = os.path.join(
                    f'{Config.DOWNLOAD_DIRECTORY}/{filename}')
            else:
                link = link.strip()
                filename = os.path.basename(link)
                dl_path = Config.DOWNLOAD_DIRECTORY
            bypasser = lk21.Bypass()
            link = bypasser.bypass_anonfiles(link)
            sent_message.edit(Messages.DOWNLOADING.format(link))
            result, file_path = download_file(link, dl_path)
            if result == True:
                sent_message.edit(
                    Messages.DOWNLOADED_SUCCESSFULLY.format(
                        os.path.basename(file_path),
                        humanbytes(os.path.getsize(file_path))))
                msg = GoogleDrive(user_id).upload_file(file_path)
                sent_message.edit(msg)
                # LOGGER.info(f'Deleteing: {file_path}')
                os.remove(file_path)
        elif 'racaty.net' in link:
            """ Racaty """
            if '|' in link:
                link, filename = link.split('|')
                link = link.strip()
                filename.strip()
                dl_path = os.path.join(
                    f'{Config.DOWNLOAD_DIRECTORY}/{filename}')
            else:
                link = link.strip()
                filename = os.path.basename(link)
                dl_path = Config.DOWNLOAD_DIRECTORY
            dl_url = ''
            try:
                link = re.findall(r'\bhttps?://.*racaty\.net\S+', url)[0]
            except IndexError:
                raise ("No Racaty links found\n")
            scraper = cfscrape.create_scraper()
            r = scraper.get(url)
            soup = BeautifulSoup(r.text, "lxml")
            op = soup.find("input", {"name": "op"})["value"]
            ids = soup.find("input", {"name": "id"})["value"]
            rpost = scraper.post(url, data={"op": op, "id": ids})
            rsoup = BeautifulSoup(rpost.text, "lxml")
            dl_url = rsoup.find("a",
                                {"id": "uniqueExpirylink"})["href"].replace(
                                    " ", "%20")
            link = dl_url
            result, file_path = download_file(link, dl_path)
            if result == True:
                sent_message.edit(
                    Messages.DOWNLOADED_SUCCESSFULLY.format(
                        os.path.basename(file_path),
                        humanbytes(os.path.getsize(file_path))))
                msg = GoogleDrive(user_id).upload_file(file_path)
                sent_message.edit(msg)
                LOGGER.info(f'Deleteing: {file_path}')
                os.remove(file_path)
            else:
                sent_message.edit(
                    Messages.DOWNLOAD_ERROR.format(file_path, link))

        # elif '1fichier.com' in link:
        elif 'ouo.press' in link or 'ouo.io' in link:
            """ Ouo Bypass """
            bypasser = lk21.Bypass()
            link = bypasser.bypass_ouo(link)
            sent_message.edit(
                f"Bypassed The Ouo Link That U Provided.\n\nLink = `{link}`")

        # elif is_gdtot_link(link):

        else:
            if '|' in link:
                link, filename = link.split('|')
                link = link.strip()
                filename.strip()
                dl_path = os.path.join(
                    f'{Config.DOWNLOAD_DIRECTORY}/{filename}')
            else:
                link = link.strip()
                filename = os.path.basename(link)
                dl_path = Config.DOWNLOAD_DIRECTORY
            LOGGER.info(f'Download:{user_id}: {link}')
            sent_message.edit(Messages.DOWNLOADING.format(link))
            result, file_path = download_file(link, dl_path)
            if result == True:
                sent_message.edit(
                    Messages.DOWNLOADED_SUCCESSFULLY.format(
                        os.path.basename(file_path),
                        humanbytes(os.path.getsize(file_path))))
                msg = GoogleDrive(user_id).upload_file(file_path)
                sent_message.edit(msg)
                LOGGER.info(f'Deleteing: {file_path}')
                os.remove(file_path)
            else:
                sent_message.edit(
                    Messages.DOWNLOAD_ERROR.format(file_path, link))
예제 #9
0
      sent_message.edit(msg)
    else:
      if '|' in link:
        link, filename = link.split('|')
        link = link.strip()
        filename.strip()
        dl_path = os.path.join(f'{DOWNLOAD_DIRECTORY}/{filename}')
      else:
        link = link.strip()
        filename = os.path.basename(link)
        dl_path = DOWNLOAD_DIRECTORY
      LOGGER.info(f'Download:{user_id}: {link}')
      sent_message.edit(Messages.DOWNLOADING.format(link))
      result, file_path = download_file(link, dl_path)
      if result == True:
        sent_message.edit(Messages.DOWNLOADED_SUCCESSFULLY.format(os.path.basename(file_path), humanbytes(os.path.getsize(file_path))))
        msg = GoogleDrive(user_id).upload_file(file_path)
        sent_message.edit(msg)
        LOGGER.info(f'Deleteing: {file_path}')
        os.remove(file_path)
      else:
        sent_message.edit(Messages.DOWNLOAD_ERROR.format(file_path, link))


@Client.on_message(filters.private & filters.incoming & (filters.document | filters.audio | filters.video) & CustomFilters.auth_users)
def _telegram_file(client, message):
  user_id = message.from_user.id
  sent_message = message.reply_text('🕵️**Checking File...**', quote=True)
  if message.document:
    file = message.document
  elif message.video: