Example usage for org.apache.commons.lang3 StringUtils isNumeric

List of usage examples for org.apache.commons.lang3 StringUtils isNumeric

Introduction

In this page you can find the example usage for org.apache.commons.lang3 StringUtils isNumeric.

Prototype

public static boolean isNumeric(final CharSequence cs) 

Source Link

Document

Checks if the CharSequence contains only Unicode digits.

Usage

From source file:org.yamj.core.service.artwork.online.FanartTvScanner.java

@Override
public List<ArtworkDetailDTO> getFanarts(VideoData videoData) {
    String tmdbId = tmdbScanner.getMovieId(videoData);
    if (StringUtils.isNumeric(tmdbId)) {
        return getMovieArtworkType(tmdbId, FTArtworkType.MOVIEBACKGROUND);
    }//from  w  w w  . j av a2s .  c  om
    return Collections.emptyList();
}

From source file:org.yamj.core.service.artwork.online.TheMovieDbArtworkScanner.java

@Override
public List<ArtworkDetailDTO> getPosters(VideoData videoData) {
    String tmdbId = tmdbScanner.getMovieId(videoData);
    if (StringUtils.isNumeric(tmdbId)) {
        String defaultLanguage = configService.getProperty("themoviedb.language", LANGUAGE_EN);
        return getFilteredArtwork(tmdbId, defaultLanguage, ArtworkType.POSTER, DEFAULT_POSTER_SIZE);
    }/*  www  .j  av  a 2  s .com*/
    return Collections.emptyList();
}

From source file:org.yamj.core.service.artwork.online.TheMovieDbArtworkScanner.java

@Override
public List<ArtworkDetailDTO> getFanarts(VideoData videoData) {
    String tmdbId = tmdbScanner.getMovieId(videoData);
    if (StringUtils.isNumeric(tmdbId)) {
        String defaultLanguage = configService.getProperty("themoviedb.language", LANGUAGE_EN);
        return getFilteredArtwork(tmdbId, defaultLanguage, ArtworkType.BACKDROP, DEFAULT_FANART_SIZE);
    }//  w  w  w  .ja  v a  2  s  .  com
    return Collections.emptyList();
}

From source file:org.yamj.core.service.artwork.online.TheMovieDbArtworkScanner.java

@Override
public List<ArtworkDetailDTO> getPhotos(Person person) {
    String tmdbId = tmdbScanner.getPersonId(person);
    if (StringUtils.isNumeric(tmdbId)) {
        return getFilteredArtwork(tmdbId, LANGUAGE_NONE, ArtworkType.PROFILE, DEFAULT_PHOTO_SIZE);
    }/*ww w . j  ava2 s . co  m*/
    return Collections.emptyList();
}

From source file:org.yamj.core.service.artwork.online.TheMovieDbArtworkScanner.java

/**
 * Get a list of the artwork for a movie.
 *
 * This will get all the artwork for a specified language and the blank
 * languages as well//  www.  ja va  2  s.  c  om
 *
 * @param id
 * @param language
 * @param artworkType
 * @param artworkSize
 * @return
 */
private List<ArtworkDetailDTO> getFilteredArtwork(String id, String language, ArtworkType artworkType,
        String artworkSize) {
    List<ArtworkDetailDTO> dtos = new ArrayList<>();
    if (StringUtils.isNumeric(id)) {
        int tmdbId = Integer.parseInt(id);
        try {
            // Use an empty language to get all artwork and then filter it.
            ResultList<Artwork> results;
            if (artworkType == ArtworkType.PROFILE) {
                results = tmdbApi.getPersonImages(tmdbId);
            } else {
                results = tmdbApi.getMovieImages(tmdbId, LANGUAGE_NONE);
            }

            List<Artwork> artworkList = results.getResults();
            for (Artwork artwork : artworkList) {
                if (artwork.getArtworkType() == artworkType && (StringUtils.isBlank(artwork.getLanguage())
                        || StringUtils.equalsIgnoreCase(artwork.getLanguage(), language))) {
                    URL artworkURL = tmdbApi.createImageUrl(artwork.getFilePath(), artworkSize);
                    if (artworkURL == null || artworkURL.toString().endsWith("null")) {
                        LOG.warn("{} URL is invalid and will not be used: {}", artworkType, artworkURL);
                    } else {
                        String url = artworkURL.toString();
                        dtos.add(new ArtworkDetailDTO(getScannerName(), url, HashCodeType.PART));
                    }
                }
            }
            LOG.debug("Found {} {} artworks for TMDb id {} and language '{}'", dtos.size(), artworkType, tmdbId,
                    language);
        } catch (MovieDbException ex) {
            LOG.error("Failed retrieving {} artworks for movie id {}: {}", artworkType, tmdbId,
                    ex.getMessage());
            LOG.warn("TheMovieDb error", ex);
        }
    }
    return dtos;
}

From source file:org.yamj.core.service.mediainfo.MediaInfoService.java

private void updateMediaFile(MediaFile mediaFile, Map<String, String> infosGeneral,
        List<Map<String, String>> infosVideo, List<Map<String, String>> infosAudio,
        List<Map<String, String>> infosText) {

    String infoValue;/*from   w  w w .  j a  v a2s  .co  m*/

    // get container format from general section
    infoValue = infosGeneral.get("Format");
    if (StringUtils.isNotBlank(infoValue)) {
        mediaFile.setContainer(infoValue);
    }

    // get overall bit rate from general section
    infoValue = infosGeneral.get("Overall bit rate");
    mediaFile.setOverallBitrate(getBitRate(infoValue));

    // get runtime either from video info or general section
    String runtime = getRuntime(infosGeneral, infosVideo);
    if (StringUtils.isNotBlank(runtime)) {
        mediaFile.setRuntime(DateTimeTools.processRuntime(runtime));
    } else {
        mediaFile.setRuntime(-1);
    }

    // get Info from first video stream only
    // TODO can evolve to get info from longest video stream
    if (infosVideo.size() > 0) {
        Map<String, String> infosMainVideo = infosVideo.get(0);

        // codec
        mediaFile.setCodec(infosMainVideo.get("Codec ID"));
        mediaFile.setCodecFormat(infosMainVideo.get("Format"));
        mediaFile.setCodecProfile(infosMainVideo.get("Format profile"));

        // width
        mediaFile.setWidth(-1);
        try {
            infoValue = infosMainVideo.get("Width");
            if (StringUtils.isNumeric(infoValue)) {
                mediaFile.setWidth(Integer.parseInt(infoValue));
            }
        } catch (NumberFormatException error) {
            LOG.trace("Failed to parse width: {}", infoValue, error);
        }

        // height
        mediaFile.setHeight(-1);
        try {
            infoValue = infosMainVideo.get("Height");
            if (StringUtils.isNumeric(infoValue)) {
                mediaFile.setHeight(Integer.parseInt(infoValue));
            }
        } catch (NumberFormatException ex) {
            LOG.trace("Failed to parse height: {}", infoValue, ex);
        }

        // frame rate
        infoValue = infosMainVideo.get("Frame rate");
        if (StringUtils.isBlank(infoValue)) {
            // use original frame rate
            infoValue = infosMainVideo.get("Original frame rate");
        }
        if (StringUtils.isNotBlank(infoValue)) {
            try {
                int inxDiv = infoValue.indexOf(Constants.SPACE_SLASH_SPACE);
                if (inxDiv > -1) {
                    infoValue = infoValue.substring(0, inxDiv);
                }
                mediaFile.setFps(Float.parseFloat(infoValue));
            } catch (NumberFormatException error) {
                LOG.debug("Failed to parse frame rate: {}", infoValue, error);
            }
        }

        // aspect ratio
        infoValue = infosMainVideo.get("Display aspect ratio");
        mediaFile.setAspectRatio(aspectRatioTools.cleanAspectRatio(infoValue));

        // bit rate
        mediaFile.setBitrate(getBitRate(infosMainVideo));

        // check 3D video source,
        infoValue = infosMainVideo.get("MultiView_Count");
        if ("2".equals(infoValue)) {
            mediaFile.setVideoSource("3D");
        }
    }

    // cycle through audio streams
    Set<AudioCodec> processedAudioCodecs = new HashSet<AudioCodec>(0);
    for (int numAudio = 0; numAudio < infosAudio.size(); numAudio++) {
        Map<String, String> infosCurrentAudio = infosAudio.get(numAudio);
        AudioCodec codec = mediaFile.getAudioCodec(numAudio + 1);
        if (codec == null) {
            codec = new AudioCodec();
            codec.setCounter(numAudio + 1);
            codec.setMediaFile(mediaFile);
        }
        parseAudioCodec(codec, infosCurrentAudio);
        mediaFile.getAudioCodecs().add(codec);
        processedAudioCodecs.add(codec);
    }

    // remove unprocessed internal audio codecs
    Iterator<AudioCodec> iterAudio = mediaFile.getAudioCodecs().iterator();
    while (iterAudio.hasNext()) {
        if (!processedAudioCodecs.contains(iterAudio.next())) {
            iterAudio.remove();
        }
    }

    // cycle through subtitle streams
    Set<Subtitle> processedSubtitles = new HashSet<Subtitle>(0);
    for (int numText = 0; numText < infosText.size(); numText++) {
        Map<String, String> infosCurrentText = infosText.get(numText);
        Subtitle subtitle = mediaFile.getSubtitle(numText + 1);
        if (subtitle == null) {
            subtitle = new Subtitle();
            subtitle.setCounter(numText + 1);
            subtitle.setMediaFile(mediaFile);
        }

        boolean processed = parseSubtitle(subtitle, infosCurrentText);
        if (processed) {
            mediaFile.getSubtitles().add(subtitle);
            processedSubtitles.add(subtitle);
        }
    }

    // remove unprocessed internal subtitles
    Iterator<Subtitle> iterSubs = mediaFile.getSubtitles().iterator();
    while (iterSubs.hasNext()) {
        Subtitle subtitle = iterSubs.next();
        if (subtitle.getStageFile() == null && !processedSubtitles.contains(subtitle)) {
            iterSubs.remove();
        }
    }
}

From source file:org.yamj.core.service.metadata.nfo.InfoReader.java

/**
 * Parse the XML document for NFO information
 *
 * @param xmlDoc/* w w w . j  a  v a 2  s .  co m*/
 * @param dto
 * @param nfoFilename
 * @return
 */
private void parseXML(final Document xmlDoc, InfoDTO dto, final String nfoFilename) {
    NodeList nlMovies;

    // determine if the NFO file is for a TV Show or Movie so the default ID can be set
    boolean isTV = xmlDoc.getElementsByTagName(DOMHelper.TYPE_TVSHOW).getLength() > 0;
    if (dto.isTvShow() || isTV) {
        nlMovies = xmlDoc.getElementsByTagName(DOMHelper.TYPE_TVSHOW);
        dto.setTvShow(true);
    } else {
        nlMovies = xmlDoc.getElementsByTagName(DOMHelper.TYPE_MOVIE);
        dto.setTvShow(false);
    }

    // just one movie per file
    if ((nlMovies == null) || (nlMovies.getLength() == 0)) {
        LOG.warn("NFO {} contains no infos", nfoFilename);
        return;
    }
    // get first info element
    Node nMovie = nlMovies.item(0);
    if (nMovie.getNodeType() != Node.ELEMENT_NODE) {
        LOG.warn("NFO {} contains no infos", nfoFilename);
        return;
    }
    Element eCommon = (Element) nMovie;

    // parse title
    parseTitle(eCommon, dto);

    // parse year
    String value = DOMHelper.getValueFromElement(eCommon, "year");
    dto.setYear(value);

    // get the movie IDs
    parseIds(eCommon.getElementsByTagName("id"), dto, isTV);

    // parsed watched
    value = DOMHelper.getValueFromElement(eCommon, "watched");
    boolean watched = Boolean.parseBoolean(value);

    if (dto.isTvShow()) {
        // TV show specific

        // specific TVDB id
        value = DOMHelper.getValueFromElement(eCommon, "tvdbid");
        if (StringUtils.isNotBlank(value)) {
            dto.addId(TheTVDbScanner.SCANNER_ID, value);
        }
    } else {
        // movie specific

        // movie watched status
        dto.setWatched(watched);
    }

    // parse sets
    parseSets(eCommon.getElementsByTagName("set"), dto);

    // parse rating
    int rating = MetadataTools.parseRating(DOMHelper.getValueFromElement(eCommon, "rating"));
    dto.setRating(rating);

    // parse certification
    parseCertification(eCommon, dto);

    // parse plot
    value = DOMHelper.getValueFromElement(eCommon, "plot");
    dto.setPlot(value);

    // parse outline
    value = DOMHelper.getValueFromElement(eCommon, "outline");
    dto.setOutline(value);

    // parse tagline
    value = DOMHelper.getValueFromElement(eCommon, "tagline");
    dto.setTagline(value);

    // parse quote
    value = DOMHelper.getValueFromElement(eCommon, "quote");
    dto.setQuote(value);

    // parse company (may be studio)
    value = DOMHelper.getValueFromElement(eCommon, "studio", "company");
    dto.setCompany(value);

    // parse genres
    parseGenres(eCommon.getElementsByTagName("genre"), dto);

    // premiered / release date
    movieDate(DOMHelper.getValueFromElement(eCommon, "premiered", "releasedate"), dto);

    /* TODO
    if (OverrideTools.checkOverwriteCountry(movie, NFO_PLUGIN_ID)) {
    movie.setCountries(DOMHelper.getValueFromElement(eCommon, "country"), NFO_PLUGIN_ID);
    }
    */

    // parse Top250
    value = DOMHelper.getValueFromElement(eCommon, "top250");
    if (StringUtils.isNumeric(value)) {
        try {
            dto.setTop250(Integer.parseInt(value));
        } catch (Exception e) {
            // ignore this error
        }
    }

    // director and writers
    if (!this.configServiceWrapper.getBooleanProperty("nfo.skip.crew", false)) {
        if (this.configServiceWrapper.isCastScanEnabled(JobType.DIRECTOR)) {
            parseDirectors(eCommon.getElementsByTagName("director"), dto);
        }

        if (this.configServiceWrapper.isCastScanEnabled(JobType.WRITER)) {
            List<Node> writerNodes = new ArrayList<>();
            // get writers list
            NodeList nlWriters = eCommon.getElementsByTagName("writer");
            if (nlWriters != null && nlWriters.getLength() > 0) {
                for (int looper = 0; looper < nlWriters.getLength(); looper++) {
                    Node node = nlWriters.item(looper);
                    if (node.getNodeType() == Node.ELEMENT_NODE) {
                        writerNodes.add(node);
                    }
                }
            }
            // get credits list (old style)
            nlWriters = eCommon.getElementsByTagName("credits");
            if (nlWriters != null && nlWriters.getLength() > 0) {
                for (int looper = 0; looper < nlWriters.getLength(); looper++) {
                    Node node = nlWriters.item(looper);
                    if (node.getNodeType() == Node.ELEMENT_NODE) {
                        writerNodes.add(node);
                    }
                }
            }
            // parse writers
            parseWriters(writerNodes, dto);
        }
    }

    // parse actors
    if (!this.configServiceWrapper.getBooleanProperty("nfo.skip.cast", false)
            && this.configServiceWrapper.isCastScanEnabled(JobType.ACTOR)) {
        parseActors(eCommon.getElementsByTagName("actor"), dto);
    }

    // parse artwork URLs
    if (!this.configServiceWrapper.getBooleanProperty("nfo.skip.posterURL", true)) {
        dto.addPosterURL(DOMHelper.getValueFromElement(eCommon, "thumb"));
    }
    if (!this.configServiceWrapper.getBooleanProperty("nfo.skip.fanartURL", true)) {
        dto.addFanartURL(DOMHelper.getValueFromElement(eCommon, "fanart"));
    }

    // parse trailer
    if (!this.configServiceWrapper.getBooleanProperty("nfo.skip.trailerURL", false)) {
        parseTrailers(eCommon.getElementsByTagName("trailer"), dto);
    }

    // parse all episodes
    if (dto.isTvShow()) {
        parseAllEpisodeDetails(dto, xmlDoc.getElementsByTagName(DOMHelper.TYPE_EPISODE), watched);
    }
}

From source file:org.yamj.core.service.metadata.nfo.InfoReader.java

/**
 * Parse Sets from the XML NFO file//w  w w. j a v  a 2s. co  m
 *
 * @param nlElements
 * @param dto
 */
private static void parseSets(NodeList nlElements, InfoDTO dto) {
    Node nElements;
    for (int looper = 0; looper < nlElements.getLength(); looper++) {
        nElements = nlElements.item(looper);
        if (nElements.getNodeType() == Node.ELEMENT_NODE) {
            Element eId = (Element) nElements;

            String setOrder = eId.getAttribute("order");
            if (StringUtils.isNumeric(setOrder)) {
                dto.addSetInfo(eId.getTextContent(), Integer.parseInt(setOrder));
            } else {
                dto.addSetInfo(eId.getTextContent());
            }
        }
    }
}

From source file:org.yamj.core.service.metadata.nfo.InfoReader.java

/**
 * Parse a single episode detail element
 *
 * @param eEpisodeDetails/*from w w w .  j  a v  a 2 s  .  c o m*/
 * @return
 */
private static InfoEpisodeDTO parseSingleEpisodeDetail(Element eEpisodeDetails) {
    if (eEpisodeDetails == null) {
        return null;
    }
    InfoEpisodeDTO episodeDTO = new InfoEpisodeDTO();

    episodeDTO.setTitle(DOMHelper.getValueFromElement(eEpisodeDetails, "title"));

    String tempValue = DOMHelper.getValueFromElement(eEpisodeDetails, "season");
    if (StringUtils.isNumeric(tempValue)) {
        episodeDTO.setSeason(Integer.parseInt(tempValue));
    }

    tempValue = DOMHelper.getValueFromElement(eEpisodeDetails, "episode");
    if (StringUtils.isNumeric(tempValue)) {
        episodeDTO.setEpisode(Integer.parseInt(tempValue));
    }

    episodeDTO.setPlot(DOMHelper.getValueFromElement(eEpisodeDetails, "plot"));

    tempValue = DOMHelper.getValueFromElement(eEpisodeDetails, "rating");
    episodeDTO.setRating(MetadataTools.parseRating(tempValue));

    tempValue = DOMHelper.getValueFromElement(eEpisodeDetails, "aired");
    if (StringUtils.isNotBlank(tempValue)) {
        try {
            episodeDTO.setFirstAired(MetadataTools.parseToDate(tempValue.trim()));
        } catch (Exception ignore) {
            // ignore error if date has invalid format
        }
    }

    episodeDTO.setAirsAfterSeason(
            DOMHelper.getValueFromElement(eEpisodeDetails, "airsafterseason", "airsAfterSeason"));
    episodeDTO.setAirsBeforeSeason(
            DOMHelper.getValueFromElement(eEpisodeDetails, "airsbeforeseason", "airsBeforeSeason"));
    episodeDTO.setAirsBeforeEpisode(
            DOMHelper.getValueFromElement(eEpisodeDetails, "airsbeforeepisode", "airsBeforeEpisode"));

    return episodeDTO;
}

From source file:org.yamj.core.service.metadata.online.ImdbScanner.java

private ScanResult updateVideoData(VideoData videoData, String imdbId, boolean throwTempError)
        throws IOException {
    DigestedResponse response = httpClient.requestContent(getImdbUrl(imdbId), charset);
    if (throwTempError && ResponseTools.isTemporaryError(response)) {
        throw new TemporaryUnavailableException(
                "IMDb service is temporary not available: " + response.getStatusCode());
    } else if (ResponseTools.isNotOK(response)) {
        throw new OnlineScannerException("IMDb request failed: " + response.getStatusCode());
    }//from  w  w  w  .  j  ava2s.c  o  m

    // check type change
    String xml = response.getContent();
    if (xml.contains("\"tv-extra\"") || xml.contains("\"tv-series-series\"")) {
        return ScanResult.TYPE_CHANGE;
    }
    if (StringUtils.contains(HTMLTools.extractTag(xml, "<title>"), "(TV Series")) {
        return ScanResult.TYPE_CHANGE;
    }

    // get header tag
    String headerXml = HTMLTools.extractTag(xml, "<h1 class=\"header\">", "</h1>");

    // TITLE
    if (OverrideTools.checkOverwriteTitle(videoData, SCANNER_ID)) {
        videoData.setTitle(parseTitle(headerXml), SCANNER_ID);
    }

    // ORIGINAL TITLE
    if (OverrideTools.checkOverwriteOriginalTitle(videoData, SCANNER_ID)) {
        videoData.setTitleOriginal(parseOriginalTitle(headerXml), SCANNER_ID);
    }

    // YEAR
    if (OverrideTools.checkOverwriteYear(videoData, SCANNER_ID)) {
        videoData.setPublicationYear(parseYear(headerXml), SCANNER_ID);
    }

    // PLOT
    if (OverrideTools.checkOverwritePlot(videoData, SCANNER_ID)) {
        videoData.setPlot(parsePlot(xml), SCANNER_ID);
    }

    // OUTLINE
    if (OverrideTools.checkOverwriteOutline(videoData, SCANNER_ID)) {
        videoData.setOutline(parseOutline(xml), SCANNER_ID);
    }

    // TAGLINE
    if (OverrideTools.checkOverwriteTagline(videoData, SCANNER_ID)) {
        videoData.setTagline(parseTagline(xml), SCANNER_ID);
    }

    // QUOTE
    if (OverrideTools.checkOverwriteQuote(videoData, SCANNER_ID)) {
        videoData.setQuote(parseQuote(xml), SCANNER_ID);
    }

    // RATING
    String srtRating = HTMLTools.extractTag(xml, "star-box-giga-star\">", HTML_DIV_END).replace(",", ".");
    int intRating = parseRating(HTMLTools.stripTags(srtRating));
    // try another format for the rating
    if (intRating == -1) {
        srtRating = HTMLTools.extractTag(xml, "star-bar-user-rate\">", HTML_SPAN_END).replace(",", ".");
        intRating = parseRating(HTMLTools.stripTags(srtRating));
    }
    videoData.addRating(SCANNER_ID, intRating);

    // TOP250
    String strTop = HTMLTools.extractTag(xml, "Top 250 #");
    if (StringUtils.isNumeric(strTop)) {
        videoData.setTopRank(NumberUtils.toInt(strTop, -1));
    }

    // GENRES
    if (OverrideTools.checkOverwriteGenres(videoData, SCANNER_ID)) {
        videoData.setGenreNames(parseGenres(xml), SCANNER_ID);
    }

    // STUDIOS
    if (OverrideTools.checkOverwriteStudios(videoData, SCANNER_ID)) {
        videoData.setStudioNames(parseStudios(imdbId), SCANNER_ID);
    }

    // COUNTRIES
    if (OverrideTools.checkOverwriteCountries(videoData, SCANNER_ID)) {
        videoData.setCountryNames(parseCountries(xml), SCANNER_ID);
    }

    // CERTIFICATIONS
    videoData.setCertificationInfos(parseCertifications(imdbId));

    // RELEASE DATE
    parseReleaseData(videoData, imdbId);

    // CAST and CREW
    parseCastCrew(videoData, imdbId);

    // AWARDS
    if (configServiceWrapper.getBooleanProperty("imdb.movie.awards", Boolean.FALSE)) {
        videoData.addAwards(parseAwards(imdbId), SCANNER_ID);
    }

    return ScanResult.OK;
}