Adding connect to vocal on web page
This commit is contained in:
parent
d729b7875c
commit
3d661951bd
@ -2,10 +2,11 @@ package net.Broken.Outils.Command;
|
|||||||
|
|
||||||
import net.Broken.Commande;
|
import net.Broken.Commande;
|
||||||
import net.Broken.MainBot;
|
import net.Broken.MainBot;
|
||||||
import net.Broken.RestApi.CommandInterface;
|
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
import org.reflections.Reflections;
|
import org.reflections.Reflections;
|
||||||
|
import org.reflections.util.ClasspathHelper;
|
||||||
|
import org.reflections.util.ConfigurationBuilder;
|
||||||
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@ -13,7 +14,11 @@ public class CommandLoader {
|
|||||||
private static Logger logger = LogManager.getLogger();
|
private static Logger logger = LogManager.getLogger();
|
||||||
public static void load(){
|
public static void load(){
|
||||||
logger.info("Loading Command...");
|
logger.info("Loading Command...");
|
||||||
Reflections reflections = new Reflections("net.Broken.Command");
|
Reflections reflections = new Reflections(new ConfigurationBuilder().setUrls(ClasspathHelper.forPackage(
|
||||||
|
"net.Broken.Commands",
|
||||||
|
ClasspathHelper.contextClassLoader(),
|
||||||
|
ClasspathHelper.staticClassLoader()))
|
||||||
|
);
|
||||||
Set<Class<? extends Commande>> modules = reflections.getSubTypesOf(Commande.class);
|
Set<Class<? extends Commande>> modules = reflections.getSubTypesOf(Commande.class);
|
||||||
|
|
||||||
logger.info("Find " + modules.size() + " Command:");
|
logger.info("Find " + modules.size() + " Command:");
|
||||||
|
32
src/main/java/net/Broken/RestApi/Commands/Connect.java
Normal file
32
src/main/java/net/Broken/RestApi/Commands/Connect.java
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
package net.Broken.RestApi.Commands;
|
||||||
|
|
||||||
|
import net.Broken.Commands.Music;
|
||||||
|
import net.Broken.RestApi.CommandInterface;
|
||||||
|
import net.Broken.RestApi.Data.CommandPostData;
|
||||||
|
import net.Broken.RestApi.Data.CommandResponseData;
|
||||||
|
import net.Broken.audio.AudioM;
|
||||||
|
import net.dv8tion.jda.core.entities.VoiceChannel;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
|
||||||
|
public class Connect implements CommandInterface{
|
||||||
|
@Override
|
||||||
|
public ResponseEntity<CommandResponseData> action(Music musicCommande, CommandPostData data) {
|
||||||
|
AudioM audioM = musicCommande.getAudioManager();
|
||||||
|
if(data.chanelId == null)
|
||||||
|
return new ResponseEntity<>(new CommandResponseData(data.command,"Missing chanelId"),HttpStatus.BAD_REQUEST);
|
||||||
|
VoiceChannel voiceChannel = null;
|
||||||
|
try{
|
||||||
|
voiceChannel = audioM.getGuild().getVoiceChannelById(data.chanelId);
|
||||||
|
}catch (NumberFormatException ignored){}
|
||||||
|
|
||||||
|
if(voiceChannel == null){
|
||||||
|
return new ResponseEntity<>(new CommandResponseData(data.command,"Channel Not found"), HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
|
|
||||||
|
audioM.getGuildAudioPlayer(musicCommande.getAudioManager().getGuild());
|
||||||
|
audioM.getGuild().getAudioManager().openAudioConnection(audioM.getGuild().getVoiceChannelById(data.chanelId));
|
||||||
|
audioM.setPlayedChanel(voiceChannel);
|
||||||
|
return new ResponseEntity<>(new CommandResponseData(data.command,"Accepted"),HttpStatus.OK);
|
||||||
|
}
|
||||||
|
}
|
14
src/main/java/net/Broken/RestApi/Data/Chanel.java
Normal file
14
src/main/java/net/Broken/RestApi/Data/Chanel.java
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
package net.Broken.RestApi.Data;
|
||||||
|
|
||||||
|
public class Chanel {
|
||||||
|
public String name;
|
||||||
|
public String id;
|
||||||
|
public int pos;
|
||||||
|
|
||||||
|
public Chanel(String name, String id, int pos) {
|
||||||
|
this.name = name;
|
||||||
|
this.id = id;
|
||||||
|
this.pos = pos;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -6,4 +6,5 @@ public class CommandPostData {
|
|||||||
public boolean onHead;
|
public boolean onHead;
|
||||||
public String url;
|
public String url;
|
||||||
public int playlistLimit;
|
public int playlistLimit;
|
||||||
|
public String chanelId;
|
||||||
}
|
}
|
||||||
|
@ -4,23 +4,25 @@ import com.sedmelluq.discord.lavaplayer.player.AudioPlayer;
|
|||||||
import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
|
import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
|
||||||
import com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo;
|
import com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo;
|
||||||
import net.Broken.Commands.Music;
|
import net.Broken.Commands.Music;
|
||||||
// import net.Broken.DB.SavedPlaylistRepository;
|
|
||||||
import net.Broken.MainBot;
|
import net.Broken.MainBot;
|
||||||
import net.Broken.RestApi.Data.CommandPostData;
|
import net.Broken.RestApi.Data.*;
|
||||||
import net.Broken.RestApi.Data.CommandResponseData;
|
|
||||||
import net.Broken.RestApi.Data.CurrentMusicData;
|
|
||||||
import net.Broken.RestApi.Data.PlaylistData;
|
|
||||||
import net.Broken.audio.NotConectedException;
|
import net.Broken.audio.NotConectedException;
|
||||||
import net.Broken.audio.NullMusicManager;
|
import net.Broken.audio.NullMusicManager;
|
||||||
|
import net.dv8tion.jda.core.entities.VoiceChannel;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
// import net.Broken.DB.SavedPlaylistRepository;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/api/music/")
|
@RequestMapping("/api/music/")
|
||||||
public class MusicWebAPIController {
|
public class MusicWebAPIController {
|
||||||
@ -80,6 +82,16 @@ public class MusicWebAPIController {
|
|||||||
return new ResponseEntity<>(new CommandResponseData(null, null), HttpStatus.NO_CONTENT);
|
return new ResponseEntity<>(new CommandResponseData(null, null), HttpStatus.NO_CONTENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/getChanel", method = RequestMethod.GET)
|
||||||
|
public List<Chanel> getChanel(){
|
||||||
|
List<Chanel> temp = new ArrayList<>();
|
||||||
|
logger.info(MainBot.jda.getVoiceChannels().size());
|
||||||
|
for(VoiceChannel aChanel : MainBot.jda.getVoiceChannels()){
|
||||||
|
temp.add(new Chanel(aChanel.getName(),aChanel.getId(),aChanel.getPosition()));
|
||||||
|
}
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,6 +25,8 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class AudioM {
|
public class AudioM {
|
||||||
|
|
||||||
|
|
||||||
private GuildMusicManager musicManager;
|
private GuildMusicManager musicManager;
|
||||||
private AudioPlayerManager playerManager;
|
private AudioPlayerManager playerManager;
|
||||||
private VoiceChannel playedChanel;
|
private VoiceChannel playedChanel;
|
||||||
@ -115,7 +117,7 @@ public class AudioM {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private GuildMusicManager getGuildAudioPlayer(Guild guild) {
|
public GuildMusicManager getGuildAudioPlayer(Guild guild) {
|
||||||
if (musicManager == null) {
|
if (musicManager == null) {
|
||||||
musicManager = new GuildMusicManager(playerManager);
|
musicManager = new GuildMusicManager(playerManager);
|
||||||
}
|
}
|
||||||
@ -273,4 +275,8 @@ public class AudioM {
|
|||||||
public VoiceChannel getPlayedChanel() {
|
public VoiceChannel getPlayedChanel() {
|
||||||
return playedChanel;
|
return playedChanel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setPlayedChanel(VoiceChannel playedChanel) {
|
||||||
|
this.playedChanel = playedChanel;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,21 @@
|
|||||||
var savedPlaylist;
|
var savedPlaylist;
|
||||||
var error = false;
|
var error = false;
|
||||||
var state;
|
var state;
|
||||||
|
var disconected = false;
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
|
||||||
setInterval("getCurentMusic()",1000);
|
setInterval("getCurentMusic()",1000);
|
||||||
// the "href" attribute of the modal trigger must specify the modal ID that wants to be triggered
|
// the "href" attribute of the modal trigger must specify the modal ID that wants to be triggered
|
||||||
$('.modal').modal();
|
$('#modalAdd').modal();
|
||||||
|
|
||||||
|
$('#modalChanels').modal({
|
||||||
|
dismissible: false, // Modal can be dismissed by clicking outside of the modal
|
||||||
|
})
|
||||||
|
|
||||||
|
$('#modalChanels').modal('open');
|
||||||
|
|
||||||
|
|
||||||
$('.button-collapse-1').sideNav({
|
$('.button-collapse-1').sideNav({
|
||||||
menuWidth: 400, // Default is 300
|
menuWidth: 400, // Default is 300
|
||||||
edge: 'right', // Choose the horizontal origin
|
edge: 'right', // Choose the horizontal origin
|
||||||
@ -64,6 +74,11 @@ $(document).ready(function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
$('#modalChanels').change(function () {
|
||||||
|
if ($('#btn_ok_channel').hasClass("disabled")) {
|
||||||
|
$('#btn_ok_channel').removeClass("disabled");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
$('#flush_btn').click(function () {
|
$('#flush_btn').click(function () {
|
||||||
var command = {
|
var command = {
|
||||||
@ -82,6 +97,7 @@ $(document).ready(function() {
|
|||||||
$('#input_link').val('');
|
$('#input_link').val('');
|
||||||
sendCommand(JSON.stringify(command));
|
sendCommand(JSON.stringify(command));
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#btn_add_bottom').click(function () {
|
$('#btn_add_bottom').click(function () {
|
||||||
|
|
||||||
var command = {
|
var command = {
|
||||||
@ -94,6 +110,15 @@ $(document).ready(function() {
|
|||||||
sendCommand(JSON.stringify(command));
|
sendCommand(JSON.stringify(command));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('#btn_ok_channel').click(function () {
|
||||||
|
|
||||||
|
var command = {
|
||||||
|
command: "CONNECT",
|
||||||
|
chanelId: $('input[name=vocalRadio]:checked').val()
|
||||||
|
};
|
||||||
|
sendCommand(JSON.stringify(command));
|
||||||
|
});
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@ -110,6 +135,8 @@ function getCurentMusic() {
|
|||||||
state = data.state;
|
state = data.state;
|
||||||
switch (data.state) {
|
switch (data.state) {
|
||||||
case "STOP":
|
case "STOP":
|
||||||
|
disconected = false;
|
||||||
|
$('#modalChanels').modal('close');
|
||||||
$('#music_text').text("Connected on Vocal Channel");
|
$('#music_text').text("Connected on Vocal Channel");
|
||||||
|
|
||||||
if (!$('#btn_info').hasClass("indeterminate")) {
|
if (!$('#btn_info').hasClass("indeterminate")) {
|
||||||
@ -131,6 +158,13 @@ function getCurentMusic() {
|
|||||||
$('#flush_btn').removeClass("disabled");
|
$('#flush_btn').removeClass("disabled");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($('#btn_play').hasClass("disabled")) {
|
||||||
|
$('#btn_play').removeClass("disabled");
|
||||||
|
}
|
||||||
|
if ($('#btn_next').hasClass("disabled")) {
|
||||||
|
$('#btn_next').removeClass("disabled");
|
||||||
|
}
|
||||||
|
|
||||||
$('#music_img').attr("src","/img/no_music.jpg");
|
$('#music_img').attr("src","/img/no_music.jpg");
|
||||||
$('#total_time').text("00:00");
|
$('#total_time').text("00:00");
|
||||||
$('#current_time').text("00:00");
|
$('#current_time').text("00:00");
|
||||||
@ -138,12 +172,16 @@ function getCurentMusic() {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case "PLAYING":
|
case "PLAYING":
|
||||||
|
disconected = false;
|
||||||
|
$('#modalChanels').modal('close');
|
||||||
$('#btn_play').children().text("pause");
|
$('#btn_play').children().text("pause");
|
||||||
updateControl(data);
|
updateControl(data);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "PAUSE":
|
case "PAUSE":
|
||||||
|
disconected = false;
|
||||||
|
$('#modalChanels').modal('close');
|
||||||
$('#btn_play').children().text("play_arrow");
|
$('#btn_play').children().text("play_arrow");
|
||||||
updateControl(data);
|
updateControl(data);
|
||||||
|
|
||||||
@ -151,6 +189,8 @@ function getCurentMusic() {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case "LOADING":
|
case "LOADING":
|
||||||
|
disconected = false;
|
||||||
|
$('#modalChanels').modal('close');
|
||||||
if (!$('#btn_info').hasClass("determinate")) {
|
if (!$('#btn_info').hasClass("determinate")) {
|
||||||
$('#btn_info').addClass("indeterminate").removeClass("determinate");
|
$('#btn_info').addClass("indeterminate").removeClass("determinate");
|
||||||
}
|
}
|
||||||
@ -186,6 +226,14 @@ function getCurentMusic() {
|
|||||||
|
|
||||||
|
|
||||||
$('#music_img').attr("src","/img/disconnected.png");
|
$('#music_img').attr("src","/img/disconnected.png");
|
||||||
|
|
||||||
|
if(!disconected){
|
||||||
|
getChannels();
|
||||||
|
disconected = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
getPlayList();
|
getPlayList();
|
||||||
@ -236,6 +284,32 @@ function getPlayList() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getChannels(){
|
||||||
|
$.get("api/music/getChanel", function (data) {
|
||||||
|
}).done(function (data) {
|
||||||
|
console.log(data);
|
||||||
|
$('#channelForm').empty();
|
||||||
|
data.forEach(function(element){
|
||||||
|
var template = $('#radioTemplate').clone();
|
||||||
|
template.removeAttr("id");
|
||||||
|
template.removeAttr("style");
|
||||||
|
var content = template.html();
|
||||||
|
content = content.replace("@name", element.name);
|
||||||
|
content = content.replace(/@id/g, element.id);
|
||||||
|
template.html(content);
|
||||||
|
|
||||||
|
$('#channelForm').append(template);
|
||||||
|
|
||||||
|
});
|
||||||
|
$('#modalChanels').modal('open');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function updateModal(data){
|
function updateModal(data){
|
||||||
$('#modal_title').text("Title: "+ data.info.title);
|
$('#modal_title').text("Title: "+ data.info.title);
|
||||||
$('#modal_author').text("Author: "+ data.info.author);
|
$('#modal_author').text("Author: "+ data.info.author);
|
||||||
|
@ -181,6 +181,30 @@
|
|||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<!-- Modal Structure -->
|
||||||
|
<div id="modalChanels" class="modal">
|
||||||
|
<div class="modal-content" style="padding-bottom: 0px">
|
||||||
|
<div class="row" style="margin-bottom: 0px">
|
||||||
|
<h3 class="col s12 center">Vocal Channels</h3>
|
||||||
|
<div class="col offset-s4 s4 center">
|
||||||
|
<form id="channelForm" action="#" class="">
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<a href="#!" id="btn_ok_channel" class="modal-action modal-close waves-effect waves-green btn-flat disabled">Connect</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p id="radioTemplate" class="" style="visibility: hidden">
|
||||||
|
<input name="vocalRadio" class="with-gap" type="radio" value="@id" id="@id"/>
|
||||||
|
<label for="@id">@name</label>
|
||||||
|
</p>
|
||||||
|
|
||||||
<!-- Scripts-->
|
<!-- Scripts-->
|
||||||
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
|
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
|
||||||
<script src="js/materialize.js"></script>
|
<script src="js/materialize.js"></script>
|
||||||
|
Loading…
Reference in New Issue
Block a user