public static bool TryFindCompatibleProfile(EndPointSettings client, List <string> resolvedList, ref string DlnaProfile, ref string Mime)
 {
     foreach (MediaMimeMapping map in client.Profile.MediaMimeMap.Values)
     {
         if (resolvedList.Contains(map.MappedMediaFormat) == true)
         {
             DlnaProfile = map.MappedMediaFormat;
             Mime        = map.MIME;
             return(true);
         }
     }
     foreach (MediaMimeMapping map in client.Profile.MediaMimeMap.Values)
     {
         if (string.IsNullOrEmpty(map.MIMEName) == false)
         {
             List <string> renamedMaps = new List <string>();
             renamedMaps.AddRange(map.MIMEName.Split(','));
             foreach (string submap in renamedMaps)
             {
                 if (resolvedList.Contains(submap) == true)
                 {
                     DlnaProfile = map.MappedMediaFormat;
                     Mime        = map.MIME;
                     return(true);
                 }
             }
         }
     }
     if (resolvedList.Count > 0)
     {
         DlnaProfile = resolvedList[0];
         return(true);
     }
     return(false);
 }
 public MediaLibrarySubtitle(MediaItem item, EndPointSettings client)
 {
     MediaItemId  = item.MediaItemId;
     Client       = client;
     MimeType     = null;
     SubtitleType = null;
 }
Exemple #3
0
        public MediaLibraryAudioBroadcastItem(string title, int channelNr, EndPointSettings client)
            : base(DlnaResourceAccessUtils.RADIO_CHANNEL_RESOURCE + channelNr, client)
        {
            Id           = Key;
            Title        = title;
            ChannelName  = title;
            ChannelNr    = channelNr;
            Date         = DateTime.Now.ToString("yyyy-MM-dd");
            AlbumArtUrls = new List <IDirectoryAlbumArt>();

            var albumArt = new MediaLibraryAlbumArt(Guid.Empty, client);

            albumArt.Initialise(title, false);
            AlbumArtUrls.Add(albumArt);

            if (client.Profile.Settings.Thumbnails.Delivery == ThumbnailDelivery.All || client.Profile.Settings.Thumbnails.Delivery == ThumbnailDelivery.Icon)
            {
                Icon = albumArt.Uri;
            }
            if (client.Profile.Settings.Thumbnails.Delivery == ThumbnailDelivery.All || client.Profile.Settings.Thumbnails.Delivery == ThumbnailDelivery.Resource)
            {
                var albumResource = new MediaLibraryAlbumArtResource(albumArt);
                albumResource.Initialise();
                Resources.Add(albumResource);
            }
            if (client.Profile.Settings.Thumbnails.Delivery != ThumbnailDelivery.All && client.Profile.Settings.Thumbnails.Delivery != ThumbnailDelivery.AlbumArt)
            {
                AlbumArtUrls.Clear();
            }

            var resource = new MediaLibraryLiveResource(Key, channelNr, client);

            resource.Initialise();
            Resources.Add(resource);
        }
        public void TestAlbumItem()
        {
            EndPointSettings settings = new EndPointSettings
            {
                PreferredSubtitleLanguages = "EN",
                PreferredAudioLanguages    = "EN",
                DefaultSubtitleEncodings   = ""
            };

            IList <IDirectoryObject> objects = new List <IDirectoryObject>();

            Guid albumId = new Guid("11111111-aaaa-aaaa-aaaa-100000000001");

            IDictionary <Guid, IList <MediaItemAspect> > aspects = new Dictionary <Guid, IList <MediaItemAspect> >();

            SingleMediaItemAspect aspect = new SingleMediaItemAspect(MediaAspect.Metadata);

            aspect.SetAttribute(MediaAspect.ATTR_TITLE, "The Album");
            MediaItemAspect.SetAspect(aspects, aspect);

            MediaItem album = new MediaItem(albumId, aspects);

            MediaLibraryAlbumItem item = new TestMediaLibraryAlbumItem(album, settings);

            item.Initialise();
            objects.Add(item);

            GenericDidlMessageBuilder builder = new GenericDidlMessageBuilder();

            builder.BuildAll("*", objects);

            string xml = builder.ToString();

            Console.WriteLine("XML: {0}", xml);
        }
        public MediaLibraryImageItem(MediaItem item, EndPointSettings client)
            : base(item, client)
        {
            Publisher = new List <string>();
            Rights    = new List <string>();
            object oValue = MediaItemAspect.GetAspect(item.Aspects, MediaAspect.Metadata).GetAttributeValue(MediaAspect.ATTR_RECORDINGTIME);

            if (oValue != null)
            {
                Date = Convert.ToDateTime(oValue).Date.ToString("yyyy-MM-dd");
            }

            //Support alternative ways to get thumbnail
            if (AlbumArtUrls.Count > 0)
            {
                if (client.Profile.Settings.Thumbnails.Delivery == ThumbnailDelivery.All || client.Profile.Settings.Thumbnails.Delivery == ThumbnailDelivery.Resource)
                {
                    var albumResource = new MediaLibraryAlbumArtResource((MediaLibraryAlbumArt)AlbumArtUrls[0]);
                    albumResource.Initialise();
                    Resources.Add(albumResource);
                }
                if (client.Profile.Settings.Thumbnails.Delivery != ThumbnailDelivery.All && client.Profile.Settings.Thumbnails.Delivery != ThumbnailDelivery.AlbumArt)
                {
                    AlbumArtUrls.Clear();
                }
            }

            var resource = new MediaLibraryResource(client);

            resource.Initialise(item);
            Resources.Add(resource);
        }
Exemple #6
0
 private static void CheckUserLogin(string objectId, EndPointSettings deviceClient)
 {
     if (IsUserContainer(objectId))
     {
         //Login user
         deviceClient.UserId = Guid.TryParse(objectId.Substring(MediaLibraryHelper.CONTAINER_USERS_KEY.Length + 1), out Guid g) ? g : (Guid?)null;
         deviceClient.InitializeUserAsync().Wait();
     }
     else if (!deviceClient.UserId.HasValue && deviceClient.RootContainer.Children.Any(c => IsUserContainer(c?.Key)))
     {
         //User login is required so find user container
         var o = deviceClient.RootContainer.FindObject(objectId);
         while (o != null)
         {
             o = o?.Parent;
             if (o != null && IsUserContainer(o.Key))
             {
                 //Login user
                 deviceClient.UserId = Guid.TryParse(o.Key.Substring(MediaLibraryHelper.CONTAINER_USERS_KEY.Length + 1), out Guid g) ? g : (Guid?)null;
                 deviceClient.InitializeUserAsync().Wait();
                 break;
             }
         }
     }
 }
        /// <summary>
        /// Stops the streaming
        /// </summary>
        internal static async Task StopStreamingAsync(EndPointSettings client)
        {
            if (STREAM_ITEMS.TryRemove(client.ClientId, out var currentStreamItem))
            {
                await currentStreamItem.BusyLock.WaitAsync();

                try
                {
                    currentStreamItem.TranscoderObject?.StopStreaming();
                    if (currentStreamItem.StreamContext is TranscodeContext context)
                    {
                        context.UpdateStreamUse(false);
                    }
                    else if (currentStreamItem.StreamContext != null)
                    {
                        currentStreamItem.StreamContext.Dispose();
                        currentStreamItem.StreamContext = null;
                    }
                }
                finally
                {
                    currentStreamItem.BusyLock.Release();
                }
            }
        }
    private static void GenerateDescriptionFunc(IOwinRequest request, XmlWriter writer, DvDevice device, GenerationPosition pos, EndpointConfiguration config, CultureInfo culture)
    {
      if (request == null) return;

      EndPointSettings client = ProfileManager.DetectProfileAsync(request).Result;
      if (client == null || client.Profile == null)
      {
        return;
      }
      if (pos == GenerationPosition.DeviceStart)
      {
        writer.WriteElementString("dlna", "X_DLNACAP", "urn:schemas-dlna-org:device-1-0", "");
        writer.WriteElementString("dlna", "X_DLNADOC", "urn:schemas-dlna-org:device-1-0", "DMS-1.50");
        writer.WriteElementString("dlna", "X_DLNADOC", "urn:schemas-dlna-org:device-1-0", "M-DMS-1.50");

        if (string.IsNullOrEmpty(client.Profile.UpnpDevice.AdditionalElements) == false)
        {
          writer.WriteRaw(client.Profile.UpnpDevice.AdditionalElements);
        }
      }
      else if (pos == GenerationPosition.RootDeviceStart)
      {
        writer.WriteAttributeString("xmlns", "dlna", null, "urn:schemas-dlna-org:device-1-0");
        writer.WriteAttributeString("xmlns", "sec", null, "http://www.sec.co.kr/dlna");
      }
    }
 public DlnaMediaItem(EndPointSettings client)
 {
     Client               = client;
     LastUpdated          = DateTime.Now;
     TranscodingParameter = null;
     IsSegmented          = false;
 }
        public QuotesServerApplication(EndPointSettings endPoint, IQuotesService quotesService)
        {
            _endPointSettings = endPoint
                                ?? throw new ArgumentNullException(nameof(endPoint));

            _quotesService = quotesService
                             ?? throw new ArgumentNullException(nameof(quotesService));
        }
 public MediaLibraryShareContainer(string id, EndPointSettings client, params string[] categories)
     : base(id, client)
 {
     if (categories != null)
     {
         CategoryFilter = new List <string>(categories);
     }
 }
        protected BasicObject(string key, EndPointSettings client, bool placeholder = false)
        {
            Resources = new List <IDirectoryResource>();

            Key         = key;
            Parent      = null;
            Client      = client;
            Placeholder = placeholder;
        }
 public BasicContainer(string id, EndPointSettings client)
     : base(id, client)
 {
     Restricted  = true;
     Searchable  = false;
     SearchClass = new List <IDirectorySearchClass>();
     CreateClass = new List <IDirectoryCreateClass>();
     WriteStatus = "NOT_WRITABLE";
 }
        public static string GetChannelLogoBaseURL(string channelName, EndPointSettings client, bool isTV)
        {
            string mediaType = isTV ? FanArtMediaTypes.ChannelTv : FanArtMediaTypes.ChannelRadio;
            string url       = string.Format("{0}/FanartService?mediatype={1}&fanarttype={2}l&name={3}&width={4}&height={5}",
                                             GetBaseResourceURL(), mediaType, FanArtTypes.Thumbnail, WebUtility.UrlEncode(channelName),
                                             client.Profile?.Settings.Thumbnails.MaxWidth ?? DEFAULT_IMAGE_SIZE, client.Profile?.Settings.Thumbnails.MaxHeight ?? DEFAULT_IMAGE_SIZE);

            return(url);
        }
        /// <summary>
        /// Returns a stream item based on the given client
        /// </summary>
        /// <returns>Returns the requested stream item otherwise null</returns>
        internal static StreamItem GetExistingStreamItem(EndPointSettings client)
        {
            if (STREAM_ITEMS.TryGetValue(client.ClientId, out var currentStreamItem))
            {
                return(currentStreamItem);
            }

            return(null);
        }
        public static string GetThumbnailBaseURL(Guid mediaItemId, EndPointSettings client, string fanartType = null)
        {
            string mediaType = fanartType ?? FanArtMediaTypes.Undefined;

            // Using MP2's FanArtService provides access to all kind of resources, thumbnails from ML and also local fanart from filesystem
            string url = string.Format("{0}/FanartService?mediatype={1}&fanarttype={2}&name={3}&width={4}&height={5}",
                                       GetBaseResourceURL(), mediaType, FanArtTypes.Thumbnail, mediaItemId,
                                       client.Profile?.Settings.Thumbnails.MaxWidth ?? DEFAULT_IMAGE_SIZE, client.Profile?.Settings.Thumbnails.MaxHeight ?? DEFAULT_IMAGE_SIZE);

            return(url);
        }
Exemple #17
0
        public void TestCtor2()
        {
            var endPointSettings = new EndPointSettings {
                MaxConcurrentCalls = 42
            };

            using (var server = CreateServer(endPointSettings: endPointSettings))
            {
                server.EndPointSettings.Should().NotBeNull();
                server.EndPointSettings.MaxConcurrentCalls.Should().Be(42);
            }
        }
Exemple #18
0
 internal override IRemotingEndPoint CreateServer(string name = null, IAuthenticator clientAuthenticator = null,
                                                  IAuthenticator serverAuthenticator  = null,
                                                  LatencySettings latencySettings     = null,
                                                  EndPointSettings endPointSettings   = null,
                                                  HeartbeatSettings heartbeatSettings = null,
                                                  NetworkServiceDiscoverer networkServiceDiscoverer = null)
 {
     return(new NamedPipeRemotingEndPointServer(name,
                                                clientAuthenticator,
                                                serverAuthenticator,
                                                heartbeatSettings: heartbeatSettings,
                                                latencySettings: latencySettings));
 }
        /// <summary>
        /// Does the preparation to start a transcode stream
        /// </summary>
        internal static async Task <TranscodeContext> StartTranscodeStreamingAsync(EndPointSettings client, double startTime, double lengthTime, StreamItem newStreamItem)
        {
            if (STREAM_ITEMS.TryAdd(client.ClientId, newStreamItem))
            {
                await newStreamItem.BusyLock.WaitAsync();

                try
                {
                    if (newStreamItem?.TranscoderObject?.TranscodingParameter == null)
                    {
                        STREAM_ITEMS.TryRemove(client.ClientId, out _);
                        return(null);
                    }

                    if (!newStreamItem.TranscoderObject.StartTrancoding())
                    {
                        Logger.Debug("StreamControl: Transcoding busy for mediaitem {0}", newStreamItem.RequestedMediaItem);
                        return(null);
                    }

                    if (newStreamItem.IsLive)
                    {
                        newStreamItem.StreamContext = await MediaConverter.GetLiveStreamAsync(client.ClientId.ToString(), newStreamItem.TranscoderObject.TranscodingParameter, newStreamItem.LiveChannelId, true);
                    }
                    else
                    {
                        newStreamItem.StreamContext = await MediaConverter.GetMediaStreamAsync(client.ClientId.ToString(), newStreamItem.TranscoderObject.TranscodingParameter, startTime, lengthTime, true);
                    }

                    if (newStreamItem.StreamContext is TranscodeContext context)
                    {
                        context.UpdateStreamUse(true);
                        return(context);
                    }
                    else if (newStreamItem.StreamContext != null)
                    {
                        //We want a transcoded stream
                        newStreamItem.StreamContext.Dispose();
                        newStreamItem.StreamContext = null;
                    }

                    return(null);
                }
                finally
                {
                    newStreamItem.BusyLock.Release();
                }
            }

            return(null);
        }
Exemple #20
0
        public MediaLibraryAlbumItem(MediaItem item, EndPointSettings client)
            : base(item, NECESSARY_MUSIC_MIA_TYPE_IDS, OPTIONAL_MUSIC_MIA_TYPE_IDS,
                   new RelationshipFilter(AudioAspect.ROLE_TRACK, AudioAlbumAspect.ROLE_ALBUM, item.MediaItemId), client)
        {
            Genre       = new List <string>();
            Artist      = new List <string>();
            Contributor = new List <string>();

            if (MediaItemAspect.TryGetAspect(item.Aspects, AudioAlbumAspect.Metadata, out SingleMediaItemAspect albumAspect))
            {
                //Title = albumAspect.GetAttributeValue<string>(AudioAlbumAspect.ATTR_ALBUM);
                if (Client.Profile.Settings.Metadata.Delivery == MetadataDelivery.All)
                {
                    IList <MultipleMediaItemAspect> genreAspects;
                    if (MediaItemAspect.TryGetAspects(item.Aspects, GenreAspect.Metadata, out genreAspects))
                    {
                        CollectionUtils.AddAll(Genre, genreAspects.Select(g => g.GetAttributeValue <string>(GenreAspect.ATTR_GENRE)));
                    }

                    var artistObj = albumAspect.GetCollectionAttribute <object>(AudioAlbumAspect.ATTR_ARTISTS);
                    if (artistObj != null)
                    {
                        CollectionUtils.AddAll(Artist, artistObj.Cast <string>());
                    }

                    Description     = albumAspect.GetAttributeValue <string>(AudioAlbumAspect.ATTR_DESCRIPTION);
                    LongDescription = Description;
                }
            }

            //Support alternative ways to get album art
            var albumArt = new MediaLibraryAlbumArt(item, Client);

            if (albumArt != null)
            {
                albumArt.Initialise();
                if (Client.Profile.Settings.Thumbnails.Delivery == ThumbnailDelivery.All || Client.Profile.Settings.Thumbnails.Delivery == ThumbnailDelivery.Resource)
                {
                    var albumResource = new MediaLibraryAlbumArtResource(albumArt);
                    albumResource.Initialise();
                    Resources.Add(albumResource);
                }
                if (Client.Profile.Settings.Thumbnails.Delivery == ThumbnailDelivery.All || Client.Profile.Settings.Thumbnails.Delivery == ThumbnailDelivery.AlbumArt)
                {
                    AlbumArtUrl = albumArt.Uri;
                }
            }
        }
Exemple #21
0
 internal override IRemotingEndPoint CreateServer(string name = null,
                                                  IAuthenticator clientAuthenticator  = null,
                                                  IAuthenticator serverAuthenticator  = null,
                                                  LatencySettings latencySettings     = null,
                                                  EndPointSettings endPointSettings   = null,
                                                  HeartbeatSettings heartbeatSettings = null,
                                                  NetworkServiceDiscoverer networkServiceDiscoverer = null)
 {
     return(new SocketEndPoint(EndPointType.Server,
                               name,
                               clientAuthenticator,
                               serverAuthenticator, networkServiceDiscoverer: null,
                               latencySettings: latencySettings,
                               endPointSettings: endPointSettings,
                               heartbeatSettings: heartbeatSettings));
 }
Exemple #22
0
        public MediaLibraryItem(string key, MediaItem item, EndPointSettings client)
            : base(key, client)
        {
            MediaItemId = item.MediaItemId;
            SingleMediaItemAspect aspect;

            if (MediaItemAspect.TryGetAspect(item.Aspects, MediaAspect.Metadata, out aspect))
            {
                Title = aspect.GetAttributeValue <string>(MediaAspect.ATTR_TITLE);
            }

            AlbumArtUrls = new List <IDirectoryAlbumArt>();
            var albumArt = new MediaLibraryAlbumArt(item, client);

            albumArt.Initialise();
            AlbumArtUrls.Add(albumArt);
        }
        public static string GetSubtitleBaseURL(Guid mediaItemId, EndPointSettings client, out string subMime, out string subExtension)
        {
            SubtitleCodec codec = SubtitleCodec.Unknown;

            subMime      = null;
            subExtension = null;

            if (UseSoftCodedSubtitle(client, out codec, out subMime) == true)
            {
                subExtension = SubtitleHelper.GetSubtitleExtension(codec);
                string subType = codec.ToString();
                return(string.Format(GetBaseResourceURL()
                                     + GetResourceUrl(mediaItemId.ToString(), client.ClientId)
                                     + "&aspect=SUBTITLE&type={0}&file=subtitle.{1}", subType, subExtension));
            }
            return(null);
        }
Exemple #24
0
        /// <summary>
        ///     Initializes a new silo server.
        /// </summary>
        /// <param name="args">The command line arguments given to the Main() method</param>
        /// <param name="customTypeResolver">The type resolver, if any, responsible for resolving Type objects by their assembly qualified name</param>
        /// <param name="codeGenerator">The code generator to create proxy and servant types</param>
        /// <param name="heartbeatSettings">The settings for heartbeat mechanism, if none are specified, then default settings are used</param>
        /// <param name="latencySettings">The settings for latency measurements, if none are specified, then default settings are used</param>
        /// <param name="endPointSettings">The settings for the endpoint itself (max. number of concurrent calls, etc...)</param>
        /// <param name="endPointName">The name of this silo, used for debugging (and logging)</param>
        public OutOfProcessSiloServer(string[] args,
                                      ITypeResolver customTypeResolver    = null,
                                      ICodeGenerator codeGenerator        = null,
                                      HeartbeatSettings heartbeatSettings = null,
                                      LatencySettings latencySettings     = null,
                                      EndPointSettings endPointSettings   = null,
                                      string endPointName = null)
        {
            Log.InfoFormat("Silo Server starting, args ({0}): \"{1}\", {2} custom type resolver",
                           args.Length,
                           string.Join(" ", args),
                           customTypeResolver != null ? "with" : "without"
                           );

            int pid;

            if (args.Length >= 1 && int.TryParse(args[0], out pid))
            {
                _parentProcessId = pid;
                _parentProcess   = Process.GetProcessById(pid);
                _parentProcess.EnableRaisingEvents = true;
                _parentProcess.Exited += ParentProcessOnExited;
            }

            if (Log.IsDebugEnabled)
            {
                Log.DebugFormat("Args.Length: {0}", args.Length);
            }

            _registry           = new DefaultImplementationRegistry();
            _waitHandle         = new ManualResetEvent(false);
            _customTypeResolver = customTypeResolver;

            _endPoint = new SocketEndPoint(EndPointType.Server,
                                           endPointName,
                                           codeGenerator: codeGenerator,
                                           heartbeatSettings: heartbeatSettings,
                                           latencySettings: latencySettings,
                                           endPointSettings: endPointSettings
                                           );

            _endPoint.OnConnected    += EndPointOnOnConnected;
            _endPoint.OnDisconnected += EndPointOnOnDisconnected;
            _endPoint.OnFailure      += EndPointOnOnFailure;
        }
 public static bool UseSoftCodedSubtitle(EndPointSettings client, out SubtitleCodec targetCodec, out string targetMime)
 {
     targetCodec = SubtitleCodec.Unknown;
     targetMime  = "text/plain";
     if (client.Profile.MediaTranscoding.SubtitleSettings.SubtitleMode == SubtitleSupport.SoftCoded)
     {
         targetCodec = client.Profile.MediaTranscoding.SubtitleSettings.SubtitlesSupported[0].Format;
         if (string.IsNullOrEmpty(client.Profile.MediaTranscoding.SubtitleSettings.SubtitlesSupported[0].Mime) == false)
         {
             targetMime = client.Profile.MediaTranscoding.SubtitleSettings.SubtitlesSupported[0].Mime;
         }
         else
         {
             targetMime = SubtitleHelper.GetSubtitleMime(targetCodec);
         }
         return(true);
     }
     return(false);
 }
        public MediaLibraryMusicTrack(MediaItem item, EndPointSettings client)
            : base(item, client)
        {
            Artist      = new List <string>();
            Album       = new List <string>();
            Playlist    = new List <string>();
            Contributor = new List <string>();

            if (MediaItemAspect.TryGetAspect(item.Aspects, AudioAspect.Metadata, out SingleMediaItemAspect audioAspect))
            {
                var album = audioAspect.GetAttributeValue(AudioAspect.ATTR_ALBUM);
                if (album != null)
                {
                    Album.Add(album.ToString());
                }

                var artists = audioAspect.GetCollectionAttribute(AudioAspect.ATTR_ARTISTS);
                if (artists != null)
                {
                    Artist = new List <string>(artists.Cast <string>());
                }

                var composers = audioAspect.GetCollectionAttribute(AudioAspect.ATTR_COMPOSERS);
                if (composers != null)
                {
                    Contributor = new List <string>(composers.Cast <string>());
                }

                var originalTrack = audioAspect.GetAttributeValue(AudioAspect.ATTR_TRACK);
                if (originalTrack != null)
                {
                    OriginalTrackNumber = Convert.ToInt32(originalTrack.ToString());
                }
            }
            object oValue = item[MediaAspect.ASPECT_ID][0].GetAttributeValue(MediaAspect.ATTR_RECORDINGTIME);

            if (oValue != null)
            {
                Date = Convert.ToDateTime(oValue).Date.ToString("yyyy-MM-dd");
            }
        }
        public MediaLibraryAudioItem(MediaItem item, EndPointSettings client)
            : base(item, client)
        {
            Genre     = new List <string>();
            Publisher = new List <string>();
            Rights    = new List <string>();

            if (MediaItemAspect.TryGetAspect(item.Aspects, AudioAspect.Metadata, out SingleMediaItemAspect audioAspect))
            {
                Title = audioAspect.GetAttributeValue <string>(AudioAspect.ATTR_TRACKNAME);
            }

            if (client.Profile.Settings.Metadata.Delivery == MetadataDelivery.All)
            {
                if (MediaItemAspect.TryGetAspects(item.Aspects, GenreAspect.Metadata, out IList <MultipleMediaItemAspect> genreAspects))
                {
                    CollectionUtils.AddAll(Genre, genreAspects.Select(g => g.GetAttributeValue <string>(GenreAspect.ATTR_GENRE)));
                }
            }

            //Support alternative ways to get album art
            if (AlbumArtUrls.Count > 0)
            {
                if (client.Profile.Settings.Thumbnails.Delivery == ThumbnailDelivery.All || client.Profile.Settings.Thumbnails.Delivery == ThumbnailDelivery.Resource)
                {
                    var albumResource = new MediaLibraryAlbumArtResource((MediaLibraryAlbumArt)AlbumArtUrls[0]);
                    albumResource.Initialise();
                    Resources.Add(albumResource);
                }
                if (client.Profile.Settings.Thumbnails.Delivery != ThumbnailDelivery.All && client.Profile.Settings.Thumbnails.Delivery != ThumbnailDelivery.AlbumArt)
                {
                    AlbumArtUrls.Clear();
                }
            }

            var resource = new MediaLibraryResource(client);

            resource.Initialise(item);
            Resources.Add(resource);
        }
Exemple #28
0
        public MediaLibrarySeasonItem(MediaItem item, EndPointSettings client)
            : base(item, NECESSARY_EPISODE_MIA_TYPE_IDS, OPTIONAL_EPISODE_MIA_TYPE_IDS,
                   new RelationshipFilter(EpisodeAspect.ROLE_EPISODE, SeasonAspect.ROLE_SEASON, item.MediaItemId), client)
        {
            Genre       = new List <string>();
            Artist      = new List <string>();
            Contributor = new List <string>();

            if (Client.Profile.Settings.Metadata.Delivery == MetadataDelivery.All)
            {
                SingleMediaItemAspect seriesAspect;
                if (MediaItemAspect.TryGetAspect(item.Aspects, SeasonAspect.Metadata, out seriesAspect))
                {
                    var descriptionObj = seriesAspect.GetAttributeValue(SeasonAspect.ATTR_DESCRIPTION);
                    if (descriptionObj != null)
                    {
                        Description = descriptionObj.ToString();
                    }
                }
            }

            //Support alternative ways to get album art
            var albumArt = new MediaLibraryAlbumArt(item, Client);

            if (albumArt != null)
            {
                albumArt.Initialise();
                if (Client.Profile.Settings.Thumbnails.Delivery == ThumbnailDelivery.All || Client.Profile.Settings.Thumbnails.Delivery == ThumbnailDelivery.Resource)
                {
                    var albumResource = new MediaLibraryAlbumArtResource(albumArt);
                    albumResource.Initialise();
                    Resources.Add(albumResource);
                }
                if (Client.Profile.Settings.Thumbnails.Delivery == ThumbnailDelivery.All || Client.Profile.Settings.Thumbnails.Delivery == ThumbnailDelivery.AlbumArt)
                {
                    AlbumArtUrl = albumArt.Uri;
                }
            }
        }
        public static bool IsSoftCodedSubtitleAvailable(DlnaMediaItem dlnaItem, EndPointSettings client)
        {
            if (client.Profile.MediaTranscoding.SubtitleSettings.SubtitleMode != SubtitleSupport.SoftCoded)
            {
                return(false);
            }
            if (dlnaItem.IsTranscoded && dlnaItem.IsVideo)
            {
                VideoTranscoding video = (VideoTranscoding)dlnaItem.TranscodingParameter;
                return(video?.SourceSubtitles.Count > 0);
            }
            else if (dlnaItem.IsVideo)
            {
                VideoTranscoding subtitleVideo = (VideoTranscoding)dlnaItem.SubtitleTranscodingParameter;
                if (subtitleVideo?.SourceSubtitles.Count > 0)
                {
                    return(true);
                }

                return(dlnaItem.Subtitles.Count > 0);
            }
            return(false);
        }
        public T GetServiceResponse <T>(string serviceName, string jsonRequest) where T : class
        {
            EndPointSettings  endPointSettings = GetEndPointSetting(serviceName, _settings);
            HttpClientHandler clientHandler    = new HttpClientHandler()
            {
                UseProxy = false
            };
            HttpClient client = new HttpClient(clientHandler);

            client.BaseAddress = new Uri(endPointSettings.EndPoint);
            string result = string.Empty;

            try
            {
                WebRequest request = WebRequest.Create(endPointSettings.EndPoint);
                request.Method      = "POST";
                request.ContentType = "application/json";
                using (var streamWriter = new StreamWriter(request.GetRequestStream()))
                {
                    streamWriter.Write(jsonRequest);
                    streamWriter.Flush();
                    streamWriter.Close();

                    var response1 = (HttpWebResponse)request.GetResponse();
                    using (var streamReader = new StreamReader(response1.GetResponseStream()))
                    {
                        result = streamReader.ReadToEnd();
                    }
                }
                var response = JsonConvert.DeserializeObject <T>(result);
                return(response);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }