pb.SimpleProgress(), ' ', pb.ETA() ] bar = pb.ProgressBar(widgets=widgets, maxval=path.getsize(filePath)) def progress(sent, total): bar.update(sent) with TelegramClient('session/large-files-upload', api_id, api_hash) as client: file = eyed3.load(filePath) title = "%s – %s" % (file.tag.title, file.tag.artist) print("Starting uploading \"%s\"" % title) bar.start() client.send_file(sendTo, filePath, progress_callback=progress, attributes=[ DocumentAttributeAudio(duration=int( file.info.time_secs), voice=None, title=file.tag.title, performer=file.tag.artist) ], caption=caption) bar.finish() client.disconnect()
async def download_video(v_url): """ For .ytdl command, download media from YouTube and many other sites. """ url = v_url.pattern_match.group(2) type = v_url.pattern_match.group(1).lower() await v_url.edit("`Preparing to download...`") if type == "a": opts = { 'format': 'bestaudio', 'addmetadata': True, 'key': 'FFmpegMetadata', 'writethumbnail': True, 'prefer_ffmpeg': True, 'geo_bypass': True, 'nocheckcertificate': True, 'postprocessors': [{ 'key': 'FFmpegExtractAudio', 'preferredcodec': 'mp3', 'preferredquality': '320', }], 'outtmpl': out_folder + '%(id)s.mp3', 'quiet': True, 'logtostderr': False } video = False song = True elif type == "v": opts = { 'format': 'best', 'addmetadata': True, 'key': 'FFmpegMetadata', 'prefer_ffmpeg': True, 'getthumbnail': True, 'embedthumbnail': True, 'writethumbnail': True, 'geo_bypass': True, 'nocheckcertificate': True, 'postprocessors': [{ 'key': 'FFmpegVideoConvertor', 'preferedformat': 'mp4' }], 'outtmpl': out_folder + '%(id)s.mp4', 'logtostderr': False, 'quiet': True } song = False video = True try: await v_url.edit("`Fetching data, please wait..`") with YoutubeDL(opts) as ytdl: ytdl_data = ytdl.extract_info(url) filename = sorted(get_lst_of_files(out_folder, [])) except DownloadError as DE: await v_url.edit(f"`{str(DE)}`") return except ContentTooShortError: await v_url.edit("`The download content was too short.`") return except GeoRestrictedError: await v_url.edit( "`Video is not available from your geographic location due to geographic restrictions imposed by a website.`" ) return except MaxDownloadsReached: await v_url.edit("`Max-downloads limit has been reached.`") return except PostProcessingError: await v_url.edit("`There was an error during post processing.`") return except UnavailableVideoError: await v_url.edit("`Media is not available in the requested format.`") return except XAttrMetadataError as XAME: await v_url.edit(f"`{XAME.code}: {XAME.msg}\n{XAME.reason}`") return except ExtractorError: await v_url.edit("`There was an error during info extraction.`") return except Exception as e: await v_url.edit(f"{str(type(e)): {str(e)}}") return c_time = time.time() if song: # raster_size = os.path.getsize(f"{out_folder + ytdl_data['id']}.mp3") # song_size = size(raster_size) file_path = f"{out_folder + ytdl_data['id']}.mp3" song_size = file_size(file_path) await v_url.edit(f"`Preparing to upload song:`\ \n**{ytdl_data['title']}**\ \nby *{ytdl_data['uploader']}*") await v_url.client.send_file( v_url.chat_id, f"{out_folder + ytdl_data['id']}.mp3", caption=ytdl_data['title'] + "\n" + f"`{song_size}`", supports_streaming=True, attributes=[ DocumentAttributeAudio(duration=int(ytdl_data['duration']), title=str(ytdl_data['title']), performer=str(ytdl_data['uploader'])) ], progress_callback=lambda d, t: asyncio.get_event_loop( ).create_task( progress(d, t, v_url, c_time, "Uploading..", f"{ytdl_data['title']}.mp3"))) os.remove(f"{out_folder + ytdl_data['id']}.mp3") await asyncio.sleep(DELETE_TIMEOUT) await v_url.delete() elif video: for single_file in filename: # image_link = ytdl_data['thumbnail'] # downloaded_image = wget.download(image_link,out_folder) # thumb = downloaded_image # raster_size = os.path.getsize(f"{out_folder + ytdl_data['id']}.mp4") file_path = f"{out_folder + ytdl_data['id']}.mp4" video_size = file_size(file_path) image = f"{ytdl_data['id']}.jpg" thumb = f"{out_folder + ytdl_data['id']}.jpg" await v_url.edit(f"`Preparing to upload video:`\ \n**{ytdl_data['title']}**\ \nby *{ytdl_data['uploader']}*") await v_url.client.send_file( v_url.chat_id, f"{out_folder + ytdl_data['id']}.mp4", supports_streaming=True, caption=ytdl_data['title'] + "\n" + f"`{video_size}`", thumb=thumb, progress_callback=lambda d, t: asyncio.get_event_loop( ).create_task( progress(d, t, v_url, c_time, "Uploading..", f"{ytdl_data['title']}.mp4"))) os.remove(f"{out_folder + ytdl_data['id']}.mp4") await asyncio.sleep(DELETE_TIMEOUT) await v_url.delete() os.remove(single_file) os.removedirs(out_folder)
async def download_video(v_url): pro = v_url sender = await pro.get_sender() me = await pro.client.get_me() pro1 = v_url.text if not sender.id == me.id: dc = await pro.reply("`processing, please weit...`") else: dc = await pro.edit("`processing, please weit...😍`") teamcobra = pro1[8:] if not teamcobra: return await dc.edit("`Error \nusage vsong <song name>`") search = SearchVideos(teamcobra, offset=1, mode="json", max_results=1) test = search.result() p = json.loads(test) q = p.get('search_result') try: teamcobra = q[0]['link'] except: return await dc.edit("`failed to find your desired song`") type = "audio" await dc.edit("`Ok downloading your song🤓...`") if type == "audio": opts = { 'format': 'best', 'addmetadata': True, 'key': 'FFmpegMetadata', 'prefer_ffmpeg': True, 'geo_bypass': True, 'nocheckcertificate': True, 'postprocessors': [{ 'key': 'FFmpegVideoConvertor', 'preferedformat': 'mp4' }], 'outtmpl': '%(id)s.mp4', 'logtostderr': False, 'quiet': True } song = False video = True try: await dc.edit("`Fetching data, please wait..😋😍😎`") with YoutubeDL(opts) as darkcobra: darkcobra_data = darkcobra.extract_info(teamcobra) except DownloadError as error: await dc.edit(f"`{str(error)}`") return except ContentTooShortError: await dc.edit("`Oof the download content was too short😮🤐.`") return except GeoRestrictedError: await dc.edit( "`Video is not available from your geographic location due to geographic restrictions imposed by a website🤔.`" ) return except MaxDownloadsReached: await dc.edit("`Max-downloads limit has been reached😶.`") return except PostProcessingError: await dc.edit("`There was an error during post processing😐.`") return except UnavailableVideoError: await dc.edit( "`sorry, media is not available in the requested format.`") return except XAttrMetadataError as XAME: await dc.edit(f"`{XAME.code}: {XAME.msg}\n{XAME.reason}`") return except ExtractorError: await dc.edit("`There was an error while fetching your query...`") return except Exception as e: await dc.edit(f"{str(type(e)): {str(e)}}") return c_time = time.time() if song: await dc.edit(f"`Preparing to upload your video song😎 `\ \n**{darkcobra_data['title']}**\ \nby *{darkcobra_data['uploader']}*") await v_url.client.send_file( v_url.chat_id, f"{darkcobra_data['id']}.mp3", supports_streaming=True, attributes=[ DocumentAttributeAudio( duration=int(darkcobra_data['duration']), title=str(darkcobra_data['title']), performer=str(darkcobra_data['uploader'])) ], progress_callback=lambda d, t: asyncio.get_event_loop( ).create_task( progress(d, t, v_url, c_time, "Uploading your video song😍..", f"{darkcobra_data['title']}.mp3"))) os.remove(f"{darkcobra_data['id']}.mp3") await v_url.delete() elif video: await dc.edit(f"`Preparing to upload your video song🤗❤ :`\ \n**{darkcobra_data['title']}**\ \nby *{darkcobra_data['uploader']}*") await v_url.client.send_file( v_url.chat_id, f"{darkcobra_data['id']}.mp4", supports_streaming=True, caption=darkcobra_data['title'], progress_callback=lambda d, t: asyncio.get_event_loop( ).create_task( progress(d, t, v_url, c_time, "Uploading..", f"{darkcobra_data['title']}.mp4"))) os.remove(f"{darkcobra_data['id']}.mp4") await dc.delete()
async def download_video(v_url): """For .ytdl command, download media from YouTube and many other sites.""" url = v_url.pattern_match.group(2) if not url: rmsg = await v_url.get_reply_message() myString = rmsg.text url = re.search("(?P<url>https?://[^\s]+)", myString).group("url") if not url: await edit_or_reply(v_url, "What I am Supposed to find? Give link") return ytype = v_url.pattern_match.group(1).lower() v_url = await edit_or_reply(v_url, "`Preparing to download...`") reply_to_id = await reply_id(v_url) if ytype == "a": opts = { "format": "bestaudio", "addmetadata": True, "key": "FFmpegMetadata", "writethumbnail": True, "prefer_ffmpeg": True, "geo_bypass": True, "nocheckcertificate": True, "postprocessors": [{ "key": "FFmpegExtractAudio", "preferredcodec": "mp3", "preferredquality": "320", }], "outtmpl": "%(id)s.mp3", "quiet": True, "logtostderr": False, } video = False song = True elif ytype == "v": opts = { "format": "best", "addmetadata": True, "key": "FFmpegMetadata", "writethumbnail": True, "prefer_ffmpeg": True, "geo_bypass": True, "nocheckcertificate": True, "postprocessors": [{ "key": "FFmpegVideoConvertor", "preferedformat": "mp4" }], "outtmpl": "%(id)s.mp4", "logtostderr": False, "quiet": True, } song = False video = True try: await v_url.edit("`Fetching data, please wait..`") with YoutubeDL(opts) as ytdl: ytdl_data = ytdl.extract_info(url) except DownloadError as DE: await v_url.edit(f"`{str(DE)}`") return except ContentTooShortError: await v_url.edit("`The download content was too short.`") return except GeoRestrictedError: await v_url.edit( "`Video is not available from your geographic location due to geographic restrictions imposed by a website.`" ) return except MaxDownloadsReached: await v_url.edit("`Max-downloads limit has been reached.`") return except PostProcessingError: await v_url.edit("`There was an error during post processing.`") return except UnavailableVideoError: await v_url.edit("`Media is not available in the requested format.`") return except XAttrMetadataError as XAME: await v_url.edit(f"`{XAME.code}: {XAME.msg}\n{XAME.reason}`") return except ExtractorError: await v_url.edit("`There was an error during info extraction.`") return except Exception as e: await v_url.edit(f"{str(type(e)): {str(e)}}") return c_time = time.time() catthumb = Path(f"{ytdl_data['id']}.jpg") if not os.path.exists(catthumb): catthumb = Path(f"{ytdl_data['id']}.webp") if not os.path.exists(catthumb): catthumb = None if song: await v_url.edit(f"`Preparing to upload song:`\ \n**{ytdl_data['title']}**\ \nby *{ytdl_data['uploader']}*") await v_url.client.send_file( v_url.chat_id, f"{ytdl_data['id']}.mp3", supports_streaming=True, thumb=catthumb, reply_to=reply_to_id, attributes=[ DocumentAttributeAudio( duration=int(ytdl_data["duration"]), title=str(ytdl_data["title"]), performer=str(ytdl_data["uploader"]), ) ], progress_callback=lambda d, t: asyncio.get_event_loop(). create_task( progress(d, t, v_url, c_time, "Uploading..", f"{ytdl_data['title']}.mp3")), ) os.remove(f"{ytdl_data['id']}.mp3") elif video: await v_url.edit(f"`Preparing to upload video:`\ \n**{ytdl_data['title']}**\ \nby *{ytdl_data['uploader']}*") await v_url.client.send_file( v_url.chat_id, f"{ytdl_data['id']}.mp4", reply_to=reply_to_id, supports_streaming=True, caption=ytdl_data["title"], progress_callback=lambda d, t: asyncio.get_event_loop(). create_task( progress(d, t, v_url, c_time, "Uploading..", f"{ytdl_data['title']}.mp4")), ) os.remove(f"{ytdl_data['id']}.mp4") if catthumb: os.remove(catthumb) await v_url.delete()