/* * DmitriyMX * 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); } }