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>
<version>8.0.11</version>
</dependency>
<dependency>
<groupId>TelegramAPI</groupId>
<artifactId>TelegramAPI</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>

View File

@ -27,6 +27,7 @@ public class Config {
put("youtube.apikey" , "" );
put("crawler.maxvideos" , "100" );
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 )");
}
public DB getDB() {
return db;
}
public static Video getVideo() {
return new Video();
}

View File

@ -131,4 +131,19 @@ public class DB {
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;
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) {
new Main().run();
}
Crawler cra;
private void run() {
//init Logger
new Log(); // init logging, set format etc
Logger log = Logger.getLogger(Main.class.getName());
//loading config
new Config(new File("crawl.conf"));
//starting crawler
Crawler cra = new Crawler();
Thread t = new Thread(cra, "Crawler");
t.start();
//CLI
Scanner s = new Scanner(System.in);
String in;
while((in= s.nextLine()) != null && t.isAlive()) {
if(in.equalsIgnoreCase("stop")) {
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.");
new Log(); // init logging, set format etc
Logger log = Logger.getLogger(Main.class.getName());
//loading config
new Config(new File("crawl.conf"));
//starting crawler
cra = new Crawler();
Thread t = new Thread(cra, "Crawler");
t.start();
//starting BOT API
TelegramAPI tapi = new TelegramAPI(Config.prop.getProperty("telegramapi.key"));
tapi.getCommandManager().registerCommand("random", this);
tapi.setHelpText("Send the command /random to get a random video.");
tapi.start();
//CLI
Scanner s = new Scanner(System.in);
String in;
while((in= s.nextLine()) != null && t.isAlive()) {
if(in.equalsIgnoreCase("stop")) {
tapi.stop();
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();
log.info("Terminated.");
return false;
}
}

View File

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