0

Изменение алгоритма выдачи списка кино

This commit is contained in:
2016-03-26 16:50:04 +03:00
parent be54401bf6
commit 987a22b545
7 changed files with 28 additions and 11 deletions

View File

@@ -13,6 +13,10 @@ public class Kino {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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();
}

View File

@@ -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);

View File

@@ -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);