From ae8df3534791a7ceb6421336c8153cccc4ffb5f0 Mon Sep 17 00:00:00 2001 From: yasir Date: Sat, 10 Dec 2022 12:17:23 +0700 Subject: [PATCH] Tes rewrite ytdl --- misskaty/plugins/ytdl_download_new.py | 59 ++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/misskaty/plugins/ytdl_download_new.py b/misskaty/plugins/ytdl_download_new.py index 322ba9ab..bd453b61 100644 --- a/misskaty/plugins/ytdl_download_new.py +++ b/misskaty/plugins/ytdl_download_new.py @@ -5,7 +5,7 @@ from misskaty.vars import COMMAND_HANDLER, LOG_CHANNEL from misskaty.core.decorator.errors import capture_err from misskaty.helper.http import http from pyrogram import filters -from iytdl import iYTDL +from iytdl import iYTDL, main from uuid import uuid4 LOGGER = getLogger(__name__) @@ -15,6 +15,44 @@ regex = recompile( YT_DB = {} +def rand_key(): + return str(uuid4())[:8] + + +@app.on_message(filters.command(["ytsearch"], COMMAND_HANDLER) & ~filters.channel) +@capture_err +async def ytsearch(_, message): + if len(message.command) == 1: + return await message.reply("Please input a valid YT-DLP Supported URL") + query = message.text.split(" ", maxsplit=1)[1] + search_key = rand_key() + YT_DB[search_key] = query + search = await main.VideosSearch(query).next() + if search["result"] == []: + return await message.reply(f"No result found for `{query}`") + i = search["result"][0] + out = f"{i['title']}" + out += f"\nPublished {i['publishedTime']}\n" + out += f"\n❯ Duration: {i['duration']}" + out += f"\n❯ Views: {i['viewCount']['short']}" + out += f"\n❯ Uploader: {i['channel']['name']}\n\n" + btn = InlineKeyboardMarkup( + [ + [ + InlineKeyboardButton( + f"1/{len(search['result'])}", + callback_data=f"ytdl_scroll|{search_key}|1", + ) + ], + [InlineKeyboardButton("Download", callback_data=f"yt_gen|{i['id']}")], + ] + ) + img = await get_ytthumb(i["id"]) + caption = out + markup = btn + await message.reply_photo(img, caption=caption, reply_markup=markup) + + @app.on_message(filters.command(["ytdown2"], COMMAND_HANDLER) & ~filters.channel) @capture_err async def ytdownv2(_, message): @@ -25,7 +63,24 @@ async def ytdownv2(_, message): log_group_id=0, cache_path="cache", ffmpeg_location="/usr/bin/mediaextract" ) as ytdl: x = await ytdl.parse(url) - img = x.image_url + img = await get_ytthumb(x.key) caption = x.caption markup = x.buttons await message.reply_photo(img, caption=caption, reply_markup=markup) + + +async def get_ytthumb(videoid: str): + thumb_quality = [ + "maxresdefault.jpg", # Best quality + "hqdefault.jpg", + "sddefault.jpg", + "mqdefault.jpg", + "default.jpg", # Worst quality + ] + thumb_link = "https://i.imgur.com/4LwPLai.png" + for qualiy in thumb_quality: + link = f"https://i.ytimg.com/vi/{videoid}/{qualiy}" + if (await http.get(link)).status_code == 200: + thumb_link = link + break + return thumb_link