FilmwebPlugin extends ImdbPlugin { protected boolean updateMediaInfo(Movie movie, String filmwebUrl) { boolean returnValue = Boolean.TRUE; String xml = getPage(filmwebUrl); if (StringUtils.isBlank(xml)) { return Boolean.FALSE; } if (HTMLTools.extractTag(xml, "<title>").contains("Serial") && !movie.isTVShow()) { movie.setMovieType(Movie.TYPE_TVSHOW); return Boolean.FALSE; } if (OverrideTools.checkOverwriteTitle(movie, FILMWEB_PLUGIN_ID)) { movie.setTitle(HTMLTools.extractTag(xml, "<title>", 0, "()></"), FILMWEB_PLUGIN_ID); } if (OverrideTools.checkOverwriteOriginalTitle(movie, FILMWEB_PLUGIN_ID)) { String metaTitle = HTMLTools.extractTag(xml, "og:title", ">"); if (metaTitle.contains("/")) { String originalTitle = HTMLTools.extractTag(metaTitle, "/", 0, "()><\""); if (originalTitle.endsWith(", The")) { originalTitle = "The " + originalTitle.substring(0, originalTitle.length() - 5); } movie.setOriginalTitle(originalTitle, FILMWEB_PLUGIN_ID); } } if (movie.getRating() == -1) { movie.addRating(FILMWEB_PLUGIN_ID, StringTools.parseRating(HTMLTools.getTextAfterElem(xml, "average"))); } if (OverrideTools.checkOverwriteTop250(movie, FILMWEB_PLUGIN_ID)) { String top250 = HTMLTools.getTextAfterElem(xml, "<a class=\"worldRanking\""); Matcher m = P_TOP250.matcher(top250); if (m.find()) { movie.setTop250(m.group(1), FILMWEB_PLUGIN_ID); } } if (OverrideTools.checkOverwriteReleaseDate(movie, FILMWEB_PLUGIN_ID)) { movie.setReleaseDate(HTMLTools.getTextAfterElem(xml, "filmPremiereWorld"), FILMWEB_PLUGIN_ID); } if (OverrideTools.checkOverwriteRuntime(movie, FILMWEB_PLUGIN_ID)) { Matcher m = P_RUNTIME.matcher(xml); if (m.find()) { int intRuntime = DateTimeTools.processRuntime(m.group(1)); if (intRuntime > 0) { movie.setRuntime(String.valueOf(intRuntime), FILMWEB_PLUGIN_ID); } } } if (OverrideTools.checkOverwriteCountry(movie, FILMWEB_PLUGIN_ID)) { List<String> countries = HTMLTools.extractTags(xml, "produkcja:", "</tr", "<a ", "</a>"); movie.setCountries(countries, FILMWEB_PLUGIN_ID); } if (OverrideTools.checkOverwriteGenres(movie, FILMWEB_PLUGIN_ID)) { List<String> newGenres = new ArrayList<>(); for (String genre : HTMLTools.extractTags(xml, "gatunek:", "produkcja:", "<a ", "</a>")) { newGenres.add(Library.getIndexingGenre(genre)); } movie.setGenres(newGenres, FILMWEB_PLUGIN_ID); } String plot = HTMLTools.extractTag(xml, "v:summary\">", "</p>"); if (StringTools.isValidString(plot)) { int buttonIndex = plot.indexOf("<button"); if (buttonIndex > 0) { plot = plot.substring(0, buttonIndex); } plot = HTMLTools.removeHtmlTags(plot); if (OverrideTools.checkOverwritePlot(movie, FILMWEB_PLUGIN_ID)) { movie.setPlot(plot, FILMWEB_PLUGIN_ID); } if (OverrideTools.checkOverwriteOutline(movie, FILMWEB_PLUGIN_ID)) { movie.setOutline(plot, FILMWEB_PLUGIN_ID); } } if (OverrideTools.checkOverwriteYear(movie, FILMWEB_PLUGIN_ID)) { Matcher m = P_YEAR.matcher(xml); if (m.find()) { movie.setYear(m.group(1), FILMWEB_PLUGIN_ID); } } xml = getPage(filmwebUrl + "/cast/actors"); if (StringUtils.isNotBlank(xml) && !scanCastInformation(movie, xml)) { returnValue = Boolean.FALSE; } xml = getPage(filmwebUrl + "/cast/crew"); if (StringUtils.isNotBlank(xml) && !scanCrewInformation(movie, xml)) { returnValue = Boolean.FALSE; } if (movie.isTVShow()) { scanTVShowTitles(movie); } if (downloadFanart && StringTools.isNotValidString(movie.getFanartURL())) { movie.setFanartURL(getFanartURL(movie)); if (StringTools.isValidString(movie.getFanartURL())) { movie.setFanartFilename(movie.getBaseName() + fanartToken + ".jpg"); } } return returnValue; } FilmwebPlugin(); @Override String getPluginID(); final void init(); String getMovieId(Movie movie); String getMovieId(String title, String year); @Override boolean scan(Movie movie); @Override void scanTVShowTitles(Movie movie); @Override boolean scanNFO(String nfo, Movie movie); static final String FILMWEB_PLUGIN_ID; }
@Test public void testUpdateMediaInfoTitle01() { LOG.info("testUpdateMediaInfoTitle01"); Movie movie = new Movie(); movie.setId(FilmwebPlugin.FILMWEB_PLUGIN_ID, "http: filmwebPlugin.updateMediaInfo(movie, movie.getId(FilmwebPlugin.FILMWEB_PLUGIN_ID)); assertEquals("Seksmisja", movie.getTitle()); assertEquals("Seksmisja", movie.getOriginalTitle()); }
@Test public void testUpdateMediaInfoTitle02() { LOG.info("testUpdateMediaInfoTitle02"); Movie movie = new Movie(); movie.setId(FilmwebPlugin.FILMWEB_PLUGIN_ID, "http: filmwebPlugin.updateMediaInfo(movie, movie.getId(FilmwebPlugin.FILMWEB_PLUGIN_ID)); assertEquals("John Rambo", movie.getTitle()); assertEquals("Rambo", movie.getOriginalTitle()); }
@Test public void testUpdateMediaInfoTitleWithOriginalTitle() { LOG.info("testUpdateMediaInfoTitleWithOriginalTitle"); Movie movie = new Movie(); movie.setId(FilmwebPlugin.FILMWEB_PLUGIN_ID, "http: filmwebPlugin.updateMediaInfo(movie, movie.getId(FilmwebPlugin.FILMWEB_PLUGIN_ID)); assertEquals("Ojciec chrzestny", movie.getTitle()); assertEquals("The Godfather", movie.getOriginalTitle()); }
@Test public void testUpdateMediaInfoRating() { LOG.info("testUpdateMediaInfoRating"); Movie movie = new Movie(); movie.setId(FilmwebPlugin.FILMWEB_PLUGIN_ID, "http: filmwebPlugin.updateMediaInfo(movie, movie.getId(FilmwebPlugin.FILMWEB_PLUGIN_ID)); LOG.info("Movie Rating: {}", movie.getRating(FilmwebPlugin.FILMWEB_PLUGIN_ID)); assertEquals(87, movie.getRating(FilmwebPlugin.FILMWEB_PLUGIN_ID)); }
@Test public void testUpdateMediaInfoTop250() { LOG.info("testUpdateMediaInfoTop250"); Movie movie = new Movie(); movie.setId(FilmwebPlugin.FILMWEB_PLUGIN_ID, "http: filmwebPlugin.updateMediaInfo(movie, movie.getId(FilmwebPlugin.FILMWEB_PLUGIN_ID)); assertEquals(3, movie.getTop250()); }
@Test public void testUpdateMediaInfoReleaseDate() { LOG.info("testUpdateMediaInfoReleaseDate"); Movie movie = new Movie(); movie.setId(FilmwebPlugin.FILMWEB_PLUGIN_ID, "http: filmwebPlugin.updateMediaInfo(movie, movie.getId(FilmwebPlugin.FILMWEB_PLUGIN_ID)); assertEquals("2008-01-23", movie.getReleaseDate()); }
@Test public void testUpdateMediaInfoRuntime() { LOG.info("testUpdateMediaInfoRuntime"); Movie movie = new Movie(); movie.setId(FilmwebPlugin.FILMWEB_PLUGIN_ID, "http: filmwebPlugin.updateMediaInfo(movie, movie.getId(FilmwebPlugin.FILMWEB_PLUGIN_ID)); assertEquals("92", movie.getRuntime()); }
@Test public void testUpdateMediaInfoCountry() { LOG.info("testUpdateMediaInfoCountry"); Movie movie = new Movie(); movie.setId(FilmwebPlugin.FILMWEB_PLUGIN_ID, "http: filmwebPlugin.updateMediaInfo(movie, movie.getId(FilmwebPlugin.FILMWEB_PLUGIN_ID)); assertEquals("Niemcy / USA", movie.getCountriesAsString()); }
@Test public void testUpdateMediaInfoGenre() { LOG.info("testUpdateMediaInfoGenre"); Movie movie = new Movie(); movie.setId(FilmwebPlugin.FILMWEB_PLUGIN_ID, "http: filmwebPlugin.updateMediaInfo(movie, movie.getId(FilmwebPlugin.FILMWEB_PLUGIN_ID)); assertEquals(Arrays.asList(new String[]{"Akcja"}).toString(), movie.getGenres().toString()); }
@Test public void testUpdateMediaInfoOutline() { LOG.info("testUpdateMediaInfoOutline"); Movie movie = new Movie(); int outlineLength = PropertiesUtil.getIntProperty("movie.outline.maxLength", 500); movie.setId(FilmwebPlugin.FILMWEB_PLUGIN_ID, "http: filmwebPlugin.updateMediaInfo(movie, movie.getId(FilmwebPlugin.FILMWEB_PLUGIN_ID)); assertEquals( StringTools.trimToLength( "9 sierpnia 1991 roku telewizja transmituje epokowy eksperyment: dwóch śmiałków - Maks (Jerzy Stuhr) i Albert (Olgierd Łukaszewicz), zostaje poddanych hibernacji. Podczas ich snu wybucha wojna nuklearna. Uczestnicy eksperymentu budzą się w 2044 roku. Od opiekującej się nimi doktor Lamii dowiadują się, że w ciągu ostatnich kilkudziesięciu lat geny męskie zostały całkowicie zniszczone promieniowaniem, a oni są prawdopodobnie jedynymi osobnikami płci męskiej, którzy przetrwali kataklizm. Niezwykła<span> społeczność kobiet, w jakiej znaleźli się bohaterowie, egzystuje w całkowicie sztucznych warunkach, głęboko pod powierzchnią ziemi. Władzę dyktatorską pełni tu Jej Ekscelencja, która darzy męskich osobników szczególnym zainteresowaniem. Maks i Albert znajdują się pod stałą obserwacją i ścisłą kontrolą. Takie życie na dłuższą metę wydaje im się jednak niemożliwe. Zdesperowani postanawiają więc uciec. ", outlineLength), movie.getOutline()); }
@Test public void testUpdateMediaInfoPlot01() { LOG.info("testUpdateMediaInfoPlot01"); Movie movie = new Movie(); int plotLength = PropertiesUtil.getIntProperty("movie.plot.maxLength", 500); movie.setId(FilmwebPlugin.FILMWEB_PLUGIN_ID, "http: filmwebPlugin.updateMediaInfo(movie, movie.getId(FilmwebPlugin.FILMWEB_PLUGIN_ID)); assertEquals( StringTools.trimToLength( "Pod koniec XIII wieku Szkocja dostaje się pod panowanie angielskiego króla, Edwarda I. Przejęcie władzy odbywa się w wyjątkowo krwawych okolicznościach. Jednym ze świadków gwałtów i morderstw jest kilkunastoletni chłopak, William Wallace. Po latach spędzonych pod opieką wuja dorosły William wraca do rodzinnej wioski. Jedną z pierwszych osób, które spotyka, jest Murron - przyjaciółka z lat dzieciństwa. Dawne uczucie przeradza się w wielką i szczerą miłość. Niestety wkrótce dziewczyna ginie z rąk angielskich żołnierzy. Wydarzenie to staje się to momentem przełomowym w życiu młodego Szkota. William decyduje się bowiem na straceńczą walkę z okupantem i po brawurowym ataku zdobywa warownię wroga. Dzięki ogromnej odwadze zostaje wykreowany na przywódcę powstania przeciw angielskiej tyranii...", plotLength), movie.getPlot()); }
@Test public void testUpdateMediaInfoPlot02() { LOG.info("testUpdateMediaInfoPlot02"); Movie movie = new Movie(); int plotLength = PropertiesUtil.getIntProperty("movie.plot.maxLength", 500); movie.setId(FilmwebPlugin.FILMWEB_PLUGIN_ID, "http: filmwebPlugin.updateMediaInfo(movie, movie.getId(FilmwebPlugin.FILMWEB_PLUGIN_ID)); assertEquals( StringTools.trimToLength( "Agent wydziału do walki z przemytem narkotyków i oficer wywiadu marynarki są w sytuacji bez wyjścia. Kradną pieniądze gangsterów i zamierzają je przekazać na dobre cele. Okazuje się jednak, że w rzeczywistości ukradli pieniądze CIA, a zleceniodawcami są mafiosi.", plotLength), movie.getPlot()); }
@Test public void testUpdateMediaInfoYear() { LOG.info("testUpdateMediaInfoYear"); Movie movie = new Movie(); movie.setId(FilmwebPlugin.FILMWEB_PLUGIN_ID, "http: filmwebPlugin.updateMediaInfo(movie, movie.getId(FilmwebPlugin.FILMWEB_PLUGIN_ID)); assertEquals("1983", movie.getYear()); }
@Test public void testUpdateMediaInfoDirector() { LOG.info("testUpdateMediaInfoDirector"); Movie movie = new Movie(); movie.setId(FilmwebPlugin.FILMWEB_PLUGIN_ID, "http: filmwebPlugin.updateMediaInfo(movie, movie.getId(FilmwebPlugin.FILMWEB_PLUGIN_ID)); LinkedHashSet<String> testDirectors = new LinkedHashSet<>(); testDirectors.add("James Cameron"); assertEquals(Arrays.asList(testDirectors.toArray()).toString(), Arrays.asList(Arrays.copyOf(movie.getDirectors().toArray(), 1)).toString()); }
@Test public void testUpdateMediaInfoCast01() { LOG.info("testUpdateMediaInfoCast01"); Movie movie = new Movie(); movie.setId(FilmwebPlugin.FILMWEB_PLUGIN_ID, "http: filmwebPlugin.updateMediaInfo(movie, movie.getId(FilmwebPlugin.FILMWEB_PLUGIN_ID)); LinkedHashSet<String> testCast = new LinkedHashSet<>(); testCast.add("Sam Worthington"); testCast.add("Zoe Saldana"); assertEquals(Arrays.asList(testCast.toArray()).toString(), Arrays.asList(Arrays.copyOf(movie.getCast().toArray(), 2)).toString()); }
@Test public void testUpdateMediaInfoCast02() { LOG.info("testUpdateMediaInfoCast02"); Movie movie = new Movie(); movie.setId(FilmwebPlugin.FILMWEB_PLUGIN_ID, "http: filmwebPlugin.updateMediaInfo(movie, movie.getId(FilmwebPlugin.FILMWEB_PLUGIN_ID)); assertTrue("Missing Denzel Washington", movie.getCast().contains("Denzel Washington")); assertTrue("Missing Mark Wahlberg", movie.getCast().contains("Mark Wahlberg")); }
@Test public void testUpdateMediaInfoWriters() { LOG.info("testUpdateMediaInfoWriters"); Movie movie = new Movie(); movie.setId(FilmwebPlugin.FILMWEB_PLUGIN_ID, "http: filmwebPlugin.updateMediaInfo(movie, movie.getId(FilmwebPlugin.FILMWEB_PLUGIN_ID)); LinkedHashSet<String> testWriters = new LinkedHashSet<>(); testWriters.add("James Gunn"); assertEquals(Arrays.asList(testWriters.toArray()).toString(), Arrays.asList(Arrays.copyOf(movie.getWriters().toArray(), 1)).toString()); }
@Test public void testUpdateMediaInfoUpdateTVShowInfo() { LOG.info("testUpdateMediaInfoUpdateTVShowInfo"); Movie movie = new Movie(); movie.setId(FilmwebPlugin.FILMWEB_PLUGIN_ID, "http: movie.setMovieType(Movie.TYPE_TVSHOW); MovieFile episode = new MovieFile(); episode.setSeason(4); episode.setPart(1); movie.addMovieFile(episode); episode = new MovieFile(); episode.setSeason(4); episode.setPart(2); movie.addMovieFile(episode); filmwebPlugin.updateMediaInfo(movie, movie.getId(FilmwebPlugin.FILMWEB_PLUGIN_ID)); Iterator<MovieFile> episodesIt = movie.getFiles().iterator(); assertEquals("Scylla", episodesIt.next().getTitle()); assertEquals("Breaking and Entering", episodesIt.next().getTitle()); }