public PlaylistItem(VideoViewModel videoInfo, string resolvedPlaybackUrl) : base(Guid.Empty, new Dictionary <Guid, IList <MediaItemAspect> > { { ProviderResourceAspect.ASPECT_ID, new MediaItemAspect[] { new MultipleMediaItemAspect(ProviderResourceAspect.Metadata) } }, { MediaAspect.ASPECT_ID, new MediaItemAspect[] { new SingleMediaItemAspect(MediaAspect.Metadata) } }, { VideoAspect.ASPECT_ID, new MediaItemAspect[] { new SingleMediaItemAspect(VideoAspect.Metadata) } }, { OnlineVideosAspect.ASPECT_ID, new MediaItemAspect[] { new SingleMediaItemAspect(OnlineVideosAspect.Metadata) } }, }) { SiteName = videoInfo.SiteName; VideoInfo = videoInfo.VideoInfo; Aspects[OnlineVideosAspect.ASPECT_ID].First().SetAttribute(OnlineVideosAspect.ATTR_SITEUTIL, SiteName); ISystemResolver systemResolver = ServiceRegistration.Get <ISystemResolver>(); IList <MultipleMediaItemAspect> providerResourceAspects; MediaItemAspect.TryGetAspects(Aspects, ProviderResourceAspect.Metadata, out providerResourceAspects); MultipleMediaItemAspect providerResourceAspect = providerResourceAspects.First(); providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_PRIMARY, true); providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_SYSTEM_ID, systemResolver.LocalSystemId); if (videoInfo.SiteUtilName == "DownloadedVideo") { providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_RESOURCE_ACCESSOR_PATH, LocalFsResourceProviderBase.ToResourcePath(resolvedPlaybackUrl).Serialize()); providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_MIME_TYPE, "video/unknown"); } else { Uri uri; // Test if the resolved "url" is a real Uri (Sites can provide any content here) var isUriSource = Uri.TryCreate(resolvedPlaybackUrl, UriKind.Absolute, out uri); var value = isUriSource ? RawUrlResourceProvider.ToProviderResourcePath(resolvedPlaybackUrl).Serialize() : RawTokenResourceProvider.ToProviderResourcePath(resolvedPlaybackUrl).Serialize(); providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_RESOURCE_ACCESSOR_PATH, value); Aspects[OnlineVideosAspect.ASPECT_ID].First().SetAttribute(OnlineVideosAspect.ATTR_LONGURL, value); var isBrowser = videoInfo.SiteSettings.Player == PlayerType.Browser; providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_MIME_TYPE, isBrowser ? WebBrowserVideoPlayer.ONLINEVIDEOSBROWSER_MIMETYPE : OnlineVideosPlayer.ONLINEVIDEOS_MIMETYPE); } MediaItemAspect.SetAttribute(Aspects, MediaAspect.ATTR_TITLE, videoInfo.Title); // TODO: Restore line after story plot was moved back to VideoAspect! // MediaItemAspect.SetAttribute(aspects, VideoAspect.ATTR_STORYPLOT, videoInfo.Description); DateTime parsedAirDate; if (DateTime.TryParse(videoInfo.VideoInfo.Airdate, out parsedAirDate)) { MediaItemAspect.SetAttribute(Aspects, MediaAspect.ATTR_RECORDINGTIME, parsedAirDate); } }
/// <summary> /// Constructs a dynamic <see cref="MediaItem"/> that contains the URL for the given <paramref name="stream"/>. /// </summary> /// <param name="stream">Stream.</param> private static MediaItem CreateStreamMediaItem(MyStream stream) { IDictionary <Guid, MediaItemAspect> aspects = new Dictionary <Guid, MediaItemAspect>(); MediaItemAspect providerResourceAspect; aspects[ProviderResourceAspect.ASPECT_ID] = providerResourceAspect = new MediaItemAspect(ProviderResourceAspect.Metadata); MediaItemAspect mediaAspect; aspects[MediaAspect.ASPECT_ID] = mediaAspect = new MediaItemAspect(MediaAspect.Metadata); aspects[AudioAspect.ASPECT_ID] = new MediaItemAspect(AudioAspect.Metadata); // AudioAspect needs to be contained for player mapping providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_RESOURCE_ACCESSOR_PATH, RawUrlResourceProvider.ToProviderResourcePath(stream.StreamUrls[0].StreamUrl).Serialize()); providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_SYSTEM_ID, ServiceRegistration.Get <ISystemResolver>().LocalSystemId); mediaAspect.SetAttribute(MediaAspect.ATTR_MIME_TYPE, WEBRADIO_MIMETYPE); mediaAspect.SetAttribute(MediaAspect.ATTR_TITLE, stream.Title); MediaItemAspect.SetAttribute(aspects, ThumbnailLargeAspect.ATTR_THUMBNAIL, ImageFromLogo(stream.Logo)); var mediaItem = new MediaItem(Guid.Empty, aspects); return(mediaItem); }
public VideoItem(string resolvedPlaybackUrl) : base(Guid.Empty, new Dictionary <Guid, MediaItemAspect>() { { ProviderResourceAspect.ASPECT_ID, new MediaItemAspect(ProviderResourceAspect.Metadata) }, { MediaAspect.ASPECT_ID, new MediaItemAspect(MediaAspect.Metadata) }, { VideoAspect.ASPECT_ID, new MediaItemAspect(VideoAspect.Metadata) } }) { Aspects[ProviderResourceAspect.ASPECT_ID].SetAttribute(ProviderResourceAspect.ATTR_SYSTEM_ID, ServiceRegistration.Get <ISystemResolver>().LocalSystemId); Aspects[ProviderResourceAspect.ASPECT_ID].SetAttribute(ProviderResourceAspect.ATTR_RESOURCE_ACCESSOR_PATH, RawUrlResourceProvider.ToProviderResourcePath(resolvedPlaybackUrl).Serialize()); Aspects[MediaAspect.ASPECT_ID].SetAttribute(MediaAspect.ATTR_MIME_TYPE, AirplayVideoPlayer.MIMETYPE); }
private static void SetProviderResourceAspect(string resolvedPlaybackUrl, MediaItem item, string mimeType) { MultipleMediaItemAspect providerResourceAspect = MediaItemAspect.CreateAspect(item.Aspects, ProviderResourceAspect.Metadata); providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_SYSTEM_ID, ServiceRegistration.Get <ISystemResolver>().LocalSystemId); providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_RESOURCE_ACCESSOR_PATH, RawUrlResourceProvider.ToProviderResourcePath(resolvedPlaybackUrl).Serialize()); providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_MIME_TYPE, mimeType); }
public PlaylistItem(VideoViewModel videoInfo, string resolvedPlaybackUrl) : base(Guid.Empty, new Dictionary <Guid, MediaItemAspect>() { { ProviderResourceAspect.ASPECT_ID, new MediaItemAspect(ProviderResourceAspect.Metadata) }, { MediaAspect.ASPECT_ID, new MediaItemAspect(MediaAspect.Metadata) }, { VideoAspect.ASPECT_ID, new MediaItemAspect(VideoAspect.Metadata) } }) { SiteName = videoInfo.SiteName; Aspects[ProviderResourceAspect.ASPECT_ID].SetAttribute(ProviderResourceAspect.ATTR_SYSTEM_ID, ServiceRegistration.Get <ISystemResolver>().LocalSystemId); if (videoInfo.SiteUtilName == "DownloadedVideo") { Aspects[ProviderResourceAspect.ASPECT_ID].SetAttribute(ProviderResourceAspect.ATTR_RESOURCE_ACCESSOR_PATH, LocalFsResourceProviderBase.ToResourcePath(resolvedPlaybackUrl).Serialize()); Aspects[MediaAspect.ASPECT_ID].SetAttribute(MediaAspect.ATTR_MIME_TYPE, "video/unknown"); } else { Aspects[ProviderResourceAspect.ASPECT_ID].SetAttribute(ProviderResourceAspect.ATTR_RESOURCE_ACCESSOR_PATH, RawUrlResourceProvider.ToProviderResourcePath(resolvedPlaybackUrl).Serialize()); Aspects[MediaAspect.ASPECT_ID].SetAttribute(MediaAspect.ATTR_MIME_TYPE, OnlineVideosPlayer.ONLINEVIDEOS_MIMETYPE); } Aspects[MediaAspect.ASPECT_ID].SetAttribute(MediaAspect.ATTR_TITLE, videoInfo.Title); Aspects[VideoAspect.ASPECT_ID].SetAttribute(VideoAspect.ATTR_STORYPLOT, videoInfo.Description); DateTime parsedAirDate; if (DateTime.TryParse(videoInfo.VideoInfo.Airdate, out parsedAirDate)) { Aspects[MediaAspect.ASPECT_ID].SetAttribute(MediaAspect.ATTR_RECORDINGTIME, parsedAirDate); } }
public ImageItem(string imageId, byte[] imageData) : base(Guid.Empty, new Dictionary <Guid, MediaItemAspect>() { { ProviderResourceAspect.ASPECT_ID, new MediaItemAspect(ProviderResourceAspect.Metadata) }, { MediaAspect.ASPECT_ID, new MediaItemAspect(MediaAspect.Metadata) }, { ImageAspect.ASPECT_ID, new MediaItemAspect(ImageAspect.Metadata) } }) { ImageId = imageId; ImageData = imageData; Aspects[ProviderResourceAspect.ASPECT_ID].SetAttribute(ProviderResourceAspect.ATTR_SYSTEM_ID, ServiceRegistration.Get <ISystemResolver>().LocalSystemId); Aspects[ProviderResourceAspect.ASPECT_ID].SetAttribute(ProviderResourceAspect.ATTR_RESOURCE_ACCESSOR_PATH, RawUrlResourceProvider.ToProviderResourcePath(AirplayImagePlayer.DUMMY_FILE).Serialize()); Aspects[MediaAspect.ASPECT_ID].SetAttribute(MediaAspect.ATTR_MIME_TYPE, AirplayImagePlayer.MIMETYPE); Aspects[ImageAspect.ASPECT_ID].SetAttribute(ImageAspect.ATTR_ORIENTATION, 0); }
public AudioItem(PlayerSettings playerSettings) : base(Guid.Empty, new Dictionary <Guid, MediaItemAspect>() { { ProviderResourceAspect.ASPECT_ID, new MediaItemAspect(ProviderResourceAspect.Metadata) }, { MediaAspect.ASPECT_ID, new MediaItemAspect(MediaAspect.Metadata) }, { AudioAspect.ASPECT_ID, new MediaItemAspect(AudioAspect.Metadata) } }) { this.playerSettings = playerSettings; Aspects[ProviderResourceAspect.ASPECT_ID].SetAttribute(ProviderResourceAspect.ATTR_SYSTEM_ID, ServiceRegistration.Get <ISystemResolver>().LocalSystemId); Aspects[ProviderResourceAspect.ASPECT_ID].SetAttribute(ProviderResourceAspect.ATTR_RESOURCE_ACCESSOR_PATH, RawUrlResourceProvider.ToProviderResourcePath(AirplayAudioPlayer.DUMMY_FILE).Serialize()); Aspects[MediaAspect.ASPECT_ID].SetAttribute(MediaAspect.ATTR_MIME_TYPE, AirplayAudioPlayer.MIMETYPE); }
/// <summary> /// Constructs a dynamic <see cref="MediaItem"/> that contains the URL for the given <paramref name="stream"/>. /// </summary> /// <param name="stream">Stream.</param> private static MediaItem CreateStreamMediaItem(MyStream stream) { IDictionary <Guid, IList <MediaItemAspect> > aspects = new Dictionary <Guid, IList <MediaItemAspect> >(); MultipleMediaItemAspect providerResourceAspect = MediaItemAspect.CreateAspect(aspects, ProviderResourceAspect.Metadata); SingleMediaItemAspect mediaAspect = MediaItemAspect.GetOrCreateAspect(aspects, MediaAspect.Metadata); SingleMediaItemAspect audioAspect = MediaItemAspect.GetOrCreateAspect(aspects, AudioAspect.Metadata); providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_TYPE, ProviderResourceAspect.TYPE_PRIMARY); providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_RESOURCE_ACCESSOR_PATH, RawUrlResourceProvider.ToProviderResourcePath(stream.StreamUrls[0].StreamUrl).Serialize()); providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_SYSTEM_ID, ServiceRegistration.Get <ISystemResolver>().LocalSystemId); providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_MIME_TYPE, WEBRADIO_MIMETYPE); mediaAspect.SetAttribute(MediaAspect.ATTR_TITLE, stream.Title); MediaItemAspect.SetAttribute(aspects, ThumbnailLargeAspect.ATTR_THUMBNAIL, ImageFromLogo(stream.Logo)); var mediaItem = new MediaItem(Guid.Empty, aspects); return(mediaItem); }
/// <summary> /// Constructs a dynamic <see cref="MediaItem"/> that contains the URL for the given <paramref name="trailer"/>. /// </summary> /// <param name="trailer">Trailer.</param> private static MediaItem CreateStreamMediaItem(Trailer trailer) { IDictionary <Guid, IList <MediaItemAspect> > aspects = new Dictionary <Guid, IList <MediaItemAspect> >(); MultipleMediaItemAspect providerResourceAspect = MediaItemAspect.CreateAspect(aspects, ProviderResourceAspect.Metadata); providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_PRIMARY, true); providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_SYSTEM_ID, ServiceRegistration.Get <ISystemResolver>().LocalSystemId); MediaItemAspect.GetOrCreateAspect(aspects, VideoAspect.Metadata); providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_RESOURCE_ACCESSOR_PATH, RawUrlResourceProvider.ToProviderResourcePath(trailer.Url).Serialize()); providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_SYSTEM_ID, ServiceRegistration.Get <ISystemResolver>().LocalSystemId); providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_MIME_TYPE, CINEMA_MIMETYPE); MediaItemAspect.SetAttribute(aspects, MediaAspect.ATTR_TITLE, trailer.Title); var mediaItem = new MediaItem(Guid.Empty, aspects); return(mediaItem); }