Merge remote-tracking branch 'origin/master'
# Conflicts: # .idea/workspace.xml # src/main/java/me/savvy/rixa/modules/twitter/TwitterModule.java
This commit is contained in:
commit
d86e8f2cdd
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
1011
.idea/workspace.xml
1011
.idea/workspace.xml
File diff suppressed because it is too large
Load Diff
@ -4,6 +4,7 @@ import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import me.savvy.rixa.commands.admin.BatchMoveCommand;
|
||||
import me.savvy.rixa.commands.admin.ConfigCommand;
|
||||
import me.savvy.rixa.commands.admin.InviteCommand;
|
||||
import me.savvy.rixa.commands.general.*;
|
||||
import me.savvy.rixa.commands.handlers.CommandExec;
|
||||
import me.savvy.rixa.commands.handlers.CommandHandler;
|
||||
@ -97,7 +98,7 @@ public class Rixa {
|
||||
new InfoCommand(), new ServerInfoCommand(), new HelpCommand(),
|
||||
new DeleteMessagesCommand(), new PingCommand(), new PurgeMessagesCommand(),
|
||||
new BatchMoveCommand(), new MuteCommand(), new MusicCommand(),
|
||||
new ConfigCommand(), new UrbanDictionaryCommand(), /*new InviteCommand()*/});
|
||||
new ConfigCommand(), new UrbanDictionaryCommand(), new YoutubeCommand()});
|
||||
register(new React[] {new HelpReaction(), new ConfigReaction()});
|
||||
data = new Data(DataType.SQL);
|
||||
}
|
||||
|
@ -33,6 +33,13 @@ public class ConfigCommand implements CommandExec {
|
||||
"%pconfig set defaultRole <role> ; Set role to be assigned when a user joins the server!",
|
||||
"%pconfig set muteRole <role> ; Set role to be assigned when a user is muted!",
|
||||
"%pconfig set musicRole <musicRole> ; Set role required to use the music functions! (Not required)",
|
||||
|
||||
"%pconfig set twitterCKey <key> ; Set Twitter Consumer Key!",
|
||||
"%pconfig set twitterCSecret <key> ; Set Twitter Consumer Secret!",
|
||||
"%pconfig set twitterAToken <key> ; Set Twitter Access Key!",
|
||||
"%pconfig set twitterASecret <key> ; Set Twitter Access Secret!",
|
||||
"%config set twitterChannel ; Set the channel for Twitter feed updates!",
|
||||
|
||||
"%pconfig joinMessage <joinMessage> ; Set the greetings message for when a user joins the server!",
|
||||
"%pconfig quitMessage <quitMessage> ; Set the quit message for when a user leaves the server!",
|
||||
"%pconfig joinPm <joinPm> ; Set the message to be private messaged when a user joins!",
|
||||
@ -40,7 +47,8 @@ public class ConfigCommand implements CommandExec {
|
||||
"%pconfig addPerm <role> <permission> ; Give a role permission to access a command!",
|
||||
"%pconfig removePerm <role> <permission> ; Remove a role's permission to access a command!",
|
||||
"%pconfig enable <module> ; Enabled a Rixa Module!",
|
||||
"%pconfig disable <module> ; Disable a Rixa Module!");
|
||||
"%pconfig disable <module> ; Disable a Rixa Module!"
|
||||
);
|
||||
}
|
||||
@Override
|
||||
@Command(mainCommand = "config",
|
||||
|
@ -24,12 +24,14 @@ import me.savvy.rixa.guild.RixaManager;
|
||||
import me.savvy.rixa.modules.music.MusicManager;
|
||||
import me.savvy.rixa.modules.music.TrackScheduler;
|
||||
import me.savvy.rixa.utils.MessageBuilder;
|
||||
import me.savvy.rixa.utils.YoutubeSearch;
|
||||
import net.dv8tion.jda.core.Permission;
|
||||
import net.dv8tion.jda.core.entities.*;
|
||||
import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
|
||||
import net.dv8tion.jda.core.exceptions.PermissionException;
|
||||
|
||||
import java.awt.*;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -249,6 +251,18 @@ public class MusicCommand implements CommandExec {
|
||||
new MessageBuilder(message[2] + " is not a valid integer. Try a number between 10 and 100.").setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
}
|
||||
}
|
||||
} // music youtube <query
|
||||
if(message.length >= 3) {
|
||||
if(message[1].equalsIgnoreCase("youtube") || message[1].equalsIgnoreCase("yt") || message[1].equalsIgnoreCase("search")
|
||||
|| message[1].equalsIgnoreCase("ytsearch")) {
|
||||
String search = getMessage(message, 2);
|
||||
try {
|
||||
YoutubeSearch ytSearch = new YoutubeSearch(search);
|
||||
loadAndPlay(mng, event.getChannel(), ytSearch.getUrl(0), false);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -323,4 +337,12 @@ public class MusicCommand implements CommandExec {
|
||||
|
||||
private void sendHelp() {
|
||||
}
|
||||
|
||||
private String getMessage(String[] messages, int argToBegin) {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
for(int i = argToBegin; i < messages.length; i++) {
|
||||
builder.append(messages[i]).append(" ");
|
||||
}
|
||||
return builder.toString().trim();
|
||||
}
|
||||
}
|
||||
|
@ -16,7 +16,6 @@ import java.net.URLEncoder;
|
||||
*/
|
||||
public class UrbanDictionaryCommand implements CommandExec {
|
||||
|
||||
|
||||
@Override
|
||||
@Command(mainCommand = "urbandictionary",
|
||||
aliases = {"ud"},
|
||||
|
@ -0,0 +1,41 @@
|
||||
package me.savvy.rixa.commands.general;
|
||||
|
||||
import me.savvy.rixa.commands.handlers.Command;
|
||||
import me.savvy.rixa.commands.handlers.CommandExec;
|
||||
import me.savvy.rixa.utils.MessageBuilder;
|
||||
import me.savvy.rixa.utils.YoutubeSearch;
|
||||
import net.dv8tion.jda.core.entities.ChannelType;
|
||||
import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* Created by savit on 7/11/2017.
|
||||
*/
|
||||
public class YoutubeCommand implements CommandExec {
|
||||
|
||||
@Override
|
||||
@Command(mainCommand = "youtube",
|
||||
aliases = {"yt"},
|
||||
description = "Search youtube for music videos!",
|
||||
channelType = ChannelType.TEXT)
|
||||
public void execute(GuildMessageReceivedEvent event) {
|
||||
String[] message = event.getMessage().getContent().split(" ");
|
||||
String search = getMessage(message, 1);
|
||||
try {
|
||||
YoutubeSearch ytSearch = new YoutubeSearch(search);
|
||||
new MessageBuilder(ytSearch.getUrl(0))
|
||||
.setColor(event.getMember().getColor()).queue(event.getChannel());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private String getMessage(String[] messages, int argToBegin) {
|
||||
StringBuilder builder = new StringBuilder() ;
|
||||
for(int i = argToBegin; i < messages.length; i++) {
|
||||
builder.append(messages[i]).append(" ");
|
||||
}
|
||||
return builder.toString().trim();
|
||||
}
|
||||
}
|
@ -44,7 +44,6 @@ public class MessageEvent {
|
||||
CommandRegistrar cmd = CommandHandler.get(splitContent[0]);
|
||||
Method m = cmd.getMethod();
|
||||
try {
|
||||
Rixa.getInstance().getLogger().info("Invoking: " + cmd.getCommandAnnotation().mainCommand());
|
||||
m.invoke(cmd.getExecutor(), event);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
|
@ -1,7 +1,5 @@
|
||||
package me.savvy.rixa.modules.twitter;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import me.savvy.rixa.guild.RixaGuild;
|
||||
import twitter4j.*;
|
||||
import twitter4j.conf.ConfigurationBuilder;
|
||||
@ -11,18 +9,18 @@ import twitter4j.conf.ConfigurationBuilder;
|
||||
*/
|
||||
public class TwitterModule {
|
||||
|
||||
@Getter
|
||||
private final TwitterStream twitterStream;
|
||||
@Getter
|
||||
private ConfigurationBuilder configurationBuilder;
|
||||
@Getter
|
||||
private Twitter twitter;
|
||||
@Getter
|
||||
private TwitterFactory twitterFactory;
|
||||
@Getter @Setter
|
||||
private String consumerKey, consumerSecret, accessToken, accessTokenSecret;
|
||||
private final RixaGuild rixaGuild;
|
||||
private String consumerKey;
|
||||
private String consumerSecret;
|
||||
private String accessToken;
|
||||
private String accessTokenSecret;
|
||||
|
||||
public TwitterModule(RixaGuild rixaGuild, String consumerKey, String consumerSecret, String accessToken, String accessTokenSecret) {
|
||||
this.rixaGuild = rixaGuild;
|
||||
this.consumerKey = consumerKey;
|
||||
this.consumerSecret = consumerSecret;
|
||||
this.accessToken = accessToken;
|
||||
@ -37,4 +35,55 @@ public class TwitterModule {
|
||||
twitter = twitterFactory.getInstance();
|
||||
}
|
||||
|
||||
public ConfigurationBuilder getConfigurationBuilder() {
|
||||
return configurationBuilder;
|
||||
}
|
||||
|
||||
public TwitterFactory getTwitterFactory() {
|
||||
return twitterFactory;
|
||||
}
|
||||
|
||||
public Twitter getTwitter() {
|
||||
return twitter;
|
||||
}
|
||||
|
||||
public String getConsumerKey() {
|
||||
return consumerKey;
|
||||
}
|
||||
|
||||
public void setConsumerKey(String consumerKey) {
|
||||
this.consumerKey = consumerKey;
|
||||
}
|
||||
|
||||
public String getConsumerSecret() {
|
||||
return consumerSecret;
|
||||
}
|
||||
|
||||
public void setConsumerSecret(String consumerSecret) {
|
||||
this.consumerSecret = consumerSecret;
|
||||
}
|
||||
|
||||
public String getAccessToken() {
|
||||
return accessToken;
|
||||
}
|
||||
|
||||
public void setAccessToken(String accessToken) {
|
||||
this.accessToken = accessToken;
|
||||
}
|
||||
|
||||
public String getAccessTokenSecret() {
|
||||
return accessTokenSecret;
|
||||
}
|
||||
|
||||
public void setAccessTokenSecret(String accessTokenSecret) {
|
||||
this.accessTokenSecret = accessTokenSecret;
|
||||
}
|
||||
|
||||
public TwitterStream getTwitterStream() {
|
||||
return twitterStream;
|
||||
}
|
||||
|
||||
public RixaGuild getRixaGuild() {
|
||||
return rixaGuild;
|
||||
}
|
||||
}
|
||||
|
42
src/main/java/me/savvy/rixa/utils/WebUtil.java
Normal file
42
src/main/java/me/savvy/rixa/utils/WebUtil.java
Normal file
@ -0,0 +1,42 @@
|
||||
package me.savvy.rixa.utils;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
|
||||
/**
|
||||
* Created by savit on 7/11/2017.
|
||||
*/
|
||||
public class WebUtil {
|
||||
|
||||
public static String getWebPage(String url) throws IOException {
|
||||
URL searchURL = new URL(url);
|
||||
HttpURLConnection conn = (HttpURLConnection) searchURL.openConnection();
|
||||
return getWebPage(conn);
|
||||
}
|
||||
|
||||
public static String getWebPage(HttpURLConnection conn) throws IOException {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36");
|
||||
conn.setRequestProperty("Referer", "http://www.google.com");
|
||||
|
||||
int response = conn.getResponseCode();
|
||||
if (response == 403) {
|
||||
System.out.println("Quota Exceeded");
|
||||
}
|
||||
else if (response != 200) {
|
||||
System.out.println("DEBUG: Response code: " + response);
|
||||
}
|
||||
|
||||
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
|
||||
String line;
|
||||
while ((line = in.readLine()) != null) {
|
||||
sb.append(line).append("\n");
|
||||
}
|
||||
in.close();
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
@ -1,7 +1,101 @@
|
||||
package me.savvy.rixa.utils;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLEncoder;
|
||||
|
||||
/**
|
||||
* Created by savit on 7/11/2017.
|
||||
*/
|
||||
public class YoutubeSearch {
|
||||
|
||||
private static final String API_KEY;
|
||||
private JSONArray items;
|
||||
private final String YOUTUBE_WATCH_BASE_URL = "https://www.youtube.com/watch?v=";
|
||||
|
||||
static {
|
||||
API_KEY = "AIzaSyD1wjRGbzKgvjqAU25pREy1dVio9WpcuS0";
|
||||
}
|
||||
|
||||
public YoutubeSearch(String query) throws IOException {
|
||||
try {
|
||||
String url = "https://www.googleapis.com/youtube/v3/search?"
|
||||
+ "q=" + URLEncoder.encode(query, "UTF-8")
|
||||
+ "&part=id%2Csnippet"
|
||||
+ "&safeSearch=none"
|
||||
+ "&key=" + API_KEY;
|
||||
search(url);
|
||||
}
|
||||
catch (UnsupportedEncodingException ignored) {}
|
||||
}
|
||||
|
||||
|
||||
public String getKind(int index) {
|
||||
return items.getJSONObject(index).getString("kind");
|
||||
}
|
||||
|
||||
public String getIdKind(int index) {
|
||||
return items.getJSONObject(index).getJSONObject("id").getString("kind");
|
||||
}
|
||||
|
||||
public String getVideoId(int index) {
|
||||
return items.getJSONObject(index).getJSONObject("id").getString("videoId");
|
||||
}
|
||||
|
||||
public String getPublishedTime(int index) {
|
||||
return items.getJSONObject(index).getJSONObject("snippet").getString("publishedAt");
|
||||
}
|
||||
|
||||
public String getChannelId(int index) {
|
||||
return items.getJSONObject(index).getJSONObject("snippet").getString("channelId");
|
||||
}
|
||||
|
||||
public String getTitle(int index) {
|
||||
return items.getJSONObject(index).getJSONObject("snippet").getString("title");
|
||||
}
|
||||
|
||||
public String getDescription(int index) {
|
||||
return items.getJSONObject(index).getJSONObject("snippet").getString("description");
|
||||
}
|
||||
|
||||
public String getChannelTitle(int index) {
|
||||
return items.getJSONObject(index).getJSONObject("snippet").getString("channelTitle");
|
||||
}
|
||||
|
||||
public String getLiveBroadcastContent(int index) {
|
||||
return items.getJSONObject(index).getJSONObject("snippet").getString("liveBroadcastContent");
|
||||
}
|
||||
|
||||
public String getThumbnailDefaultUrl(int index) {
|
||||
return items.getJSONObject(index).getJSONObject("snippet").getJSONObject("default").getString("url");
|
||||
}
|
||||
|
||||
public String getThumbnailMediumUrl(int index) {
|
||||
return items.getJSONObject(index).getJSONObject("snippet").getJSONObject("medium").getString("url");
|
||||
}
|
||||
|
||||
public String getThumbnailHighUrl(int index) {
|
||||
return items.getJSONObject(index).getJSONObject("snippet").getJSONObject("high").getString("url");
|
||||
}
|
||||
|
||||
public String getUrl(int index) {
|
||||
return YOUTUBE_WATCH_BASE_URL + getVideoId(index);
|
||||
}
|
||||
|
||||
private void search(String url) throws IOException {
|
||||
String json = WebUtil.getWebPage(url);
|
||||
|
||||
JSONObject obj = new JSONObject(json);
|
||||
try {
|
||||
items = obj.getJSONArray("items");
|
||||
}
|
||||
catch (JSONException e) {
|
||||
System.out.println("No search results found.");// throw new NotFoundException("No results found.");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user