internal static WebMusicTrackDetailed MusicTrackDetailed(MediaItem item) { WebMusicTrackBasic webTrackBasic = MusicTrackBasic(item); WebMusicTrackDetailed webTrackDetailed = new WebMusicTrackDetailed { Title = webTrackBasic.Title, Id = webTrackBasic.Id, Type = webTrackBasic.Type, Path = webTrackBasic.Path, Year = webTrackBasic.Year, Duration = webTrackBasic.Duration, DateAdded = webTrackBasic.DateAdded, Rating = webTrackBasic.Rating, Artwork = webTrackBasic.Artwork, Album = webTrackBasic.Album, DiscNumber = webTrackBasic.DiscNumber, TrackNumber = webTrackBasic.TrackNumber, AlbumArtist = webTrackBasic.AlbumArtist, AlbumArtistId = webTrackBasic.AlbumArtistId, AlbumId = webTrackBasic.AlbumId, Artist = webTrackBasic.Artist, ArtistId = webTrackBasic.ArtistId, Genres = webTrackBasic.Genres }; return(webTrackDetailed); }
public WebPlaylistItem(WebMusicTrackBasic track) { this.Id = track.Id; this.PID = track.PID; this.Title = track.Title; this.Type = track.Type; this.Duration = track.Duration; this.DateAdded = track.DateAdded; this.Path = track.Path; }
internal static WebMusicTrackBasic MusicTrackBasic(MediaItem item) { MediaItemAspect audioAspect = item.GetAspect(AudioAspect.Metadata); MediaItemAspect mediaAspect = item.GetAspect(MediaAspect.Metadata); MediaItemAspect importerAspect = item.GetAspect(ImporterAspect.Metadata); WebMusicTrackBasic webTrackBasic = new WebMusicTrackBasic { Title = audioAspect.GetAttributeValue <string>(AudioAspect.ATTR_TRACKNAME), Id = item.MediaItemId.ToString(), Type = WebMediaType.MusicTrack, Path = ResourceAccessUtils.GetPaths(item), Year = mediaAspect.GetAttributeValue <DateTime>(MediaAspect.ATTR_RECORDINGTIME).Year, Duration = (int)audioAspect.GetAttributeValue <long>(AudioAspect.ATTR_DURATION), DateAdded = importerAspect.GetAttributeValue <DateTime>(ImporterAspect.ATTR_DATEADDED), Rating = Convert.ToSingle(audioAspect.GetAttributeValue <double>(AudioAspect.ATTR_TOTAL_RATING)), Artwork = ResourceAccessUtils.GetWebArtwork(item), Album = audioAspect.GetAttributeValue <string>(AudioAspect.ATTR_ALBUM), DiscNumber = audioAspect.GetAttributeValue <int>(AudioAspect.ATTR_DISCID), TrackNumber = audioAspect.GetAttributeValue <int>(AudioAspect.ATTR_TRACK), }; IEnumerable <string> aspectArtists = audioAspect.GetCollectionAttribute <string>(AudioAspect.ATTR_ARTISTS); if (aspectArtists != null) { webTrackBasic.Artist = aspectArtists.Distinct().ToList(); } aspectArtists = audioAspect.GetCollectionAttribute <string>(AudioAspect.ATTR_ALBUMARTISTS); if (aspectArtists != null) { webTrackBasic.AlbumArtist = aspectArtists.FirstOrDefault(); } if (MediaItemAspect.TryGetAspects(item.Aspects, RelationshipAspect.Metadata, out var relationAspects)) { webTrackBasic.ArtistId = relationAspects.Where(r => (Guid?)r[RelationshipAspect.ATTR_LINKED_ROLE] == PersonAspect.ROLE_ARTIST).Select(r => r[RelationshipAspect.ATTR_LINKED_ID].ToString()).ToList(); webTrackBasic.AlbumId = relationAspects.Where(r => (Guid?)r[RelationshipAspect.ATTR_LINKED_ROLE] == AudioAlbumAspect.ROLE_ALBUM).Select(r => r[RelationshipAspect.ATTR_LINKED_ID].ToString()).FirstOrDefault(); webTrackBasic.AlbumArtistId = relationAspects.Where(r => (Guid?)r[RelationshipAspect.ATTR_LINKED_ROLE] == PersonAspect.ROLE_ALBUMARTIST).Select(r => r[RelationshipAspect.ATTR_LINKED_ID].ToString()).FirstOrDefault(); } IList <MediaItemAspect> genres; if (item.Aspects.TryGetValue(GenreAspect.ASPECT_ID, out genres)) { webTrackBasic.Genres = genres.Select(g => g.GetAttributeValue <string>(GenreAspect.ATTR_GENRE)).ToList(); } return(webTrackBasic); }
public IEnumerable <WebPlaylistItem> GetPlaylistItems(string playlistId) { PlayList mpPlaylist = new PlayList(); string path = GetPlaylistPath(playlistId); IPlayListIO factory = PlayListFactory.CreateIO(path); if (factory.Load(mpPlaylist, path)) { List <WebPlaylistItem> retList = new List <WebPlaylistItem>(); foreach (PlayListItem i in mpPlaylist) { WebPlaylistItem webItem = new WebPlaylistItem(); WebMusicTrackBasic track = LoadAllTracks <WebMusicTrackBasic>().FirstOrDefault(x => x.Path.Contains(i.FileName)); webItem.Title = i.Description; webItem.Duration = i.Duration; webItem.Path = new List <String>(); webItem.Path.Add(i.FileName); if (track != null) { webItem.Id = track.Id; webItem.Type = track.Type; webItem.DateAdded = track.DateAdded; } else { Log.Warn("Couldn't get track information for " + i.FileName); } retList.Add(webItem); } return(retList); } else if (new FileInfo(path).Length == 0) { // for newly created playlists, return an empty list, to make sure that a CreatePlaylist call followed by an AddItem works return(new List <WebPlaylistItem>()); } else { Log.Warn("Couldn't load playlist {0}", playlistId); return(null); } }