コード例 #1
0
        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);
        }
コード例 #2
0
 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;
 }
コード例 #3
0
        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);
        }
コード例 #4
0
ファイル: MPMusic.cs プロジェクト: fLaSkin/MPExtended
        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);
            }
        }