0
Files
KinoSearch/src/main/java/kinosearch/kinosearch3/cinema/SeasonvarScanner.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);
}
}