Ejemplo n.º 1
0
        private static E <LocalStr> WriteToFile(FileInfo fi, PlaylistMeta meta, IReadOnlyCollection <PlaylistItem> items)
        {
            var dir = fi.Directory;

            if (!dir.Exists)
            {
                dir.Create();
            }

            using (var sw = new StreamWriter(fi.Open(FileMode.Create, FileAccess.Write, FileShare.Read), Tools.Utf8Encoder))
            {
                var serializer = new JsonSerializer
                {
                    Formatting = Formatting.None,
                };

                sw.WriteLine("version:" + FileVersion);
                sw.Write("meta:");
                serializer.Serialize(sw, meta);
                sw.WriteLine();

                sw.WriteLine();

                foreach (var pli in items)
                {
                    sw.Write("rsj:");
                    serializer.Serialize(sw, pli.AudioResource);
                    sw.WriteLine();
                }
            }
            return(R.Ok);
        }
Ejemplo n.º 2
0
        public PlaylistMeta Update(string id, Playlist list)
        {
            if (!playlistCache.TryGetValue(id, out var data))
            {
                var meta = new PlaylistMeta();
                PlaylistIO.UpdateMeta(meta, list);
                Add(id, list, meta);
                return(meta);
            }

            var wasNull = data.Playlist == null;

            data.Update(list);
            if (!wasNull)
            {
                foreach (var s in data.Songs)
                {
                    s.RemoveList(id);
                    if (!s.IsContainedInAList)
                    {
                        uniqueSongs.Remove(s.Resource);
                    }
                }
            }
            data.Songs = CreateSongsInfo(id, list);

            return(data.Meta);
        }
Ejemplo n.º 3
0
 public static void UpdateMeta(PlaylistMeta meta, IReadOnlyPlaylist list)
 {
     meta.Title             = list.Title;
     meta.Count             = list.Items.Count;
     meta.OwnerId           = list.Owner.Value;
     meta.Version           = FileVersion;
     meta.AdditionalEditors = new List <string>(list.AdditionalEditors.Select(uid => uid.Value));
 }
Ejemplo n.º 4
0
 public void Add(string id, Playlist list, PlaylistMeta meta)
 {
     playlistCache.Add(id, new PlaylistData {
         Meta     = meta,
         Playlist = list,
         Songs    = CreateSongsInfo(id, list)
     });
 }
Ejemplo n.º 5
0
        private E <LocalStr> WriteToFile(string listId, IReadOnlyPlaylist plist)
        {
            var fi  = NameToFile(listId);
            var dir = fi.Directory;

            if (!dir.Exists)
            {
                dir.Create();
            }

            using (var sw = new StreamWriter(fi.Open(FileMode.Create, FileAccess.Write, FileShare.Read), Util.Utf8Encoder))
            {
                var serializer = new JsonSerializer
                {
                    Formatting = Formatting.None,
                };

                if (!playlistInfo.TryGetValue(listId, out var meta))
                {
                    meta = new PlaylistMeta {
                    };
                    playlistInfo.Add(listId, meta);
                }
                meta.Title   = plist.Title;
                meta.Count   = plist.Items.Count;
                meta.Version = FileVersion;

                sw.WriteLine("version:" + FileVersion);
                sw.Write("meta:");
                serializer.Serialize(sw, meta);
                sw.WriteLine();

                sw.WriteLine();

                foreach (var pli in plist.Items)
                {
                    sw.Write("rsj:");
                    serializer.Serialize(sw, pli.Resource);
                    sw.WriteLine();
                }
            }
            return(R.Ok);
        }
Ejemplo n.º 6
0
 public void Add(string id, PlaylistMeta meta)
 {
     playlistCache.Add(id, new PlaylistData {
         Meta = meta
     });
 }