forked from MrBesen/YoutubeCrawler
added Telegram Bot
This commit is contained in:
parent
c7a6a28d49
commit
deb6f83152
5
pom.xml
5
pom.xml
|
@ -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>
|
|
@ -27,6 +27,7 @@ public class Config {
|
|||
put("youtube.apikey" , "" );
|
||||
put("crawler.maxvideos" , "100" );
|
||||
put("crawler.threadcount", "4" );
|
||||
put("telegramapi.key" , "" );
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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]);
|
||||
|
|
Loading…
Reference in New Issue