taslim19
MusicV2
a8e9b84
raw
history blame
8.82 kB
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 get_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 get_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 get_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 get_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"