from pyrogram import filters from pyrogram.types import InlineKeyboardMarkup, Message import config from DragMusic import YouTube, app from DragMusic.core.call import Drag from DragMusic.misc import db from DragMusic.utils.database import get_loop from DragMusic.utils.decorators import AdminRightsCheck from DragMusic.utils.inline import close_markup, stream_markup from DragMusic.utils.stream.autoclear import auto_clean from DragMusic.utils.thumbnails import gen_thumb from config import BANNED_USERS @app.on_message( filters.command(["skip", "cskip", "next", "cnext"]) & filters.group & ~BANNED_USERS ) @AdminRightsCheck async def skip(cli, message: Message, _, chat_id): if not len(message.command) < 2: loop = await get_loop(chat_id) if loop != 0: return await message.reply_text(_["admin_8"]) state = message.text.split(None, 1)[1].strip() if state.isnumeric(): state = int(state) check = db.get(chat_id) if check: count = len(check) if count > 2: count = int(count - 1) if 1 <= state <= count: for x in range(state): popped = None try: popped = check.pop(0) except: return await message.reply_text(_["admin_12"]) if popped: await auto_clean(popped) if not check: try: await message.reply_text( text=_["admin_6"].format( message.from_user.mention, message.chat.title, ), reply_markup=close_markup(_), ) await Drag.stop_stream(chat_id) except: return break else: return await message.reply_text(_["admin_11"].format(count)) else: return await message.reply_text(_["admin_10"]) else: return await message.reply_text(_["queue_2"]) else: return await message.reply_text(_["admin_9"]) else: check = db.get(chat_id) popped = None try: popped = check.pop(0) if popped: await auto_clean(popped) if not check: await message.reply_text( text=_["admin_6"].format( message.from_user.mention, message.chat.title ), reply_markup=close_markup(_), ) try: return await Drag.stop_stream(chat_id) except: return except: try: await message.reply_text( text=_["admin_6"].format( message.from_user.mention, message.chat.title ), reply_markup=close_markup(_), ) return await Drag.stop_stream(chat_id) except: return queued = check[0]["file"] title = (check[0]["title"]).title() user = check[0]["by"] streamtype = check[0]["streamtype"] videoid = check[0]["vidid"] status = True if str(streamtype) == "video" else None db[chat_id][0]["played"] = 0 exis = (check[0]).get("old_dur") if exis: db[chat_id][0]["dur"] = exis db[chat_id][0]["seconds"] = check[0]["old_second"] db[chat_id][0]["speed_path"] = None db[chat_id][0]["speed"] = 1.0 if "live_" in queued: n, link = await YouTube.video(videoid, True) if n == 0: return await message.reply_text(_["admin_7"].format(title)) try: image = await YouTube.thumbnail(videoid, True) except: image = None try: await Drag.skip_stream(chat_id, link, video=status, image=image) except: return await message.reply_text(_["call_6"]) button = stream_markup(_, chat_id) img = await gen_thumb(videoid) run = await message.reply_photo( photo=img, caption=_["stream_1"].format( f"https://t.me/{app.username}?start=info_{videoid}", title[:23], check[0]["dur"], user, ), reply_markup=InlineKeyboardMarkup(button), ) db[chat_id][0]["mystic"] = run db[chat_id][0]["markup"] = "tg" elif "vid_" in queued: mystic = await message.reply_text(_["call_7"], disable_web_page_preview=True) try: file_path, direct = await YouTube.download( videoid, mystic, videoid=True, video=status, ) except: return await mystic.edit_text(_["call_6"]) try: image = await YouTube.thumbnail(videoid, True) except: image = None try: await Drag.skip_stream(chat_id, file_path, video=status, image=image) except: return await mystic.edit_text(_["call_6"]) button = stream_markup(_, chat_id) img = await gen_thumb(videoid) run = await message.reply_photo( photo=img, caption=_["stream_1"].format( f"https://t.me/{app.username}?start=info_{videoid}", title[:23], check[0]["dur"], user, ), reply_markup=InlineKeyboardMarkup(button), ) db[chat_id][0]["mystic"] = run db[chat_id][0]["markup"] = "stream" await mystic.delete() elif "index_" in queued: try: await Drag.skip_stream(chat_id, videoid, video=status) except: return await message.reply_text(_["call_6"]) button = stream_markup(_, chat_id) run = await message.reply_photo( photo=config.STREAM_IMG_URL, caption=_["stream_2"].format(user), reply_markup=InlineKeyboardMarkup(button), ) db[chat_id][0]["mystic"] = run db[chat_id][0]["markup"] = "tg" else: if videoid == "telegram": image = None elif videoid == "soundcloud": image = None else: try: image = await YouTube.thumbnail(videoid, True) except: image = None try: await Drag.skip_stream(chat_id, queued, video=status, image=image) except: return await message.reply_text(_["call_6"]) if videoid == "telegram": button = stream_markup(_, chat_id) run = await message.reply_photo( photo=config.TELEGRAM_AUDIO_URL if str(streamtype) == "audio" else config.TELEGRAM_VIDEO_URL, caption=_["stream_1"].format( config.SUPPORT_CHAT, title[:23], check[0]["dur"], user ), reply_markup=InlineKeyboardMarkup(button), ) db[chat_id][0]["mystic"] = run db[chat_id][0]["markup"] = "tg" elif videoid == "soundcloud": button = stream_markup(_, chat_id) run = await message.reply_photo( photo=config.SOUNCLOUD_IMG_URL if str(streamtype) == "audio" else config.TELEGRAM_VIDEO_URL, caption=_["stream_1"].format( config.SUPPORT_CHAT, title[:23], check[0]["dur"], user ), reply_markup=InlineKeyboardMarkup(button), ) db[chat_id][0]["mystic"] = run db[chat_id][0]["markup"] = "tg" else: button = stream_markup(_, chat_id) img = await gen_thumb(videoid) run = await message.reply_photo( photo=img, caption=_["stream_1"].format( f"https://t.me/{app.username}?start=info_{videoid}", title[:23], check[0]["dur"], user, ), reply_markup=InlineKeyboardMarkup(button), ) db[chat_id][0]["mystic"] = run db[chat_id][0]["markup"] = "stream"