Изменение алгоритма выдачи списка кино
This commit is contained in:
@@ -13,6 +13,10 @@ public class Kino {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
@@ -8,6 +8,8 @@ import org.jsoup.nodes.Document;
|
||||
import org.jsoup.nodes.Element;
|
||||
import org.jsoup.select.Elements;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
@@ -22,12 +24,12 @@ public class Hdrezka implements KinoWarez {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void search(String nameKino, List<Kino> outList, boolean strong) {
|
||||
public List<Kino> search(String nameKino, boolean strong) {
|
||||
Browser browser = Tools.createBrowser();
|
||||
browser.setEncoding("UTF-8");
|
||||
|
||||
String html = browser.get(DOMAIN + "/?do=search&subaction=search&q=" + Tools.SafeUrlEncode(nameKino, "UTF-8"));
|
||||
if (html.isEmpty()) return;
|
||||
if (html.isEmpty()) return Collections.emptyList();
|
||||
|
||||
Document document = Jsoup.parse(html);
|
||||
Pattern pattern = null;
|
||||
@@ -36,6 +38,7 @@ public class Hdrezka implements KinoWarez {
|
||||
pattern = Tools.getStrongPattern(nk);
|
||||
}
|
||||
|
||||
List<Kino> outList = new ArrayList<>();
|
||||
Elements elements = document.getElementsByClass("b-content__inline_item-cover");
|
||||
for (Element element : elements) {
|
||||
Element childElement = element.child(0);
|
||||
@@ -53,6 +56,8 @@ public class Hdrezka implements KinoWarez {
|
||||
|
||||
outList.add(new Kino(name, url));
|
||||
}
|
||||
|
||||
return outList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,6 @@ import java.util.List;
|
||||
|
||||
public interface KinoWarez {
|
||||
String getName();
|
||||
void search(String nameKino, List<Kino> outList, boolean strong);
|
||||
List<Kino> search(String nameKino, boolean strong);
|
||||
String player(String page);
|
||||
}
|
||||
|
||||
@@ -12,6 +12,8 @@ import org.jsoup.nodes.Document;
|
||||
import org.jsoup.nodes.Element;
|
||||
import org.jsoup.select.Elements;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
@@ -26,13 +28,13 @@ public class Onlinelife implements KinoWarez {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void search(String nameKino, List<Kino> outList, boolean strong) {
|
||||
public List<Kino> search(String nameKino, boolean strong) {
|
||||
Browser browser = Tools.createBrowser();
|
||||
browser.setEncoding("windows-1251");
|
||||
|
||||
String postData = "do=search&subaction=search&mode=simple&story=" + Tools.SafeUrlEncode(nameKino, "windows-1251");
|
||||
String html = browser.post(DOMAIN + "/?do=search", postData);
|
||||
if (html.isEmpty()) return;
|
||||
if (html.isEmpty()) return Collections.emptyList();
|
||||
|
||||
Document document = Jsoup.parse(html);
|
||||
Pattern pattern = null;
|
||||
@@ -43,8 +45,9 @@ public class Onlinelife implements KinoWarez {
|
||||
|
||||
// ничего не найдено?
|
||||
Elements elements = document.getElementsByClass("info");
|
||||
if (elements.size() > 0) return;
|
||||
if (elements.size() > 0) return Collections.emptyList();
|
||||
|
||||
List<Kino> outList = new ArrayList<>();
|
||||
elements = document.getElementsByClass("custom-poster");
|
||||
for (Element element : elements) {
|
||||
Element childElement = element.child(0);
|
||||
@@ -61,6 +64,8 @@ public class Onlinelife implements KinoWarez {
|
||||
name = name.replaceAll("\\[.+", "").trim();
|
||||
outList.add(new Kino(name, url));
|
||||
}
|
||||
|
||||
return outList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -53,7 +53,12 @@ public class IndexServlet extends HttpServlet {
|
||||
ThreadGroup threadGroup = new ThreadGroup("");
|
||||
for (KinoWarez kinoWarez : kinoWarezSet) { //TODO на будущее надо ограничить количество одновременных потоков
|
||||
new Thread(threadGroup, () -> {
|
||||
kinoWarez.search(search, list, strong);
|
||||
List<Kino> outList = kinoWarez.search(search, strong);
|
||||
|
||||
for (Kino kino : outList) {
|
||||
kino.setName("[" + kinoWarez.getName() + "] " + kino.getName());
|
||||
}
|
||||
list.addAll(outList);
|
||||
}).start();
|
||||
}
|
||||
|
||||
|
||||
@@ -23,10 +23,9 @@ public class TestHdrezka {
|
||||
|
||||
private void search(boolean strong) {
|
||||
KinoWarez kinoWarez = new Hdrezka();
|
||||
List<Kino> kinoList = new ArrayList<>();
|
||||
|
||||
String titleKino = "рик и морти";
|
||||
kinoWarez.search(titleKino, kinoList, strong);
|
||||
List<Kino> kinoList = kinoWarez.search(titleKino, strong);
|
||||
|
||||
assertTrue(kinoList.size() > 0);
|
||||
|
||||
|
||||
@@ -23,10 +23,9 @@ public class TestOnlinelife {
|
||||
|
||||
private void search(boolean strong) {
|
||||
KinoWarez kinoWarez = new Onlinelife();
|
||||
List<Kino> kinoList = new ArrayList<>();
|
||||
|
||||
String titleKino = "рик и морти";
|
||||
kinoWarez.search(titleKino, kinoList, strong);
|
||||
List<Kino> kinoList = kinoWarez.search(titleKino, strong);
|
||||
|
||||
assertTrue(kinoList.size() > 0);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user