Compare commits

16 Commits

Author SHA1 Message Date
Lukas Blacha
71e76d754d Changed Version and Branch (0.2, main) 2023-02-08 13:19:49 +01:00
Lukas Blacha
be24384610 Added Youtube Search-Command 2023-02-08 13:14:23 +01:00
Lukas Blacha
e1f1fedfdf Added youtube_search method 2023-02-08 12:54:36 +01:00
Lukas Blacha
4aabde261b Added youtube_search method 2023-02-08 12:48:01 +01:00
Lukas Blacha
53f175379f Added youtube_search method 2023-02-08 12:47:08 +01:00
Lukas Blacha
6993fde7d8 Changed Google-Search to Youtube (fix) 2023-02-08 12:42:49 +01:00
Lukas Blacha
bc8b212504 Changed Google-Search to Youtube (fix) 2023-02-08 12:42:14 +01:00
Lukas Blacha
e51f75c57c Changed Google-Search to Youtube (fix) 2023-02-08 12:39:56 +01:00
Lukas Blacha
08934559b8 Changed Google-Search to Youtube (fix) 2023-02-08 12:16:41 +01:00
Lukas Blacha
93fdfb1f77 Changed Google-Search to Youtube (fix) 2023-02-08 12:15:27 +01:00
Lukas Blacha
9b1e473ec1 Changed Google-Search to Youtube (fix) 2023-02-08 12:15:03 +01:00
Lukas Blacha
7ffc356b1c Changed Google-Search to Youtube (fix) 2023-02-08 12:14:00 +01:00
Lukas Blacha
71bd1f6ae5 Changed Google-Search to Youtube (fix) 2023-02-08 12:11:04 +01:00
Lukas Blacha
5d58d05668 Changed Google-Search to Youtube 2023-02-08 12:10:18 +01:00
Lukas Blacha
c1e731aa4d Added branch variable 2023-02-08 11:45:52 +01:00
Lukas Blacha
c08bad409f Added Google-Command 2023-02-08 11:42:24 +01:00

View File

@@ -1,5 +1,9 @@
import asyncio
import re
from datetime import timedelta
from urllib.parse import quote_plus
import aiohttp
import yt_dlp
import discord
import logging
@@ -14,7 +18,9 @@ banner = """
| | | | \__ \ | ( _____| | | ( | |
_| _| \__,_| ____/ _| \___| ____/ \___/ \__|
"""
version = "0.1"
branch = "dev"
success = "**Success ✅**\n"
warning = "**Warning **\n"
error = "**Error ❗️**\n"
@@ -82,6 +88,18 @@ else:
before_options="-threads 2", options=ffmpeg_options), data=data)
async def youtube_search(search: str):
p = {"search_query": search}
# Spoof a user agent header or the request will immediately fail
h = {"User-Agent": "Mozilla/5.0"}
async with aiohttp.ClientSession() as client:
async with client.get("https://www.youtube.com/results", params=p, headers=h) as resp:
dom = await resp.text()
found = re.findall(r"watch\?v=(\S{11})", dom)[0]
url = f"https://www.youtube.com/watch?v={found}"
return url
intents = discord.Intents.default()
intents.message_content = True
@@ -95,7 +113,7 @@ else:
@bot.event
async def on_ready():
print(banner)
print(f"Bot Version: {version}")
print(f"Bot Version: {version} ({branch})")
print(f"Bot: {bot.user} (ID: {bot.user.id})")
print(
f"Invitation LINK: https://discord.com/api/oauth2/authorize?client_id={bot.user.id}&permissions=968552344896&scope=bot%20applications.commands")
@@ -198,8 +216,25 @@ else:
await ctx.voice_client.disconnect(force=True)
@bot.slash_command(name="youtube", description="Searches YouTube for a given string and plays the first result")
async def youtube(ctx, *, search: str):
url = await youtube_search(search=search)
async with ctx.typing():
await ctx.respond("🤖 Your song is queued for download... please wait ", ephemeral=True)
try:
player = await YTDLSource.from_url(url, loop=bot.loop)
ctx.voice_client.play(
player, after=lambda e: print(f"Player error: {e}") if e else None
)
except discord.HTTPException as err:
raise commands.CommandError(err)
finally:
await ctx.send(f"{success}Now playing: `{player.title}`\nRequested by {ctx.author.mention}")
@play.before_invoke
@stream.before_invoke
@youtube.before_invoke
async def ensure_voice(ctx: commands.Context):
if ctx.voice_client is None:
if ctx.author.voice: