50 lines
1.9 KiB
Python
50 lines
1.9 KiB
Python
|
import os
|
||
|
from urllib.parse import urlparse, parse_qs
|
||
|
import discord
|
||
|
|
||
|
DISCORD_TOKEN = os.getenv("DISCORD_TOKEN")
|
||
|
DISCORD_CHANNEL = int(os.getenv("DISCORD_CHANNEL"))
|
||
|
DISCORD_GUILD = int(os.getenv("DISCORD_GUILD"))
|
||
|
|
||
|
|
||
|
class CustomClient(discord.Client):
|
||
|
async def on_ready(self):
|
||
|
print(f"{self.user} has connected to Discord!")
|
||
|
|
||
|
async def on_message(self, message: discord.message.Message):
|
||
|
if (
|
||
|
message.channel.id == DISCORD_CHANNEL
|
||
|
and message.guild.id == DISCORD_GUILD
|
||
|
and message.author.id != self.user.id
|
||
|
):
|
||
|
url = urlparse(message.content)
|
||
|
if "youtu" in url.hostname:
|
||
|
if (
|
||
|
url.path.strip("/").startswith("shorts")
|
||
|
and len(splitted := url.path.split("/")) >= 2
|
||
|
):
|
||
|
video_id = splitted[len(splitted) - 1]
|
||
|
|
||
|
await message.reply(
|
||
|
content=f"https://stream.purser.it/{video_id}?provider=youtube&direct=true"
|
||
|
)
|
||
|
elif video := parse_qs(url.query).get("v"):
|
||
|
if isinstance(video, str):
|
||
|
await message.reply(
|
||
|
content=f"https://stream.purser.it/{video}?provider=youtube&direct=true"
|
||
|
)
|
||
|
elif isinstance(video, list):
|
||
|
await message.reply(
|
||
|
content=f"https://stream.purser.it/{video[0]}?provider=youtube&direct=true"
|
||
|
)
|
||
|
else:
|
||
|
video_id = url.path.strip("/")
|
||
|
await message.reply(
|
||
|
content=f"https://stream.purser.it/{video_id}?provider=youtube&direct=true"
|
||
|
)
|
||
|
|
||
|
|
||
|
intents = discord.Intents.default()
|
||
|
intents.message_content = True
|
||
|
CustomClient(intents=intents).run(DISCORD_TOKEN)
|