1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-27 13:34:28 +00:00

y no commit

This commit is contained in:
Steffo 2019-04-16 14:38:45 +02:00
parent 71cc0e35dd
commit 85468ec78d
5 changed files with 46 additions and 10 deletions

View file

@ -12,14 +12,13 @@ loop = asyncio.get_event_loop()
log = logging.root
log.addHandler(logging.StreamHandler())
log.setLevel(logging.DEBUG)
logging.getLogger("royalnet.bots.telegram").setLevel(logging.DEBUG)
logging.getLogger("royalnet.bots.discord").setLevel(logging.DEBUG)
logging.getLogger("royalnet.network.royalnetserver").setLevel(logging.DEBUG)
commands = [PingCommand, ShipCommand, SmecdsCommand, ColorCommand, CiaoruoziCommand, DebugCreateCommand, SyncCommand,
AuthorCommand, DiarioCommand, RageCommand, DateparserCommand, ReminderCommand, KvactiveCommand, KvCommand,
KvrollCommand, VideoinfoCommand, SummonCommand]
KvrollCommand, VideoinfoCommand, SummonCommand, PlayCommand]
master = RoyalnetServer("localhost", 1234, "sas")
tg_bot = TelegramBot(os.environ["TG_AK"], "ws://localhost:1234", "sas", commands, os.environ["DB_PATH"], Royal, Telegram, "tg_id", error_command=ErrorHandlerCommand)

View file

@ -1,4 +1,5 @@
from .playmodes import PlayMode, Playlist, Pool
from .youtubedl import YtdlFile, YtdlInfo
from .royalaudiofile import RoyalAudioFile
__all__ = ["PlayMode", "Playlist", "Pool", "YtdlFile", "YtdlInfo"]

View file

@ -13,17 +13,17 @@ log = _logging.getLogger(__name__)
class RoyalAudioFile(YtdlFile):
ytdl_args = {
"logger": log, # Log messages to a logging.Logger instance.
"quiet": True, # Do not print messages to stdout.
"noplaylist": True, # Download single video instead of a playlist if in doubt.
"no_warnings": True, # Do not print out anything for warnings.,
"format": "bestaudio" # Fetch the best audio format available
}
def __init__(self, info: "YtdlInfo", **ytdl_args):
super().__init__(info, outtmpl="%(title)s-%(id)s.%(ext)s", **ytdl_args)
# Overwrite the new ytdl_args
self.ytdl_args = {**self.ytdl_args, **ytdl_args}
super().__init__(info, outtmpl="%(title)s-%(id)s.%(ext)s", **self.ytdl_args)
# Find the audio_filename with a regex (should be video.opus)
self.audio_filename = re.sub(rf"\.{self.info.ext}$", ".opus", self.video_filename)
# Convert the video to opus
self.audio_filename = re.sub(rf"\.{self.info.ext}$", ".mp3", self.video_filename)
# Convert the video to mp3
# Actually not needed, but we do this anyways for compression reasons
converter = ffmpeg.input(self.video_filename) \
.output(self.audio_filename)
converter.run()
@ -40,4 +40,4 @@ class RoyalAudioFile(YtdlFile):
os.remove(self.audio_filename)
def as_audio_source(self):
return discord.FFmpegPCMAudio(self.audio_filename)
return discord.FFmpegPCMAudio(f"./{self.audio_filename}")

View file

@ -15,8 +15,9 @@ from .kv import KvCommand
from .kvroll import KvrollCommand
from .videoinfo import VideoinfoCommand
from .summon import SummonCommand
from .play import PlayCommand
__all__ = ["NullCommand", "PingCommand", "ShipCommand", "SmecdsCommand", "CiaoruoziCommand", "ColorCommand",
"SyncCommand", "DiarioCommand", "RageCommand", "DateparserCommand", "AuthorCommand", "ReminderCommand",
"KvactiveCommand", "KvCommand", "KvrollCommand", "VideoinfoCommand", "SummonCommand"]
"KvactiveCommand", "KvCommand", "KvrollCommand", "VideoinfoCommand", "SummonCommand", "PlayCommand"]

35
royalnet/commands/play.py Normal file
View file

@ -0,0 +1,35 @@
import typing
from ..utils import Command, Call
from ..network import Message
class PlayMessage(Message):
def __init__(self, url: str):
self.url: str = url
class PlaySuccessful(Message):
pass
class PlayError(Message):
def __init__(self, reason: str):
self.reason: str = reason
class PlayCommand(Command):
command_name = "play"
command_description = "Riproduce una canzone in chat vocale."
command_syntax = "(url)"
@classmethod
async def common(cls, call: Call):
url: str = call.args[0]
response: typing.Union[PlaySuccessful, PlayError] = await call.net_request(PlayMessage(url), "discord")
if isinstance(response, PlayError):
await call.reply(f"⚠️ Si è verificato un'errore nella richiesta di riproduzione:\n[c]{response.reason}[/c]")
return
elif isinstance(response, PlaySuccessful):
await call.reply(f"✅ Richiesta la riproduzione di [c]{url}[/c].")
return
raise TypeError(f"Received unexpected response in the PlayCommand: {response.__class__.__name__}")