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]);