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