0

Перемещение классов

This commit is contained in:
2017-04-07 12:47:45 +03:00
parent 369ba8aa6c
commit e0069837b3
6 changed files with 16 additions and 15 deletions

View File

@@ -0,0 +1,64 @@
/*
* 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;
if (!this.saveTo.mkdirs() && !this.saveTo.exists()) {
throw new IllegalStateException(String.format("dir not found: '%s'", this.saveTo.getAbsolutePath()));
}
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(saveTo.getAbsolutePath(), this.getName());
this.repository.save(cinemaDocument);
}
}