Exemple #1
0
        public GetHEREManifest()
        {
            ConfigurationArguments.Clear();

            DataProviders.Clear();

            DataProviders.Add(DataSourceParameterType.SourceDatabaseDataSource.ToString(), null);
        }
        public override bool FromMetadata(IDictionary <Guid, IList <MediaItemAspect> > aspectData)
        {
            if (!aspectData.ContainsKey(TempSubtitleAspect.ASPECT_ID) && !aspectData.ContainsKey(EpisodeAspect.ASPECT_ID) && !aspectData.ContainsKey(MovieAspect.ASPECT_ID))
            {
                return(false);
            }

            if (MediaItemAspect.TryGetAspect(aspectData, EpisodeAspect.Metadata, out var episodeAspect))
            {
                IEnumerable collection;
                if (MediaItemAspect.TryGetAttribute(aspectData, EpisodeAspect.ATTR_EPISODE, out collection))
                {
                    Episode = collection.Cast <int>().Distinct().First();
                }

                Season     = episodeAspect.GetAttributeValue <int>(EpisodeAspect.ATTR_SEASON);
                MediaTitle = episodeAspect.GetAttributeValue <string>(EpisodeAspect.ATTR_SERIES_NAME);
            }
            else if (MediaItemAspect.TryGetAspect(aspectData, MovieAspect.Metadata, out var movieAspect))
            {
                MediaTitle = movieAspect.GetAttributeValue <string>(MovieAspect.ATTR_MOVIE_NAME);
                if (MediaItemAspect.TryGetAttribute(aspectData, MediaAspect.ATTR_RECORDINGTIME, out DateTime release))
                {
                    Year = release.Year;
                }
            }
            else if (MediaItemAspect.TryGetAspect(aspectData, MediaAspect.Metadata, out var mediaAspect))
            {
                MediaTitle = mediaAspect.GetAttributeValue <string>(MediaAspect.ATTR_TITLE);
            }

            if (MediaItemAspect.TryGetAspect(aspectData, TempSubtitleAspect.Metadata, out var subAspect))
            {
                Name        = subAspect.GetAttributeValue <string>(TempSubtitleAspect.ATTR_NAME);
                DisplayName = subAspect.GetAttributeValue <string>(TempSubtitleAspect.ATTR_DISPLAY_NAME);
                SubtitleId  = subAspect.GetAttributeValue <string>(TempSubtitleAspect.ATTR_SUBTITLEID);
                Language    = subAspect.GetAttributeValue <string>(TempSubtitleAspect.ATTR_LANGUAGE);

                DataProviders.Clear();
                var dataProviders = subAspect.GetAttributeValue <string>(TempSubtitleAspect.ATTR_PROVIDER);
                if (dataProviders?.Count() > 0)
                {
                    DataProviders = new List <string>(dataProviders.Split(';'));
                }

                Categories.Clear();
                var categories = subAspect.GetAttributeValue <string>(TempSubtitleAspect.ATTR_CATEGORY);
                if (categories?.Count() > 0)
                {
                    Categories = new List <string>(categories.Split(';'));
                }
            }

            MediaFiles.Clear();
            if (aspectData.ContainsKey(ProviderResourceAspect.ASPECT_ID))
            {
                IList <MultipleMediaItemAspect> resourceAspects;
                if (MediaItemAspect.TryGetAspects(aspectData, ProviderResourceAspect.Metadata, out resourceAspects))
                {
                    foreach (MultipleMediaItemAspect resourceAspect in resourceAspects)
                    {
                        string systemId = resourceAspect.GetAttributeValue <string>(ProviderResourceAspect.ATTR_SYSTEM_ID);
                        string path     = resourceAspect.GetAttributeValue <string>(ProviderResourceAspect.ATTR_RESOURCE_ACCESSOR_PATH);
                        int    type     = resourceAspect.GetAttributeValue <int>(ProviderResourceAspect.ATTR_TYPE);
                        if (type == ProviderResourceAspect.TYPE_PRIMARY)
                        {
                            MediaFiles.Add(new ResourceLocator(systemId, ResourcePath.Deserialize(path)));
                        }
                    }
                }
            }

            return(true);
        }