Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        public void Process(NodePlaylist aNode)
        {
            playlistContainer metadata = new playlistContainer();

            SetContainerMetadata(metadata, aNode);
            iMetadata = metadata;
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
 public Playlist()
 {
     iTracks                   = new List <upnpObject>();
     iHomeContainer            = new playlistContainer();
     iHomeContainer.Id         = "";
     iHomeContainer.ParentId   = "Playlists";
     iHomeContainer.Restricted = false;
 }
Ejemplo n.º 5
0
 public LocalPlaylistsRootError(string aRootId)
 {
     iMetadata            = new playlistContainer();
     iMetadata.Id         = aRootId;
     iMetadata.Title      = aRootId;
     iMetadata.ChildCount = 1;
     iMetadata.Restricted = true;
     iMetadata.Searchable = true;
 }
Ejemplo n.º 6
0
            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);
            }
Ejemplo n.º 7
0
        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;
        }
Ejemplo n.º 8
0
        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);
Ejemplo n.º 10
0
        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);
            }
        }