protected bool ExtractSeriesData(string localFsResourcePath, IDictionary<Guid, MediaItemAspect> extractedAspectData) { // If resource is not a video file, the MediaAspect's title is not available string title; if (!MediaItemAspect.TryGetAttribute(extractedAspectData, MediaAspect.ATTR_TITLE, out title) || string.IsNullOrEmpty(title)) return false; SeriesInfo seriesInfo; // Try to get extended information out of matroska files) MatroskaMatcher matroskaMatcher = new MatroskaMatcher(); matroskaMatcher.MatchSeries(localFsResourcePath, out seriesInfo, ref extractedAspectData); // If no information from mkv were found, try name matching if (seriesInfo == null || !seriesInfo.IsCompleteMatch) { // Try to match series from folder and file namings SeriesMatcher seriesMatcher = new SeriesMatcher(); seriesMatcher.MatchSeries(localFsResourcePath, out seriesInfo); } // Lookup online information (incl. fanart) if (seriesInfo != null && seriesInfo.IsCompleteMatch) { SeriesTvDbMatcher.Instance.FindAndUpdateSeries(seriesInfo); seriesInfo.SetMetadata(extractedAspectData); } return (seriesInfo != null && seriesInfo.IsCompleteMatch); }
protected bool ExtractSeriesData(ILocalFsResourceAccessor lfsra, IDictionary<Guid, MediaItemAspect> extractedAspectData) { // VideoAspect must be present to be sure it is actually a video resource. if (!extractedAspectData.ContainsKey(VideoAspect.ASPECT_ID)) return false; SeriesInfo seriesInfo; // Try to get extended information out of matroska files) MatroskaMatcher matroskaMatcher = new MatroskaMatcher(); if (matroskaMatcher.MatchSeries(lfsra, out seriesInfo, ref extractedAspectData)) { ServiceRegistration.Get<ILogger>().Debug("ExtractSeriesData: Found SeriesInformation by MatroskaMatcher for {0}, IMDB {1}, TVDB {2}, IsCompleteMatch {3}", seriesInfo.Series, seriesInfo.ImdbId, seriesInfo.TvdbId, seriesInfo.IsCompleteMatch); } // If no information from mkv were found, try name matching if (seriesInfo == null || !seriesInfo.IsCompleteMatch) { // Try to match series from folder and file namings SeriesMatcher seriesMatcher = new SeriesMatcher(); seriesMatcher.MatchSeries(lfsra, out seriesInfo); } // Lookup online information (incl. fanart) if (seriesInfo != null && seriesInfo.IsCompleteMatch) { SeriesTvDbMatcher.Instance.FindAndUpdateSeries(seriesInfo); seriesInfo.SetMetadata(extractedAspectData); } return (seriesInfo != null && seriesInfo.IsCompleteMatch); }
protected bool ExtractSeriesData(string localFsResourcePath, IDictionary<Guid, MediaItemAspect> extractedAspectData) { // VideoAspect must be present to be sure it is actually a video resource. if (!extractedAspectData.ContainsKey(VideoAspect.ASPECT_ID)) return false; SeriesInfo seriesInfo; // Try to get extended information out of matroska files) MatroskaMatcher matroskaMatcher = new MatroskaMatcher(); matroskaMatcher.MatchSeries(localFsResourcePath, out seriesInfo, ref extractedAspectData); // If no information from mkv were found, try name matching if (seriesInfo == null || !seriesInfo.IsCompleteMatch) { // Try to match series from folder and file namings SeriesMatcher seriesMatcher = new SeriesMatcher(); seriesMatcher.MatchSeries(localFsResourcePath, out seriesInfo); } // Lookup online information (incl. fanart) if (seriesInfo != null && seriesInfo.IsCompleteMatch) { SeriesTvDbMatcher.Instance.FindAndUpdateSeries(seriesInfo); seriesInfo.SetMetadata(extractedAspectData); } return (seriesInfo != null && seriesInfo.IsCompleteMatch); }
protected bool ExtractSeriesData(ILocalFsResourceAccessor lfsra, IDictionary<Guid, MediaItemAspect> extractedAspectData) { // VideoAspect must be present to be sure it is actually a video resource. if (!extractedAspectData.ContainsKey(VideoAspect.ASPECT_ID)) return false; SeriesInfo seriesInfo = null; // First check if we already have a complete match from a previous MDE string title; int tvDbId; int seasonNumber; IEnumerable<int> episodeNumbers; if (MediaItemAspect.TryGetAttribute(extractedAspectData, MediaAspect.ATTR_TITLE, out title) && MediaItemAspect.TryGetAttribute(extractedAspectData, SeriesAspect.ATTR_TVDB_ID, out tvDbId) && MediaItemAspect.TryGetAttribute(extractedAspectData, SeriesAspect.ATTR_SEASON, out seasonNumber) && (episodeNumbers = extractedAspectData[SeriesAspect.ASPECT_ID].GetCollectionAttribute<int>(SeriesAspect.ATTR_EPISODE)) != null) { seriesInfo = new SeriesInfo { Series = title, TvdbId = tvDbId, SeasonNumber = seasonNumber, }; episodeNumbers.ToList().ForEach(n => seriesInfo.EpisodeNumbers.Add(n)); } // If there was no complete match, yet, try to get extended information out of matroska files) if (seriesInfo == null || !seriesInfo.IsCompleteMatch) { MatroskaMatcher matroskaMatcher = new MatroskaMatcher(); if (matroskaMatcher.MatchSeries(lfsra, out seriesInfo, ref extractedAspectData)) { ServiceRegistration.Get<ILogger>().Debug("ExtractSeriesData: Found SeriesInformation by MatroskaMatcher for {0}, IMDB {1}, TVDB {2}, IsCompleteMatch {3}", seriesInfo.Series, seriesInfo.ImdbId, seriesInfo.TvdbId, seriesInfo.IsCompleteMatch); } } // If no information was found before, try name matching if (seriesInfo == null || !seriesInfo.IsCompleteMatch) { // Try to match series from folder and file namings SeriesMatcher seriesMatcher = new SeriesMatcher(); seriesMatcher.MatchSeries(lfsra, out seriesInfo); } // Lookup online information (incl. fanart) if (seriesInfo != null && seriesInfo.IsCompleteMatch) { SeriesTvDbMatcher.Instance.FindAndUpdateSeries(seriesInfo); if (!_onlyFanArt) seriesInfo.SetMetadata(extractedAspectData); } return (seriesInfo != null && seriesInfo.IsCompleteMatch && !_onlyFanArt); }