forked from MrBesen/YoutubeCrawler
Compare commits
7 Commits
87f4bd3fd1
...
bf31352c81
Author | SHA1 | Date |
---|---|---|
thiesyy | bf31352c81 | |
mrbesen | 080b14a4a0 | |
mrbesen | 7713dcf56f | |
mrbesen | 0b3faf8839 | |
mrbesen | 501207fa41 | |
mrbesen | d56f1271c4 | |
mrbesen | 1874c2bec4 |
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
||||
<output url="file://$MODULE_DIR$/target/classes" />
|
||||
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="Maven: log4j:log4j:1.2.17" level="project" />
|
||||
<orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.11" level="project" />
|
||||
<orderEntry type="library" scope="RUNTIME" name="Maven: com.google.protobuf:protobuf-java:2.6.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: TelegramAPI:TelegramAPI:0.0.1-SNAPSHOT" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.guava:guava:20.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.json:json:20180130" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.11.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.11.1" level="project" />
|
||||
</component>
|
||||
</module>
|
14
pom.xml
14
pom.xml
|
@ -3,7 +3,7 @@
|
|||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>YoutubeCrawler</groupId>
|
||||
<artifactId>YoutubeCrawler</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<version>0.0.2</version>
|
||||
<build>
|
||||
<sourceDirectory>src</sourceDirectory>
|
||||
<plugins>
|
||||
|
@ -18,6 +18,7 @@
|
|||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>3.1.1</version>
|
||||
<configuration>
|
||||
<archive>
|
||||
<manifest>
|
||||
|
@ -60,6 +61,8 @@
|
|||
<properties>
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
@ -75,7 +78,12 @@
|
|||
<dependency>
|
||||
<groupId>TelegramAPI</groupId>
|
||||
<artifactId>TelegramAPI</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<version>0.0.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.guava</groupId>
|
||||
<artifactId>guava</artifactId>
|
||||
<version>11.0.2</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
</project>
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package de.mrbesen.youtubecrawler;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
@ -78,7 +77,7 @@ public class CrawlerThread implements Runnable {
|
|||
*/
|
||||
LinkedList<String>[] report() {
|
||||
lockforreport = true;
|
||||
LinkedList[] out = new LinkedList[] {(LinkedList) crawled, (LinkedList) found};
|
||||
LinkedList<String>[] out = new LinkedList[] {(LinkedList) crawled, (LinkedList) found};
|
||||
crawled = new LinkedList<>();
|
||||
found = new LinkedList<>();
|
||||
lockforreport = false;
|
||||
|
|
|
@ -7,30 +7,28 @@ import java.util.Random;
|
|||
import java.util.Scanner;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import de.mrbesen.telegram.MessageBuilder;
|
||||
import de.mrbesen.telegram.TelegramAPI;
|
||||
import de.mrbesen.telegram.commands.JSONCommandHandler;
|
||||
import de.mrbesen.telegram.event.EventHandler;
|
||||
import de.mrbesen.telegram.event.EventListener;
|
||||
import de.mrbesen.telegram.event.events.UserSendMessageEvent;
|
||||
import de.mrbesen.telegram.log.Log4JLog;
|
||||
import de.mrbesen.telegram.objects.TMessage;
|
||||
import de.mrbesen.telegram.objects.TUser;
|
||||
|
||||
public class Main implements JSONCommandHandler, EventListener{
|
||||
public class Main implements JSONCommandHandler {
|
||||
|
||||
private ArrayList<String> admins = new ArrayList<>();//usernames of admins
|
||||
private ArrayList<Long> admins = new ArrayList<>();//userids of admins
|
||||
private String adminstr = null;
|
||||
private long setadminstr = -1;
|
||||
private static String abc = "abcdefghijklmnopqrstuvwxyz";//used for random string generation
|
||||
private static final String abc = "abcdefghijklmnopqrstuvwxyz";//used for random string generation
|
||||
private Logger log = Logger.getLogger(this.getClass().getName());
|
||||
private TelegramAPI tapi;
|
||||
private Thread mainthread;
|
||||
private static Main main;
|
||||
private boolean startcrawler = true;
|
||||
private Crawler cra;
|
||||
private Thread crawlerthread;
|
||||
private Thread maincrawlerthread;
|
||||
|
||||
public static Main getMain() {
|
||||
return main;
|
||||
|
@ -52,7 +50,6 @@ public class Main implements JSONCommandHandler, EventListener{
|
|||
startcrawler = startcra;
|
||||
}
|
||||
|
||||
|
||||
private void run() {
|
||||
mainthread = Thread.currentThread();
|
||||
|
||||
|
@ -65,21 +62,18 @@ public class Main implements JSONCommandHandler, EventListener{
|
|||
|
||||
//starting crawler
|
||||
cra = new Crawler();
|
||||
crawlerthread = new Thread(cra, "Crawler");
|
||||
maincrawlerthread = new Thread(cra, "Crawler");
|
||||
if(startcrawler) {
|
||||
crawlerthread.start();
|
||||
maincrawlerthread.start();
|
||||
}
|
||||
|
||||
//starting BOT API
|
||||
tapi = new TelegramAPI(Config.prop.getProperty("telegramapi.key"));
|
||||
tapi.getCommandManager().registerCommand("random", this);
|
||||
tapi.getCommandManager().registerCommand("admin", this);
|
||||
tapi.getCommandManager().registerCommand("stats", this);
|
||||
tapi.getCommandManager().registerCommand("stop", this);
|
||||
tapi.getCommandManager().registerCommand("profiler", this);
|
||||
tapi.getEventManager().registerEvent(this);
|
||||
tapi.getCommandManager().registerCommand( this);
|
||||
tapi.getEventManager().registerEvent(UserSendMessageEvent.class, this::onAdmin);
|
||||
tapi.setHelpText("Send the command /random to get a random video.");
|
||||
tapi.setUpdateInterval(2000);
|
||||
tapi.setUpdateInterval(60);
|
||||
tapi.setLongpolling(true);
|
||||
tapi.setLog(new Log4JLog());
|
||||
tapi.start();
|
||||
|
||||
|
@ -90,7 +84,11 @@ public class Main implements JSONCommandHandler, EventListener{
|
|||
while(scan.hasNext()) {
|
||||
String line = scan.nextLine().trim();
|
||||
if(!line.isEmpty()) {
|
||||
admins.add(line);
|
||||
try {
|
||||
admins.add(Long.parseLong(line));
|
||||
} catch(NumberFormatException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
scan.close();
|
||||
|
@ -100,7 +98,7 @@ public class Main implements JSONCommandHandler, EventListener{
|
|||
//CLI
|
||||
Scanner s = new Scanner(System.in);
|
||||
String in;
|
||||
while((in= s.nextLine()) != null && crawlerthread.isAlive()) {
|
||||
while((in = s.nextLine()) != null && maincrawlerthread.isAlive()) {
|
||||
if(in.equalsIgnoreCase("stop")) {
|
||||
stop();
|
||||
} else if(in.equalsIgnoreCase("add")) {
|
||||
|
@ -158,29 +156,16 @@ public class Main implements JSONCommandHandler, EventListener{
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(TUser sender, String cmd, String[] args) {
|
||||
//unused
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(TUser sender, String cmd, String[] args, JSONObject j) {
|
||||
public boolean onCommand(TUser sender, String cmd, String[] args, TMessage json) {
|
||||
if(cmd.startsWith("random")) {
|
||||
String ytid = cra.getDB().getRandom();
|
||||
int chatid = 0;
|
||||
try {
|
||||
//log.debug(j.toString());
|
||||
chatid = j.getJSONObject("chat").getInt("id");
|
||||
} catch(Throwable t) { t.printStackTrace(); }
|
||||
//log.info("chatid: " + chatid);
|
||||
if(chatid != 0) {
|
||||
tapi.sendMessage(new MessageBuilder().setText("https://youtube.com/watch?v=" + ytid).setReciver(chatid).build());
|
||||
} else {
|
||||
sender.sendMessage("https://youtube.com/watch?v=" + ytid);
|
||||
}
|
||||
long chatid = json.getChatID();
|
||||
|
||||
tapi.sendMessage(new MessageBuilder().setAsync().setText("https://youtube.com/watch?v=" + ytid).setReciver(chatid).build());
|
||||
|
||||
return true;
|
||||
} else if(cmd.equals("admin")) {
|
||||
if(admins.contains(sender.getName())) {
|
||||
if(admins.contains(sender.getID())) {
|
||||
sender.sendMessage("You are admin.");
|
||||
return true;
|
||||
} else {
|
||||
|
@ -189,12 +174,12 @@ public class Main implements JSONCommandHandler, EventListener{
|
|||
log.info("Adminstr: " + adminstr);
|
||||
}
|
||||
} else if(cmd.equals("stats")) {
|
||||
if(admins.contains(sender.getName())) {
|
||||
if(admins.contains(sender.getID())) {
|
||||
sender.sendMessage(cra.getStats());
|
||||
return true;
|
||||
}
|
||||
} else if(cmd.equals("profiler")) {
|
||||
if(admins.contains(sender.getName())) {
|
||||
if(admins.contains(sender.getID())) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for(String s : cra.getProfiling()) {
|
||||
sb.append(s).append('\n');
|
||||
|
@ -218,14 +203,15 @@ public class Main implements JSONCommandHandler, EventListener{
|
|||
}
|
||||
|
||||
public void broadcastAdmin(String msg) {
|
||||
for(String admin : admins) {
|
||||
TUser adm = tapi.getUser(admin);
|
||||
if(adm != null)
|
||||
adm.sendMessage(msg);
|
||||
for(long admin : admins) {
|
||||
if(admin != 0) {
|
||||
MessageBuilder mb = new MessageBuilder().setAsync().setText(msg).setReciver(admin);
|
||||
tapi.sendMessage(mb.build());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private String getRandomStr(int length) {
|
||||
private static String getRandomStr(int length) {
|
||||
Random rand = new Random();
|
||||
String out = "";
|
||||
for(int i = 0; i < length; i++) {
|
||||
|
@ -234,13 +220,13 @@ public class Main implements JSONCommandHandler, EventListener{
|
|||
return out;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onAdmin(UserSendMessageEvent e) {
|
||||
public void onAdmin(Object event) {
|
||||
UserSendMessageEvent e = (UserSendMessageEvent) event;
|
||||
if(adminstr != null && setadminstr > 0) {
|
||||
if(e.getMessage() != null && (System.currentTimeMillis() - setadminstr) / 1000 < 60) {
|
||||
if(e.getMessage().getText() != null) {
|
||||
if(e.getMessage().getText().equals(adminstr)) {
|
||||
admins.add(e.getUser().getName());
|
||||
admins.add(e.getUser().getID());
|
||||
e.getMessage().reply("You are now Admin!");
|
||||
adminstr = null;
|
||||
setadminstr = -1;
|
||||
|
|
|
@ -2,7 +2,6 @@ package de.mrbesen.youtubecrawler;
|
|||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.net.InetAddress;
|
||||
import java.net.ServerSocket;
|
||||
import java.net.Socket;
|
||||
import java.net.SocketTimeoutException;
|
||||
|
@ -20,7 +19,7 @@ public class Server implements Runnable {
|
|||
public Server(DB d) {
|
||||
db = d;
|
||||
}
|
||||
|
||||
|
||||
void start() {
|
||||
run = true;
|
||||
t = new Thread(this, "Server");
|
||||
|
@ -35,21 +34,21 @@ public class Server implements Runnable {
|
|||
public void run() {
|
||||
try {
|
||||
final int port = 2419;
|
||||
ssoc = new ServerSocket(port, -1, InetAddress.getByName("::1"));
|
||||
ssoc = new ServerSocket(port, -1);
|
||||
//ssoc.bind(new InetSocketAddress(, port));
|
||||
ssoc.setSoTimeout(5);
|
||||
log.info("opened Server at port " + port);
|
||||
while(run) {
|
||||
try {
|
||||
Socket client = ssoc.accept();
|
||||
if(client.getInetAddress().isLoopbackAddress()) {
|
||||
PrintWriter out = new PrintWriter(client.getOutputStream());
|
||||
out.println(db.getRandom());
|
||||
out.flush();
|
||||
out.close();
|
||||
} else {
|
||||
//if(client.getInetAddress().isLoopbackAddress()) {
|
||||
PrintWriter out = new PrintWriter(client.getOutputStream());
|
||||
out.println(db.getRandom());
|
||||
out.flush();
|
||||
out.close();
|
||||
/*} else {
|
||||
log.info("client connected: " + client.getInetAddress().toString());
|
||||
}
|
||||
}*/
|
||||
client.close();
|
||||
} catch(SocketTimeoutException ignored) {}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue