Перемещение классов
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user