Esempio n. 1
0
        public static Task <IList <WebPlaylistItem> > ProcessAsync(IOwinContext context, string playlistId, string filter, WebSortField?sort, WebSortOrder?order)
        {
            // get the playlist
            PlaylistRawData playlistRawData = ServiceRegistration.Get <IMediaLibrary>().ExportPlaylist(Guid.Parse(playlistId));

            IFilter           searchFilter = new MediaItemIdFilter(playlistRawData.MediaItemIds);
            IList <MediaItem> items        = MediaLibraryAccess.Search(context, BasicNecessaryMIATypeIds, BasicOptionalMIATypeIds, searchFilter);

            if (items.Count == 0)
            {
                return(System.Threading.Tasks.Task.FromResult <IList <WebPlaylistItem> >(new List <WebPlaylistItem>()));
            }

            var tracks = items.Select(item => MusicTrackBasic(item))
                         .Filter(filter);

            // sort and filter
            if (sort != null && order != null)
            {
                tracks = tracks.SortWebMusicTrackBasic(sort, order);
            }

            var output = tracks.Select(t => new WebPlaylistItem(t));

            return(System.Threading.Tasks.Task.FromResult <IList <WebPlaylistItem> >(output.ToList()));
        }
        internal static void AssignArtists(IOwinContext context, IEnumerable <WebMusicTrackDetailed> tracks)
        {
            // assign artists
            var searchFilter = new MediaItemIdFilter(tracks.SelectMany(t => t.ArtistId).Concat(tracks.Select(t => t.AlbumArtistId)).Select(s => Guid.Parse(s)).Distinct());
            var artists      = MediaLibraryAccess.Search(context, BaseMusicArtistBasic.BasicNecessaryMIATypeIds, BaseMusicArtistBasic.BasicOptionalMIATypeIds, searchFilter);

            foreach (var track in tracks)
            {
                var albumArtist = artists.FirstOrDefault(a => a.MediaItemId.ToString() == track.AlbumArtistId);
                if (albumArtist != null)
                {
                    track.AlbumArtistObject = BaseMusicArtistBasic.MusicArtistBasic(albumArtist);
                }
                track.Artists = new List <WebMusicArtistBasic>();
                foreach (var artistsId in track.ArtistId)
                {
                    var artist = artists.FirstOrDefault(a => a.MediaItemId.ToString() == artistsId);
                    if (artist != null)
                    {
                        track.Artists.Add(BaseMusicArtistBasic.MusicArtistBasic(artist));
                    }
                }
            }
        }