public static ArrayList<EntryModel> getPopularContent() { final ArrayList<EntryModel> result = new ArrayList<>(); Thread thread = new Thread( () -> { try { Document document = Jsoup.connect("http://jkanime.net/").get(); Elements elements = document.getElementsByClass("home_portada_bg"); for (Element element : elements) { result.add( new EntryModel( Constants.TYPE_SHOW, element.getElementsByTag("a").first().text(), element.getElementsByTag("a").first().attr("abs:href"), element.getElementsByTag("img").first().attr("src"))); } } catch (IOException e) { e.printStackTrace(); } }); thread.start(); try { thread.join(); return result; } catch (InterruptedException | NullPointerException e) { e.printStackTrace(); return null; } }
public static ArrayList<EntryModel> getSearchResults(final String query) { final ArrayList<EntryModel> result = new ArrayList<>(); Thread thread = new Thread( () -> { try { Document document = Jsoup.connect("http://jkanime.net/buscar/" + query.replace(" ", "_")).get(); Elements elements = document.getElementsByClass("search"); for (Element element : elements) { String title = element.getElementsByClass("titl").first().text(); String url = element.getElementsByClass("titl").first().attr("abs:href"); String picUrl = element.getElementsByTag("img").first().attr("src"); result.add(new EntryModel(Constants.TYPE_SHOW, title, url, picUrl)); } } catch (IOException e) { e.printStackTrace(); } }); thread.start(); try { thread.join(); return result; } catch (InterruptedException | NullPointerException e) { e.printStackTrace(); return null; } }
public static ArrayList<EntryModel> getEpisodeLinks(final String url) { final ArrayList<EntryModel> result = new ArrayList<>(); Thread thread = new Thread( () -> { try { Document document = Jsoup.connect(url).get(); Elements titleElements = document.getElementsByClass("video_option").size() != 0 ? document.getElementsByClass("video_option").first().getElementsByTag("a") : document .getElementsByClass("video_option_act") .first() .getElementsByTag("a"); Elements videoElements = document.getElementsByClass("player_conte"); for (int i = 0; i < videoElements.size(); i++) { String title = titleElements.get(i).text(); String linkUrl = videoElements.get(i).attr("src"); if (!linkUrl.startsWith("http")) { Elements flashElements = videoElements.get(i).select("param[name=flashvars]"); linkUrl = flashElements.attr("value").split("[&;]")[0].split("=")[1]; if (!linkUrl.startsWith("http")) { flashElements = videoElements.get(i).select("[flashvars]"); linkUrl = flashElements.attr("flashvars").split("[&;]")[0].split("=")[1]; } } result.add(new EntryModel(Constants.TYPE_LINK, title, linkUrl)); } } catch (IOException | IndexOutOfBoundsException e) { e.printStackTrace(); } }); thread.start(); try { thread.join(); return result; } catch (InterruptedException | NullPointerException e) { e.printStackTrace(); return null; } }
public static ArrayList<EntryModel> getEpisodeList(final String url) { final ArrayList<EntryModel> result = new ArrayList<>(); Thread thread = new Thread( () -> { try { Document document = Jsoup.connect(url).get(); if (document.getElementsByClass("lista_title_uniq").size() == 0) { String[] lastPage = document .getElementsByClass("listnavi") .first() .lastElementSibling() .text() .split(" "); int episodes = Integer.parseInt(lastPage[lastPage.length - 1]); for (int i = 1; i <= episodes; i++) { result.add( new EntryModel(Constants.TYPE_EPISODE, "Episode " + i, url + i + "/")); } } else { String title = document.getElementsByClass("lista_title_uniq").first().text(); result.add( new EntryModel( Constants.TYPE_EPISODE, title, url + title.toLowerCase() + "/")); } } catch (IOException e) { e.printStackTrace(); } }); thread.start(); try { thread.join(); return result; } catch (InterruptedException | NullPointerException e) { e.printStackTrace(); return null; } }
private boolean[] getForks(final Seat seat) { Fork left = seat.getLeft(); boolean hasRight = false; boolean hasBoth = false; boolean exception = false; // fuer Abbruchbedingung, falls anfordern der // Gabel scheitert boolean[] hasBoth_exception = new boolean[2]; while (!hasBoth && !exception) { int tries = 0; try { left.getSemaphore().acquire(); } catch (InterruptedException e1) { System.out.println("This shouldnt happen."); e1.printStackTrace(); } while (!hasRight && tries <= Constant.TRIES_TO_GET_FORK) { if (seat.equals(seatList.getLast())) { // Unterscheidung ob rechte Gabel lokal oder remote liegt if (this.client.hasNeighborClient()) { hasRight = this.client.callNeighborToBlockFork(); } else { try { hasRight = seat.getRight() .getSemaphore() .tryAcquire(Constant.TIME_UNTIL_NEW_FORKTRY, TimeUnit.MILLISECONDS); } catch (InterruptedException | NullPointerException e) { System.out.println("Fehler beim Anfordern der rechten Gabel!"); e.printStackTrace(); exception = true; } } } else { try { hasRight = seat.getRight() .getSemaphore() .tryAcquire(Constant.TIME_UNTIL_NEW_FORKTRY, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { e.printStackTrace(); } } tries++; } hasBoth = hasRight; if (!hasBoth) { left.getSemaphore().release(); try { Thread.sleep(Constant.TIME_UNTIL_NEW_FORKTRY); } catch (InterruptedException e) { e.printStackTrace(); } } } hasBoth_exception[0] = hasBoth; hasBoth_exception[1] = exception; return hasBoth_exception; }