added Telegram Bot

This commit is contained in:
mrbesen 2018-07-19 17:59:26 +02:00
parent c7a6a28d49
commit deb6f83152
6 changed files with 81 additions and 29 deletions

View File

@ -72,5 +72,10 @@
<artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version> <version>8.0.11</version>
</dependency> </dependency>
<dependency>
<groupId>TelegramAPI</groupId>
<artifactId>TelegramAPI</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -27,6 +27,7 @@ public class Config {
put("youtube.apikey" , "" ); put("youtube.apikey" , "" );
put("crawler.maxvideos" , "100" ); put("crawler.maxvideos" , "100" );
put("crawler.threadcount", "4" ); put("crawler.threadcount", "4" );
put("telegramapi.key" , "" );
} }
}; };

View File

@ -224,6 +224,10 @@ public class Crawler implements Runnable {
log.info("Crawling Stopped. Runtime: " + runtimem + "min and " + crawlcount + " videos crawled. ( " + vidps + " v/s )"); log.info("Crawling Stopped. Runtime: " + runtimem + "min and " + crawlcount + " videos crawled. ( " + vidps + " v/s )");
} }
public DB getDB() {
return db;
}
public static Video getVideo() { public static Video getVideo() {
return new Video(); return new Video();
} }

View File

@ -131,4 +131,19 @@ public class DB {
log.error("Fehler bim ausführen der Update-Query: " + q, e); log.error("Fehler bim ausführen der Update-Query: " + q, e);
} }
} }
public String getRandom() {
ResultSet set = query("SELECT `id`, rand() as 'r' FROM `videos` ORDER BY r LIMIT 1;");
if(set == null)
return null;
try {
if(set.next()) {
return set.getString(1);
}
} catch (SQLException e) {
log.warn("error getting a random video", e);
}
return null;
}
} }

View File

@ -5,38 +5,65 @@ import java.util.Scanner;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
public class Main { import de.mrbesen.telegram.TelegramAPI;
import de.mrbesen.telegram.commands.CommandHandler;
import de.mrbesen.telegram.objects.TUser;
public class Main implements CommandHandler{
public static void main(String[] args) { public static void main(String[] args) {
new Main().run();
}
Crawler cra;
private void run() {
//init Logger //init Logger
new Log(); // init logging, set format etc new Log(); // init logging, set format etc
Logger log = Logger.getLogger(Main.class.getName()); Logger log = Logger.getLogger(Main.class.getName());
//loading config //loading config
new Config(new File("crawl.conf")); new Config(new File("crawl.conf"));
//starting crawler //starting crawler
Crawler cra = new Crawler(); cra = new Crawler();
Thread t = new Thread(cra, "Crawler"); Thread t = new Thread(cra, "Crawler");
t.start(); t.start();
//CLI //starting BOT API
Scanner s = new Scanner(System.in); TelegramAPI tapi = new TelegramAPI(Config.prop.getProperty("telegramapi.key"));
String in; tapi.getCommandManager().registerCommand("random", this);
while((in= s.nextLine()) != null && t.isAlive()) { tapi.setHelpText("Send the command /random to get a random video.");
if(in.equalsIgnoreCase("stop")) { tapi.start();
cra.stop();
break; //CLI
} else if(in.equalsIgnoreCase("add")) { Scanner s = new Scanner(System.in);
log.info("please enter ytid:"); String in;
String id = s.nextLine().trim(); while((in= s.nextLine()) != null && t.isAlive()) {
if(id.length() > 9 && id.length() < 13) { if(in.equalsIgnoreCase("stop")) {
cra.addtoCrawl(id); tapi.stop();
log.info("added."); cra.stop();
break;
} else if(in.equalsIgnoreCase("add")) {
log.info("please enter ytid:");
String id = s.nextLine().trim();
if(id.length() > 9 && id.length() < 13) {
cra.addtoCrawl(id);
log.info("added.");
}
}
} }
} s.close();
log.info("Terminated.");
}
@Override
public boolean onCommand(TUser sender, String cmd, String[] args) {
if(cmd.equals("random")) {
String ytid = cra.getDB().getRandom();
sender.sendMessage("https://youtube.com/watch?v=" + ytid);
return true;
} }
s.close(); return false;
log.info("Terminated.");
} }
} }

View File

@ -90,7 +90,7 @@ public class YoutubeAPI {
//Seconds //Seconds
v.length += Integer.parseInt(timeparts[timeparts.length-1]); v.length += Integer.parseInt(timeparts[timeparts.length-1]);
} catch(NumberFormatException e) { } catch(NumberFormatException e) {
e.printStackTrace(); log.warn("Error saving the time string: " + removeunwanted(split[1]), e);
} }
} else if(split[0].equals("publishedAt")) { } else if(split[0].equals("publishedAt")) {
String tmp = removeunwanted(split[1]); String tmp = removeunwanted(split[1]);