/// <summary>
        /// Gets the similar item list URL.
        /// </summary>
        /// <param name="query">The query.</param>
        /// <param name="type">The type.</param>
        /// <returns>System.String.</returns>
        /// <exception cref="System.ArgumentNullException">
        /// query
        /// or
        /// type
        /// </exception>
        protected string GetSimilarItemListUrl(SimilarItemsQuery query, string type)
        {
            if (query == null)
            {
                throw new ArgumentNullException("query");
            }
            if (string.IsNullOrEmpty(type))
            {
                throw new ArgumentNullException("type");
            }

            var dict = new QueryStringDictionary {
            };

            dict.Add("Id", query.Id);

            dict.AddIfNotNull("Limit", query.Limit);
            dict.AddIfNotNullOrEmpty("UserId", query.UserId);
            if (type == "Movies" && Config.Instance.ExcludeRemoteContentInSearch)
            {
                dict.Add("IncludeTrailers", false);
            }

            if (query.Fields != null)
            {
                dict.Add("fields", query.Fields.Select(f => f.ToString()));
            }

            return(GetApiUrl(type + "/" + query.Id + "/Similar", dict));
        }
Example #2
0
        /// <summary>
        /// Gets the instant mix URL.
        /// </summary>
        /// <param name="query">The query.</param>
        /// <param name="type">The type.</param>
        /// <returns>System.String.</returns>
        /// <exception cref="System.ArgumentNullException">
        /// query
        /// or
        /// type
        /// </exception>
        protected string GetInstantMixUrl(SimilarItemsQuery query, string type)
        {
            if (query == null)
            {
                throw new ArgumentNullException("query");
            }
            if (string.IsNullOrEmpty(type))
            {
                throw new ArgumentNullException("type");
            }

            var dict = new QueryStringDictionary {
            };

            dict.AddIfNotNull("Limit", query.Limit);
            dict.AddIfNotNullOrEmpty("UserId", query.UserId);

            if (query.Fields != null)
            {
                dict.Add("fields", query.Fields.Select(f => f.ToString()));
            }

            if (string.IsNullOrEmpty(query.Id))
            {
                throw new ArgumentNullException("query");
            }

            return(GetApiUrl(type + "/" + query.Id + "/InstantMix", dict));
        }
        /// <summary>
        /// Gets the similar item list URL.
        /// </summary>
        /// <param name="query">The query.</param>
        /// <param name="type">The type.</param>
        /// <returns>System.String.</returns>
        /// <exception cref="System.ArgumentNullException">
        /// query
        /// or
        /// type
        /// </exception>
        protected Uri GetSimilarItemListUrl(SimilarItemsQuery query, string type)
        {
            if (query == null)
            {
                throw new ArgumentNullException("query");
            }
            if (string.IsNullOrEmpty(type))
            {
                throw new ArgumentNullException("type");
            }

            var dict = new NameValueCollection {
            };

            dict.AddIfNotNull("Limit", query.Limit);
            dict.AddIfNotNullOrEmpty("UserId", query.UserId);

            if (query.Fields != null)
            {
                dict.Add("fields", query.Fields.Select(f => f.ToString()));
            }

            if (string.IsNullOrEmpty(query.Id))
            {
                throw new ArgumentNullException("query");
            }

            return(GetApiUrl(new Uri(type + "/" + query.Id + "/Similar", UriKind.Relative), dict));
        }
Example #4
0
        private Task <ItemsResult> GetSimilarItemsAsync(ItemListViewModel viewModel)
        {
            var item = ItemViewModel.Item;

            var query = new SimilarItemsQuery
            {
                UserId = _sessionManager.CurrentUser.Id,
                Limit  = item.IsGame || item.IsType("musicalbum") ? 6 : 12,
                Fields = new[]
                {
                    ItemFields.PrimaryImageAspectRatio,
                    ItemFields.DateCreated
                },
                Id = item.Id
            };

            if (item.IsType("trailer"))
            {
                return(_apiClient.GetSimilarTrailersAsync(query));
            }
            if (item.IsGame)
            {
                return(_apiClient.GetSimilarGamesAsync(query));
            }
            if (item.IsType("musicalbum"))
            {
                return(_apiClient.GetSimilarAlbumsAsync(query));
            }
            if (item.IsType("series"))
            {
                return(_apiClient.GetSimilarSeriesAsync(query));
            }

            return(_apiClient.GetSimilarMoviesAsync(query));
        }
        internal static async Task <List <PlaylistItem> > GetInstantMixPlaylist(this IApiClient apiClient, BaseItemDto item, IPlaybackManager playbackManager)
        {
            ItemsResult result;
            var         query = new SimilarItemsQuery {
                UserId = AuthenticationService.Current.LoggedInUserId, Id = item.Id, Fields = new [] { ItemFields.MediaSources }
            };

            switch (item.Type)
            {
            case "Audio":
                result = await apiClient.GetInstantMixFromSongAsync(query);

                break;

            case "MusicArtist":
                result = await apiClient.GetInstantMixFromArtistAsync(query);

                break;

            case "MusicAlbum":
                result = await apiClient.GetInstantMixFromAlbumAsync(query);

                break;

            case "Genre":
                result = await apiClient.GetInstantMixFromMusicGenreAsync(query);

                break;

            default:
                return(new List <PlaylistItem>());
            }

            if (result == null || result.Items.IsNullOrEmpty())
            {
                return(new List <PlaylistItem>());
            }

            return(await result.Items.ToList().ToPlayListItems(apiClient, playbackManager));
        }
        public IEnumerable <BaseItem> RetrieveSimilarItems(SimilarItemsQuery query, string type)
        {
            var dtos = Kernel.ApiClient.GetSimilarItems(query, type);

            return(dtos == null ? new BaseItem[] {} : dtos.Items.Select(dto => GetItem(dto, dto.Type)).Where(item => item != null));
        }
 public Task <ItemsResult> GetInstantMixFromAlbumAsync(SimilarItemsQuery query)
 {
     throw new NotImplementedException();
 }