67 lines
2.4 KiB
Java
67 lines
2.4 KiB
Java
/*
|
|
* DmitriyMX <dimon550@gmail.com>
|
|
* 2017-04-02
|
|
*/
|
|
package kinosearch.kinosearch3.cinema;
|
|
|
|
import kinosearch.kinosearch3.browser.Browser;
|
|
import kinosearch.kinosearch3.spider.BaseRepository;
|
|
import kinosearch.kinosearch3.spider.CinemaDocument;
|
|
import kinosearch.kinosearch3.spider.FileDownloader;
|
|
import kinosearch.kinosearch3.spider.ScannerCinema;
|
|
import org.jsoup.Jsoup;
|
|
import org.jsoup.nodes.Document;
|
|
import org.jsoup.nodes.Element;
|
|
import org.jsoup.select.Elements;
|
|
|
|
import java.io.File;
|
|
|
|
public class SeasonvarScanner implements ScannerCinema {
|
|
private static final String DOMAIN = "http://seasonvar.ru/";
|
|
private final FileDownloader fileDownloader;
|
|
private final Browser browser;
|
|
private final File saveTo;
|
|
private final BaseRepository repository;
|
|
|
|
public SeasonvarScanner(FileDownloader fileDownloader, Browser browser, File saveTo, BaseRepository repository) {
|
|
this.fileDownloader = fileDownloader;
|
|
this.browser = browser;
|
|
this.saveTo = saveTo;
|
|
this.repository = repository;
|
|
}
|
|
|
|
@Override
|
|
public String getName() {
|
|
return "Seasonvar";
|
|
}
|
|
|
|
@Override
|
|
public void run() {
|
|
String html = browser.get(DOMAIN);
|
|
Document document = Jsoup.parse(html);
|
|
Elements elements = document.getElementsByAttribute("data-tabgr");
|
|
|
|
elements.stream()
|
|
.flatMap(element -> element.children().stream())
|
|
.map(element -> element.attr("href"))
|
|
.forEach(url -> this.browseAndSave(DOMAIN + url));
|
|
}
|
|
|
|
@Override
|
|
public void browseAndSave(String url) {
|
|
Document document = Jsoup.parse(browser.get(url));
|
|
Element element = document.getElementsByAttributeValue("itemprop", "thumbnailUrl").get(0);
|
|
|
|
File saveTo = new File(this.saveTo, url.substring(url.indexOf("/")+1, url.lastIndexOf("."))+".jpg");
|
|
this.fileDownloader.addFile(element.attr("src"), saveTo);
|
|
|
|
CinemaDocument cinemaDocument = new CinemaDocument();
|
|
String title = document.getElementsByClass("pgs-sinfo-title").get(0).text();
|
|
cinemaDocument.setTitle(title.replaceAll("^Сериал ", "").replaceAll(" онлайн$", ""));
|
|
cinemaDocument.setDescription(document.getElementsByAttributeValue("itemprop", "description").get(0).text());
|
|
cinemaDocument.setFileName(saveTo.getAbsolutePath());
|
|
cinemaDocument.setTypeWarez(this.getName());
|
|
this.repository.save(cinemaDocument);
|
|
}
|
|
}
|