public DidlLite Items(uint aStartIndex, uint aCount) { DidlLite didl = new DidlLite(); SortedList <string, string> playlists = iPlaylists.GetPlaylists(aStartIndex, aCount); foreach (KeyValuePair <string, string> s in playlists) { playlistContainer playlist = new playlistContainer(); resource resource = new resource(); playlist.Res.Add(resource); playlist.Id = s.Key; playlist.ParentId = iMetadata.Id; playlist.Title = s.Value; playlist.WriteStatus = "PROTECTED"; playlist.Restricted = false; playlist.Searchable = true; resource.Uri = s.Key; didl.Add(playlist); } return(didl); }
public void Process(NodePlaylist aNode) { playlistContainer metadata = new playlistContainer(); SetContainerMetadata(metadata, aNode); iMetadata = metadata; }
public static string Description(upnpObject aObject) { string result = string.Empty; if (aObject is audioItem) { audioItem item = aObject as audioItem; result = item.Description; } else if (aObject is videoItem) { videoItem item = aObject as videoItem; result = item.Description; } else if (aObject is album) { album item = aObject as album; result = item.Description; } else if (aObject is playlistContainer) { playlistContainer item = aObject as playlistContainer; result = item.Description; } // always return a non-null string return(NonNullString(result)); }
public Playlist() { iTracks = new List <upnpObject>(); iHomeContainer = new playlistContainer(); iHomeContainer.Id = ""; iHomeContainer.ParentId = "Playlists"; iHomeContainer.Restricted = false; }
public LocalPlaylistsRootError(string aRootId) { iMetadata = new playlistContainer(); iMetadata.Id = aRootId; iMetadata.Title = aRootId; iMetadata.ChildCount = 1; iMetadata.Restricted = true; iMetadata.Searchable = true; }
public IList <MrItem> ParseMetadataXml(string aXml) { List <MrItem> list = new List <MrItem>(); if (aXml != null) { try { XmlDocument document = new XmlDocument(); document.LoadXml(aXml); foreach (XmlNode n in document.SelectNodes("/PlaylistList/Entry")) { uint id = uint.Parse(n["Id"].InnerText); string name = n["Name"].InnerText; string description = n["Description"].InnerText; uint imageId = uint.Parse(n["ImageId"].InnerText); DidlLite didl = null; if (id > 0) { didl = new DidlLite(); playlistContainer p = new playlistContainer(); p.Id = id.ToString(); p.Title = name; p.Description = description; if (imageId != 0) { Uri uri; if (iModelPlaylistManager.ImageList.TryGetValue(imageId, out uri)) { p.AlbumArtUri.Add(uri.AbsoluteUri); } } didl.Add(p); list.Add(new MrItem(id, null, didl)); } } } catch (XmlException e) { } catch (FormatException e) { } } return(list); }
public LocalPlaylistsRootOk(string aRootId, LocalPlaylists aPlaylists, LocalPlaylistCreator aCreator) { iPlaylists = aPlaylists; iPlaylists.EventPlaylistAdded += PlaylistAdded; iPlaylists.EventPlaylistRemoved += PlaylistRemoved; iPlaylists.EventPlaylistsChanged += PlaylistsChanged; iCreator = aCreator; iMetadata = new playlistContainer(); iMetadata.Id = aRootId; iMetadata.Title = aRootId; iMetadata.ChildCount = (int)iPlaylists.Count; iMetadata.Restricted = false; iMetadata.Searchable = true; }
public static string ReleaseYear(upnpObject aObject) { string result = string.Empty; if (aObject is playlistContainer) { playlistContainer container = aObject as playlistContainer; result = container.Date; } else if (aObject is album) { album album = aObject as album; result = album.Date; } else if (aObject is musicTrack) { musicTrack item = aObject as musicTrack; result = item.Date; } else if (aObject is audioBook) { audioBook item = aObject as audioBook; result = item.Date; } if (aObject is musicVideoClip) { musicVideoClip item = aObject as musicVideoClip; result = item.Date; } if (!string.IsNullOrEmpty(result)) { try { DateTime t = DateTime.Parse(result); result = t.Year.ToString().Trim(); } catch (FormatException) { } } // always return a non-null string return(NonNullString(result)); }
await writer.Write(playlistContainer, progress);
public static upnpObject Create(FileInfo aInfo, string aArtworkUri, string aResourceUri) { // check for playlist file if (aInfo.Extension == Playlist.kPlaylistExtension) { playlistContainer playlist = new playlistContainer(); resource resource = new resource(); playlist.Res.Add(resource); playlist.Id = aInfo.FullName; playlist.Title = aInfo.Name; playlist.WriteStatus = "PROTECTED"; playlist.Restricted = true; resource.Size = aInfo.Length; resource.Uri = aResourceUri; return(playlist); } // check for audio/video file try { if (IsTagLibSupported(aInfo)) { TagLib.File f = TagLib.File.Create(aInfo.FullName); if (f.Properties.MediaTypes == MediaTypes.Audio) { musicTrack track = new musicTrack(); resource resource = new resource(); track.Res.Add(resource); track.Id = aInfo.FullName; track.WriteStatus = "PROTECTED"; track.Restricted = true; if (!f.Tag.IsEmpty) { if (f.Tag.Title != null) { track.Title = f.Tag.Title; } else { track.Title = aInfo.Name; } if (f.Tag.Album != null) { track.Album.Add(f.Tag.Album); } foreach (string g in f.Tag.Genres) { track.Genre.Add(g); } track.OriginalTrackNumber = (int)f.Tag.Track; track.Date = f.Tag.Year.ToString(); foreach (string p in f.Tag.Performers) { artist performer = new artist(); performer.Artist = p; performer.Role = "Performer"; track.Artist.Add(performer); } foreach (string a in f.Tag.AlbumArtists) { artist artist = new artist(); artist.Artist = a; artist.Role = "AlbumArtist"; track.Artist.Add(artist); } foreach (string c in f.Tag.Composers) { artist composer = new artist(); composer.Artist = c; composer.Role = "Composer"; track.Artist.Add(composer); } if (f.Tag.Conductor != null) { artist conductor = new artist(); conductor.Artist = f.Tag.Conductor; conductor.Role = "Conductor"; track.Artist.Add(conductor); } } else { track.Title = aInfo.Name; } resource.Bitrate = (int)((f.Properties.AudioBitrate * 1000.0f) / 8.0f); resource.Duration = new Time((int)f.Properties.Duration.TotalSeconds).ToString(); resource.NrAudioChannels = f.Properties.AudioChannels; resource.SampleFrequency = f.Properties.AudioSampleRate; resource.Size = aInfo.Length; resource.Uri = aResourceUri; resource.ProtocolInfo = string.Format("http-get:*:{0}:*", f.MimeType.Replace("taglib", "audio")); resource.ProtocolInfo = resource.ProtocolInfo.Replace("flac", "x-flac"); resource.ProtocolInfo = resource.ProtocolInfo.Replace("aif:", "aiff:"); resource.ProtocolInfo = resource.ProtocolInfo.Replace("wma", "x-ms-wma"); resource.ProtocolInfo = resource.ProtocolInfo.Replace("asf", "x-ms-asf"); resource.ProtocolInfo = resource.ProtocolInfo.Replace("mp3", "mpeg"); resource.ProtocolInfo = resource.ProtocolInfo.Replace("mpeg3", "mpeg"); resource.ProtocolInfo = resource.ProtocolInfo.Replace("m4a", "x-m4a"); if (!string.IsNullOrEmpty(aArtworkUri)) { track.AlbumArtUri.Add(aArtworkUri); } return(track); } else if (f.Properties.MediaTypes == TagLib.MediaTypes.Video) { videoItem video = new videoItem(); resource resource = new resource(); video.Res.Add(resource); video.Id = aInfo.FullName; video.WriteStatus = "PROTECTED"; video.Restricted = true; if (!f.Tag.IsEmpty) { if (f.Tag.Title != null) { video.Title = f.Tag.Title; } else { video.Title = aInfo.Name; } foreach (string g in f.Tag.Genres) { video.Genre.Add(g); } foreach (string p in f.Tag.Performers) { actor performer = new actor(); performer.Actor = p; performer.Role = "Actor"; video.Actor.Add(performer); } } else { video.Title = aInfo.Name; } resource.Bitrate = (int)((f.Properties.AudioBitrate * 1000.0f) / 8.0f); resource.Duration = new Time((int)f.Properties.Duration.TotalSeconds).ToString(); resource.NrAudioChannels = f.Properties.AudioChannels; resource.SampleFrequency = f.Properties.AudioSampleRate; resource.Size = aInfo.Length; resource.Uri = aResourceUri; resource.ProtocolInfo = string.Format("http-get:*:{0}:*", f.MimeType.Replace("taglib", "video")); if (!string.IsNullOrEmpty(aArtworkUri)) { video.AlbumArtUri.Add(aArtworkUri); } return(video); } } } catch (TagLib.UnsupportedFormatException) { } catch (Exception e) { UserLog.WriteLine(aInfo.FullName + ": " + e.Message); } // check for image file string mimeType; if (IsImageFile(aInfo, out mimeType)) { photo photo = new photo(); resource resource = new resource(); photo.Res.Add(resource); photo.Id = aInfo.FullName; photo.Title = aInfo.Name; photo.WriteStatus = "PROTECTED"; photo.Restricted = true; resource.Size = aInfo.Length; resource.Uri = aResourceUri; resource.ProtocolInfo = string.Format("http-get:*:{0}:*", mimeType); if (!string.IsNullOrEmpty(aArtworkUri)) { photo.AlbumArtUri.Add(aArtworkUri); } return(photo); } // all other types { item item = new item(); resource resource = new resource(); item.Res.Add(resource); item.Id = aInfo.FullName; item.Title = aInfo.Name; item.WriteStatus = "PROTECTED"; item.Restricted = true; resource.Size = aInfo.Length; resource.Uri = aResourceUri; resource.ProtocolInfo = string.Format("http-get:*:application/octet-stream:*"); if (!string.IsNullOrEmpty(aArtworkUri)) { item.AlbumArtUri.Add(aArtworkUri); } return(item); } }