Spaces:
Paused
Paused
Add /webplay command to play songs in the mini web app only
Browse files
DragMusic/plugins/play/play.py
CHANGED
|
@@ -2,7 +2,7 @@ import random
|
|
| 2 |
import string
|
| 3 |
|
| 4 |
from pyrogram import filters
|
| 5 |
-
from pyrogram.types import InlineKeyboardMarkup, InputMediaPhoto, Message
|
| 6 |
from pytgcalls.exceptions import NoActiveGroupCall
|
| 7 |
|
| 8 |
import config
|
|
@@ -442,6 +442,44 @@ async def play_commnd(
|
|
| 442 |
return await play_logs(message, streamtype=f"URL Searched Inline")
|
| 443 |
|
| 444 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 445 |
@app.on_callback_query(filters.regex("MusicStream") & ~BANNED_USERS)
|
| 446 |
@languageCB
|
| 447 |
async def play_music(client, CallbackQuery, _):
|
|
|
|
| 2 |
import string
|
| 3 |
|
| 4 |
from pyrogram import filters
|
| 5 |
+
from pyrogram.types import InlineKeyboardMarkup, InputMediaPhoto, Message, InlineKeyboardButton
|
| 6 |
from pytgcalls.exceptions import NoActiveGroupCall
|
| 7 |
|
| 8 |
import config
|
|
|
|
| 442 |
return await play_logs(message, streamtype=f"URL Searched Inline")
|
| 443 |
|
| 444 |
|
| 445 |
+
@app.on_message(filters.command("webplay") & ~BANNED_USERS)
|
| 446 |
+
async def webplay_command(client, message: Message):
|
| 447 |
+
query = None
|
| 448 |
+
if len(message.command) > 1:
|
| 449 |
+
query = " ".join(message.command[1:])
|
| 450 |
+
else:
|
| 451 |
+
await message.reply_text("Please provide a song name or YouTube link to play in the web app.")
|
| 452 |
+
return
|
| 453 |
+
mystic = await message.reply_text("Searching for your song on YouTube...")
|
| 454 |
+
# Search YouTube and get track info
|
| 455 |
+
try:
|
| 456 |
+
details, track_id = await YouTube.track(query)
|
| 457 |
+
except Exception as e:
|
| 458 |
+
await mystic.edit_text(f"Failed to find song: {e}")
|
| 459 |
+
return
|
| 460 |
+
# Download audio
|
| 461 |
+
try:
|
| 462 |
+
file_path, _ = await YouTube.download(details["link"], mystic)
|
| 463 |
+
except Exception as e:
|
| 464 |
+
await mystic.edit_text(f"Failed to download song: {e}")
|
| 465 |
+
return
|
| 466 |
+
# Store in nowplaying
|
| 467 |
+
song_info = {
|
| 468 |
+
"title": details["title"],
|
| 469 |
+
"link": details["link"],
|
| 470 |
+
"path": file_path,
|
| 471 |
+
"dur": details["duration_min"],
|
| 472 |
+
"thumb": details.get("thumb"),
|
| 473 |
+
}
|
| 474 |
+
nowplaying.set_current_song(song_info)
|
| 475 |
+
await mystic.edit_text(
|
| 476 |
+
"Song is ready in the mini web app!",
|
| 477 |
+
reply_markup=InlineKeyboardMarkup(
|
| 478 |
+
[[InlineKeyboardButton("Open Player", url="https://huggingface.co/spaces/dragonxd1/DragMusicV2")]]
|
| 479 |
+
)
|
| 480 |
+
)
|
| 481 |
+
|
| 482 |
+
|
| 483 |
@app.on_callback_query(filters.regex("MusicStream") & ~BANNED_USERS)
|
| 484 |
@languageCB
|
| 485 |
async def play_music(client, CallbackQuery, _):
|