Output: text file contains links of the videos
Internet Download Manager is queuing the videos link
Download Java Project
Here is the implementation in Java Programming Language:
import java.io.File;
import java.io.IOException;
import java.util.List;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.internal.ProfilesIni;
// create "firefox.exe -p" profile
// and set browser firefox about:config :
// permissions.default.image=2 (disable images)
// media.autoplay.enabled=false
// media.mediasource.enabled=false
// and set never remember history or cache
// set enviroment variable path to IDM.exe directory
public class IDMCommandLine {
//get video url from kissanime.to or kisscartoon.me
public static String seasonURL = "http://kisscartoon.me/Cartoon/The-Simpsons-Season-03";
public static String filePath = "C:\\Users\\Stars\\Desktop\\TheSimpsonsSeason03.txt";
public static String idmPath = "IDMan.exe";
public static long waitingTime=5000;
public static void main(String[] args) throws Exception {
System.out.println("Start " + seasonURL);
StringBuilder saveVideoURL = new StringBuilder();
String[] episodesURL = getEpisodesURL().split(";");
System.out.println("Total episodes = "+episodesURL.length);
for (int i = episodesURL.length - 1; i >= 0; i--) {
if (episodesURL[i] != null) {
String videoURL = getVideoURL(episodesURL[i]);
String videoTitle = getVideoTitle(episodesURL[i]);
System.out.println(videoTitle+"-->"+videoURL);
saveVideoURL.append(videoTitle);
saveVideoURL.append(";");
saveVideoURL.append(videoURL);
saveVideoURL.append(";");
saveVideoURL.append(episodesURL[i]);
saveVideoURL.append("\n");
}
}
File file = new File(filePath);
FileUtils.writeStringToFile(file, saveVideoURL.toString().trim());
File file1 = FileUtils.getFile(filePath);
LineIterator iter = FileUtils.lineIterator(file1);
while (iter.hasNext()) {
String[] lines = iter.next().split(";");
String title = lines[0];
String url = lines[1];
// String referer = lines[2];
if (!url.equals("null")) {
sendURLtoIDM(url, title);
}
}
System.out.println("Finish " + seasonURL);
}
public static void sendURLtoIDM(String videoURL, String videoTitle) throws IOException, InterruptedException {
// TODO Auto-generated method stub
ProcessBuilder pb = new ProcessBuilder(idmPath, "/d", videoURL, "/f", videoTitle, "/a");
Process process = pb.start();
int returnValue = process.waitFor();
if (returnValue == 0) {
process.destroy();
}
}
public static String getVideoTitle(String url) {
String[] titles = url.trim().replace("-", "_").replace("?", ",").split(",")[0].split("/");
String titleString = titles[titles.length - 2].concat("_").concat(titles[titles.length - 1]).concat(".mp4");
return titleString;
}
public static String getEpisodesURL() throws InterruptedException {
// get saved profile
ProfilesIni profile = new ProfilesIni();
FirefoxProfile myprofile = profile.getProfile("MyProfile");
// load the firefox profile
WebDriver driver = new FirefoxDriver(myprofile);
// open URL
driver.get(seasonURL);
// wait page loading
Thread.sleep(waitingTime);
StringBuilder sb = new StringBuilder();
List<webelement> tables = driver.findElements(By.tagName("table"));
for (WebElement table : tables) {
List<webelement> trs = table.findElements(By.tagName("tr"));
for (WebElement tr : trs) {
List<webelement> tds = tr.findElements(By.tagName("td"));
for (WebElement td : tds) {
List<webelement> as = td.findElements(By.tagName("a"));
for (int i = 0; i < as.size(); i++) {
sb.append(as.get(i).getAttribute("href"));
sb.append(";");
}
}
}
}
driver.quit();
return sb == null ? null : sb.toString().trim();
}
public static String getVideoURL(String urlEpisode) throws InterruptedException {
// get saved profile
ProfilesIni profile = new ProfilesIni();
FirefoxProfile myprofile = profile.getProfile("MyProfile");
// load the firefox profile
WebDriver driver = new FirefoxDriver(myprofile);
// open URL
driver.get(urlEpisode);
// wait page loading
Thread.sleep(waitingTime);
String urlVideo = null;
List<webelement> results = driver.findElements(By.tagName("video"));
for (WebElement we : results) {
urlVideo = we.getAttribute("src");
}
driver.quit();
return urlVideo;
}
}





0 comments:
Post a Comment