mirror of https://github.com/bvn13/imdb-spider.git
64 lines
2.5 KiB
Java
64 lines
2.5 KiB
Java
package ru.bvn13.imdbspider.spider.api.v1_0;
|
|
|
|
import org.jsoup.nodes.Element;
|
|
import ru.bvn13.imdbspider.imdb.AkaDataType;
|
|
import ru.bvn13.imdbspider.imdb.AkaList;
|
|
import ru.bvn13.imdbspider.imdb.AkaListDataType;
|
|
import ru.bvn13.imdbspider.spider.tasker.Task;
|
|
|
|
/**
|
|
* Created by bvn13 on 16.01.2019.
|
|
*/
|
|
public class AkaListProcessor_1_0 extends AbstractApiProcessor_1_0<AkaList, AkaListDataType> {
|
|
|
|
public AkaListProcessor_1_0(ApiFactory_1_0 apiFactory) {
|
|
super(apiFactory);
|
|
}
|
|
|
|
@Override
|
|
Task taskByDataType(AkaListDataType dataType, String imdbObjectParentId) {
|
|
Task t = new Task();
|
|
t.setImdbObjectParentId(imdbObjectParentId);
|
|
t.setDataType(dataType);
|
|
switch (dataType) {
|
|
case ELEMENTS:
|
|
t.setCssSelector("#releaseinfo_content > table.ipl-zebra-list.akas-table-test-only > tbody > tr");
|
|
t.setPostprocess((task, s) -> {
|
|
int i = 0;
|
|
for (Element element : task.getCssSelectorResult()) {
|
|
Task akaTask = getApiFactory().getAkaProcessor().taskByDataType(AkaDataType.ID, task.getImdbObjectParentId())
|
|
.setUrl(task.getUrl())
|
|
.setResultType(String.class)
|
|
.setResult(String.format("%d", (i++)))
|
|
.setParentTask(task);
|
|
task.getNestedTasks().add(akaTask);
|
|
|
|
for (AkaDataType value : AkaDataType.values()) {
|
|
if (!value.equals(AkaDataType.ID)) {
|
|
Task newTask = getApiFactory().getAkaProcessor().taskByDataType(value, task.getImdbObjectParentId())
|
|
.setSourceType(Task.SOURCE_TYPE.HTML)
|
|
.setUrl(task.getUrl())
|
|
.setSourceHtml(element.html())
|
|
.setParentTask(akaTask);
|
|
akaTask.getNestedTasks().add(newTask);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
break;
|
|
}
|
|
return t;
|
|
}
|
|
|
|
@Override
|
|
public void fillUpImdbObject(AkaList akaList, Task task) {
|
|
switch ((AkaListDataType) task.getDataType()) {
|
|
case ELEMENTS:
|
|
akaList.setUrl(task.getUrl());
|
|
akaList.getRetrievedDataTypes().add((AkaListDataType) task.getDataType());
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|