From 47aae730c7ff4cb38d0d0ab12de45ef312445ed1 Mon Sep 17 00:00:00 2001 From: Wizzy69 Date: Sat, 9 Jul 2022 14:57:49 +0300 Subject: [PATCH] Music Commands --- ...nds.deps.json => Music Commands.deps.json} | 6 +- BUILDS/net6.0/Music Commands.dll | Bin 0 -> 16896 bytes BUILDS/net6.0/MusicCommands.dll | Bin 17920 -> 0 bytes EVE_LevelingSystem/EVE_LevelingSystem.csproj | 2 +- MusicCommands/AudioFile.cs | 34 ++++ MusicCommands/Data.cs | 3 +- MusicCommands/Leave.cs | 4 +- MusicCommands/MusicCommands.csproj | 1 + MusicCommands/MusicPlayer.cs | 167 ++++++++---------- MusicCommands/MusicPlaylist.cs | 25 +++ MusicCommands/Pause.cs | 4 +- MusicCommands/Play.cs | 85 +++++---- MusicCommands/Skip.cs | 31 ++++ MusicCommands/Unpause.cs | 25 --- MusicCommands/queue.cs | 31 ++++ 15 files changed, 259 insertions(+), 159 deletions(-) rename BUILDS/net6.0/{MusicCommands.deps.json => Music Commands.deps.json} (99%) create mode 100644 BUILDS/net6.0/Music Commands.dll delete mode 100644 BUILDS/net6.0/MusicCommands.dll create mode 100644 MusicCommands/AudioFile.cs create mode 100644 MusicCommands/MusicPlaylist.cs create mode 100644 MusicCommands/Skip.cs delete mode 100644 MusicCommands/Unpause.cs create mode 100644 MusicCommands/queue.cs diff --git a/BUILDS/net6.0/MusicCommands.deps.json b/BUILDS/net6.0/Music Commands.deps.json similarity index 99% rename from BUILDS/net6.0/MusicCommands.deps.json rename to BUILDS/net6.0/Music Commands.deps.json index 1c91428..2834772 100644 --- a/BUILDS/net6.0/MusicCommands.deps.json +++ b/BUILDS/net6.0/Music Commands.deps.json @@ -6,13 +6,13 @@ "compilationOptions": {}, "targets": { ".NETCoreApp,Version=v6.0": { - "MusicCommands/1.0.0": { + "Music Commands/1.0.0": { "dependencies": { "PluginManager": "1.0.0", "YoutubeExplode": "6.2.0" }, "runtime": { - "MusicCommands.dll": {} + "Music Commands.dll": {} } }, "AngleSharp/0.17.0": { @@ -187,7 +187,7 @@ } }, "libraries": { - "MusicCommands/1.0.0": { + "Music Commands/1.0.0": { "type": "project", "serviceable": false, "sha512": "" diff --git a/BUILDS/net6.0/Music Commands.dll b/BUILDS/net6.0/Music Commands.dll new file mode 100644 index 0000000000000000000000000000000000000000..dc82fef662ea0a1a3a2f3bed75e472894b795e22 GIT binary patch literal 16896 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%0AFKWa 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 diff --git a/EVE_LevelingSystem/EVE_LevelingSystem.csproj b/EVE_LevelingSystem/EVE_LevelingSystem.csproj index b8dd406..cf07d6d 100644 --- a/EVE_LevelingSystem/EVE_LevelingSystem.csproj +++ b/EVE_LevelingSystem/EVE_LevelingSystem.csproj @@ -4,7 +4,7 @@ net6.0 enable enable - bin\ + diff --git a/MusicCommands/AudioFile.cs b/MusicCommands/AudioFile.cs new file mode 100644 index 0000000..76daa24 --- /dev/null +++ b/MusicCommands/AudioFile.cs @@ -0,0 +1,34 @@ +using AngleSharp.Dom; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MusicCommands +{ + internal class AudioFile + { + internal string Name { get; set; } + internal string Url { get; set; } + + internal AudioFile(string name, string url) + { + Name = name; + Url = url; + } + + internal async Task DownloadAudioFile() + { + Process proc = new Process(); + proc.StartInfo.FileName = "MusicDownloader.exe"; + proc.StartInfo.Arguments = $"{Url},{Name}"; + proc.StartInfo.UseShellExecute = false; + proc.StartInfo.RedirectStandardOutput = true; + + proc.Start(); + await proc.WaitForExitAsync(); + } + } +} diff --git a/MusicCommands/Data.cs b/MusicCommands/Data.cs index 066af23..ac61ac7 100644 --- a/MusicCommands/Data.cs +++ b/MusicCommands/Data.cs @@ -8,5 +8,6 @@ internal static class Data internal static IAudioClient audioClient = null; internal static IVoiceChannel voiceChannel = null; - internal static MusicPlayer CurrentlyRunning = null; + internal static MusicPlayer MusicPlayer = null; + internal static MusicPlaylist Playlist = new(); } diff --git a/MusicCommands/Leave.cs b/MusicCommands/Leave.cs index 3171489..98af079 100644 --- a/MusicCommands/Leave.cs +++ b/MusicCommands/Leave.cs @@ -22,8 +22,8 @@ internal class Leave : DBCommand { if (Data.audioClient is not null && Data.voiceChannel is not null) { - Data.CurrentlyRunning.Stop(); - Data.CurrentlyRunning = null; + Data.Playlist.ClearQueue(); + Data.MusicPlayer.isPlaying = false; await Data.audioClient.StopAsync(); await Data.voiceChannel.DisconnectAsync(); } diff --git a/MusicCommands/MusicCommands.csproj b/MusicCommands/MusicCommands.csproj index 7ebcc0e..037f43c 100644 --- a/MusicCommands/MusicCommands.csproj +++ b/MusicCommands/MusicCommands.csproj @@ -4,6 +4,7 @@ net6.0 warnings bin\ + Music Commands diff --git a/MusicCommands/MusicPlayer.cs b/MusicCommands/MusicPlayer.cs index 6d8e8f6..536f6d7 100644 --- a/MusicCommands/MusicPlayer.cs +++ b/MusicCommands/MusicPlayer.cs @@ -9,110 +9,93 @@ namespace MusicCommands; internal class MusicPlayer { - public MusicPlayer(Stream input, Stream output) + private Stream outputStream { get; } + + internal bool isPlaying, isPaused; + + public MusicPlayer(Stream outputChannel) { - inputStream = input; - outputStream = output; + outputStream = outputChannel; } - public MusicPlayer(Stream output) + public async Task Play(Stream source, int byteSize) { - inputStream = null; - outputStream = output; - } - - public Stream inputStream { get; } // from FFMPEG - public Stream outputStream { get; } // to Voice Channel - - public bool Paused { get; set; } - private bool _stop { get; set; } - - public void Stop() - { - _stop = true; - } - - public async Task StartSendAudioFromLink(string URL) - { - /* using (HttpClient client = new HttpClient()) - using (HttpResponseMessage response = await client.GetAsync(URL)) - using (var content = response.Content) - { - await (await content.ReadAsStreamAsync()).CopyToAsync(outputStream); - }*/ - - - Stream ms = new MemoryStream(); - var bsize = 512; - new Thread(async delegate(object o) - { - var response = await new HttpClient().GetAsync(URL); - using (var stream = await response.Content.ReadAsStreamAsync()) - { - var buffer = new byte[bsize]; - int read; - while ((read = stream.Read(buffer, 0, buffer.Length)) > 0) - { - var pos = ms.Position; - ms.Position = ms.Length; - ms.Write(buffer, 0, read); - ms.Position = pos; - } - } - } - ).Start(); - Console.Write("Reading data: "); - while (ms.Length < bsize * 10) + isPlaying = true; + while (isPlaying) { - await Task.Delay(1000); - Console.Title = "Reading data: " + ms.Length + " bytes read of " + bsize * 10; - Console.Write("."); - } + if (isPaused) + continue; - Console.WriteLine("\nDone"); - ms.Position = 0; - - _stop = false; - Paused = false; - - while (!_stop) - { - if (Paused) continue; - var buffer = new byte[bsize]; - var read = await ms.ReadAsync(buffer, 0, buffer.Length); - if (read > 0) - await outputStream.WriteAsync(buffer, 0, read); - else + var bits = new byte[byteSize]; + var read = await source.ReadAsync(bits, 0, byteSize); + if (read == 0) break; - } - } - - public async Task StartSendAudio() - { - Paused = false; - _stop = false; - while (!_stop) - { - if (Paused) continue; - var bsize = 512; - var buffer = new byte[bsize]; - var bcount = await inputStream.ReadAsync(buffer, 0, bsize); - if (bcount <= 0) - { - Stop(); - Data.CurrentlyRunning = null; - break; - } - try { - await outputStream.WriteAsync(buffer, 0, bcount); + await outputStream.WriteAsync(bits, 0, read); } - catch (Exception ex) + catch { - await outputStream.FlushAsync(); - Functions.WriteLogFile(ex.ToString()); + break; } } + + + await source.FlushAsync(); + await source.DisposeAsync(); + source.Close(); + await outputStream.FlushAsync(); + isPlaying = false; } + + + /* + public MusicPlayer(Stream input, Stream output) + { + inputStream = input; + outputStream = output; + } + + + + + + public Stream inputStream { get; } // from FFMPEG + public Stream outputStream { get; } // to Voice Channel + + public bool Paused { get; set; } + private bool _stop { get; set; } + + public void Stop() + { + _stop = true; + } + + public async Task StartSendAudio(int bsize) + { + Paused = false; + _stop = false; + while (!_stop) + { + if (Paused) continue; + var buffer = new byte[bsize]; + var bcount = await inputStream.ReadAsync(buffer, 0, bsize); + if (bcount <= 0) + { + Stop(); + Data.CurrentlyRunning = null; + break; + } + + try + { + await outputStream.WriteAsync(buffer, 0, bcount); + } + catch (Exception ex) + { + await outputStream.FlushAsync(); + Functions.WriteLogFile(ex.ToString()); + } + } + }*/ } diff --git a/MusicCommands/MusicPlaylist.cs b/MusicCommands/MusicPlaylist.cs new file mode 100644 index 0000000..f514fb1 --- /dev/null +++ b/MusicCommands/MusicPlaylist.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MusicCommands +{ + internal class MusicPlaylist + { + internal MusicPlaylist() + { + Console.WriteLine("Initialized playlist."); + } + + public Queue QueueList = new(); + + public void Enqueue(AudioFile query) => QueueList.Enqueue(query); + public void ClearQueue() => QueueList.Clear(); + + public int Count => QueueList.Count; + public AudioFile GetNextSong => QueueList.Dequeue(); + public AudioFile WhatIsNext => QueueList.Peek(); + } +} diff --git a/MusicCommands/Pause.cs b/MusicCommands/Pause.cs index 8a86430..5b16b37 100644 --- a/MusicCommands/Pause.cs +++ b/MusicCommands/Pause.cs @@ -8,7 +8,7 @@ internal class Pause : DBCommand { public string Command => "pause"; - public string Description => "Pause the music"; + public string Description => "Pause/Unpause the music that is currently running"; public string Usage => "pause"; @@ -20,6 +20,6 @@ internal class Pause : DBCommand public void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM) { - Data.CurrentlyRunning.Paused = true; + Data.MusicPlayer.isPaused = !Data.MusicPlayer.isPaused; } } diff --git a/MusicCommands/Play.cs b/MusicCommands/Play.cs index bf98e28..b1ab2ae 100644 --- a/MusicCommands/Play.cs +++ b/MusicCommands/Play.cs @@ -1,7 +1,6 @@ using System; using System.Diagnostics; using System.IO; -using System.Threading.Tasks; using Discord; using Discord.Audio; using Discord.Commands; @@ -42,28 +41,47 @@ internal class Play : DBCommand return; } - string url = splitted[1]; + var url = splitted[1]; path += $"{Functions.CreateMD5(url)}"; if (File.Exists(path)) - break; - //await context.Channel.SendMessageAsync("Searching for " + url); - await GetMusicAudio(url, path); - //await context.Channel.SendMessageAsync("Playing: " + url); + { + Data.Playlist.Enqueue(new AudioFile(path, null)); + } + else + { + var file = new AudioFile(path, url); + await file.DownloadAudioFile(); + Data.Playlist.Enqueue(file); + } } else { - string searchString = Functions.MergeStrings(splitted, 1); + var searchString = splitted.MergeStrings(1); path += $"{Functions.CreateMD5(searchString)}"; - if (File.Exists(path)) - break; - await context.Channel.SendMessageAsync("Searching for " + searchString); - await GetMusicAudio(searchString, path); - await context.Channel.SendMessageAsync("Playing: " + searchString); + { + Data.Playlist.Enqueue(new AudioFile(path, null)); + } + else + { + await context.Channel.SendMessageAsync("Searching for " + searchString); + var file = new AudioFile(path, searchString); + await file.DownloadAudioFile(); + Data.Playlist.Enqueue(file); + if (Data.MusicPlayer is null) + await context.Channel.SendMessageAsync("Playing: " + searchString); + } + } + + if (Data.MusicPlayer is not null) + { + await context.Channel.SendMessageAsync("Enqueued your request"); + return; } } while (false); + Data.voiceChannel = (context.User as IGuildUser)?.VoiceChannel; if (Data.voiceChannel == null) @@ -72,16 +90,29 @@ internal class Play : DBCommand return; } - Data.audioClient = await Data.voiceChannel.ConnectAsync(true); - - - using (var ffmpeg = CreateStream(path)) - using (var output = ffmpeg.StandardOutput.BaseStream) - using (var discord = Data.audioClient.CreatePCMStream(AudioApplication.Mixed)) + if (Data.audioClient is null) { - if (Data.CurrentlyRunning != null) Data.CurrentlyRunning.Stop(); - Data.CurrentlyRunning = new MusicPlayer(output, discord); - await Data.CurrentlyRunning.StartSendAudio(); + Data.audioClient = await Data.voiceChannel.ConnectAsync(true); + Data.MusicPlayer = null; + } + + + using (var discordChanneAudioOutStream = Data.audioClient.CreatePCMStream(AudioApplication.Mixed)) + { + if (Data.MusicPlayer is null) + Data.MusicPlayer = new MusicPlayer(discordChanneAudioOutStream); + while (Data.Playlist.Count > 0) + { + var nowPlaying = Data.Playlist.GetNextSong; + using (var ffmpeg = CreateStream(nowPlaying.Name)) + using (var ffmpegOutputBaseStream = ffmpeg.StandardOutput.BaseStream) + { + await Data.MusicPlayer.Play(ffmpegOutputBaseStream, 1024); + Console.WriteLine("Finished playing from" + nowPlaying.Name); + } + } + + Data.MusicPlayer = null; } } @@ -89,16 +120,4 @@ internal class Play : DBCommand { return Process.Start(new ProcessStartInfo { FileName = "ffmpeg", Arguments = $"-hide_banner -loglevel panic -i \"{path}\" -ac 2 -f s16le -ar 48000 pipe:1", UseShellExecute = false, RedirectStandardOutput = true }); } - - private async Task GetMusicAudio(string url, string location) - { - Process proc = new Process(); - proc.StartInfo.FileName = "MusicDownloader.exe"; - proc.StartInfo.Arguments = $"{url},{location}"; - proc.StartInfo.UseShellExecute = false; - proc.StartInfo.RedirectStandardOutput = true; - - proc.Start(); - await proc.WaitForExitAsync(); - } } diff --git a/MusicCommands/Skip.cs b/MusicCommands/Skip.cs new file mode 100644 index 0000000..583363c --- /dev/null +++ b/MusicCommands/Skip.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Discord.Commands; +using Discord.WebSocket; +using PluginManager.Interfaces; + +namespace MusicCommands +{ + public class Skip : DBCommand + { + public string Command => "skip"; + + public string Description => "skip the music that is currently running"; + + public string Usage => "skip"; + + public bool canUseDM => false; + + public bool canUseServer => true; + + public bool requireAdmin => false; + + public void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM) + { + Data.MusicPlayer.isPlaying = false; + } + } +} diff --git a/MusicCommands/Unpause.cs b/MusicCommands/Unpause.cs deleted file mode 100644 index cfe2040..0000000 --- a/MusicCommands/Unpause.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Discord.Commands; -using Discord.WebSocket; -using PluginManager.Interfaces; - -namespace MusicCommands; - -internal class Unpause : DBCommand -{ - public string Command => "unpause"; - - public string Description => "Unpause the music"; - - public string Usage => "unpause"; - - public bool canUseDM => false; - - public bool canUseServer => true; - - public bool requireAdmin => false; - - public void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM) - { - Data.CurrentlyRunning.Paused = false; - } -} diff --git a/MusicCommands/queue.cs b/MusicCommands/queue.cs new file mode 100644 index 0000000..a6c762d --- /dev/null +++ b/MusicCommands/queue.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Discord.Commands; +using Discord.WebSocket; +using PluginManager.Interfaces; + +namespace MusicCommands +{ + public class queue : DBCommand + { + public string Command => "queue"; + + public string Description => "check queue"; + + public string Usage => "queue"; + + public bool canUseDM => false; + + public bool canUseServer => true; + + public bool requireAdmin => false; + + public async void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM) + { + await context.Channel.SendMessageAsync($"You have {Data.Playlist.Count} items in queue"); + } + } +}