video-stream/driver/utils.py

121 lines
3.7 KiB
Python
Raw Normal View History

2021-11-21 05:32:21 +00:00
from driver.queues import QUEUE, clear_queue, get_queue, pop_an_item
2021-10-26 12:56:29 +00:00
from driver.veez import call_py
2021-11-26 04:58:49 +00:00
from config import NEXT_IMG
2021-10-28 15:16:30 +00:00
from pytgcalls.types import Update
2021-10-26 08:59:28 +00:00
from pytgcalls.types.input_stream import AudioPiped, AudioVideoPiped
2021-10-30 23:06:11 +00:00
from pytgcalls.types.input_stream.quality import (
HighQualityAudio,
HighQualityVideo,
LowQualityVideo,
MediumQualityVideo,
)
from pyrogram.types import (
CallbackQuery,
InlineKeyboardButton,
InlineKeyboardMarkup,
Message,
)
from pyrogram import Client, filters
2021-10-28 15:16:30 +00:00
from pytgcalls.types.stream import StreamAudioEnded, StreamVideoEnded
2021-10-26 08:59:28 +00:00
2021-10-28 15:16:30 +00:00
keyboard = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(text="• Mᴇɴ", callback_data="cbmenu"),
InlineKeyboardButton(text="• Cʟsᴇ", callback_data="cls"),
]
]
)
2021-10-26 08:59:28 +00:00
async def skip_current_song(chat_id):
2021-10-30 23:06:11 +00:00
if chat_id in QUEUE:
chat_queue = get_queue(chat_id)
if len(chat_queue) == 1:
await call_py.leave_group_call(chat_id)
clear_queue(chat_id)
return 1
else:
2021-11-21 05:32:21 +00:00
try:
songname = chat_queue[1][0]
url = chat_queue[1][1]
link = chat_queue[1][2]
type = chat_queue[1][3]
Q = chat_queue[1][4]
if type == "Audio":
await call_py.change_stream(
chat_id,
AudioPiped(
url,
),
)
elif type == "Video":
if Q == 720:
hm = HighQualityVideo()
elif Q == 480:
hm = MediumQualityVideo()
elif Q == 360:
hm = LowQualityVideo()
await call_py.change_stream(
chat_id, AudioVideoPiped(url, HighQualityAudio(), hm)
)
pop_an_item(chat_id)
return [songname, link, type]
except:
await call_py.leave_group_call(chat_id)
clear_queue(chat_id)
return 2
2021-10-30 23:06:11 +00:00
else:
return 0
2021-10-26 08:59:28 +00:00
async def skip_item(chat_id, h):
2021-10-30 23:06:11 +00:00
if chat_id in QUEUE:
chat_queue = get_queue(chat_id)
try:
x = int(h)
songname = chat_queue[x][0]
chat_queue.pop(x)
return songname
except Exception as e:
print(e)
return 0
else:
return 0
2021-10-26 08:59:28 +00:00
2021-11-21 05:32:21 +00:00
@call_py.on_kicked()
async def kicked_handler(_, chat_id: int):
if chat_id in QUEUE:
clear_queue(chat_id)
@call_py.on_closed_voice_chat()
async def closed_voice_chat_handler(_, chat_id: int):
if chat_id in QUEUE:
clear_queue(chat_id)
@call_py.on_left()
async def left_handler(_, chat_id: int):
if chat_id in QUEUE:
clear_queue(chat_id)
2021-10-26 08:59:28 +00:00
@call_py.on_stream_end()
async def stream_end_handler(_, u: Update, m: Message):
2021-11-01 04:17:54 +00:00
if isinstance(u, StreamAudioEnded) or isinstance(u, StreamVideoEnded):
chat_id = u.chat_id
grup_id = m.chat.id
2021-11-01 04:17:54 +00:00
print(chat_id)
op = await skip_current_song(chat_id)
if op==1:
await _.send_message(grup_id, "✅ __Queues__ **is empty**\n\n» **userbot leaving video chat**")
elif op==2:
await _.send_message(grup_id, "❌ **an error occurred**\n\n» **Clearing** __Queues__ **and leaving video chat.**")
else:
await _.send_photo(grup_id, photo=f"{NEXT_IMG}", caption=f"💡 **Streaming next track**\n\n🏷 **Name:** [{op[0]}]({op[1]}) | `{op[2]}`\n💭 **Chat:** `{grup_id}`", reply_markup=keyboard)
else:
pass