diff --git a/pom.xml b/pom.xml
index dfb72aa..30d9cbe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -72,5 +72,10 @@
mysql-connector-java
8.0.11
+
+ TelegramAPI
+ TelegramAPI
+ 0.0.1-SNAPSHOT
+
\ No newline at end of file
diff --git a/src/de/mrbesen/youtubecrawler/Config.java b/src/de/mrbesen/youtubecrawler/Config.java
index 003e594..707e567 100644
--- a/src/de/mrbesen/youtubecrawler/Config.java
+++ b/src/de/mrbesen/youtubecrawler/Config.java
@@ -27,6 +27,7 @@ public class Config {
put("youtube.apikey" , "" );
put("crawler.maxvideos" , "100" );
put("crawler.threadcount", "4" );
+ put("telegramapi.key" , "" );
}
};
diff --git a/src/de/mrbesen/youtubecrawler/Crawler.java b/src/de/mrbesen/youtubecrawler/Crawler.java
index e02a28f..1f3167f 100644
--- a/src/de/mrbesen/youtubecrawler/Crawler.java
+++ b/src/de/mrbesen/youtubecrawler/Crawler.java
@@ -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();
}
diff --git a/src/de/mrbesen/youtubecrawler/DB.java b/src/de/mrbesen/youtubecrawler/DB.java
index c211a72..b99beee 100644
--- a/src/de/mrbesen/youtubecrawler/DB.java
+++ b/src/de/mrbesen/youtubecrawler/DB.java
@@ -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;
+ }
}
\ No newline at end of file
diff --git a/src/de/mrbesen/youtubecrawler/Main.java b/src/de/mrbesen/youtubecrawler/Main.java
index 3b7474f..080a5d6 100644
--- a/src/de/mrbesen/youtubecrawler/Main.java
+++ b/src/de/mrbesen/youtubecrawler/Main.java
@@ -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;
}
}
\ No newline at end of file
diff --git a/src/de/mrbesen/youtubecrawler/YoutubeAPI.java b/src/de/mrbesen/youtubecrawler/YoutubeAPI.java
index 571392b..1667a9e 100644
--- a/src/de/mrbesen/youtubecrawler/YoutubeAPI.java
+++ b/src/de/mrbesen/youtubecrawler/YoutubeAPI.java
@@ -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]);