Пример #1
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));
 }
Пример #2
0
        public E <LocalStr> Write(string listId, IReadOnlyPlaylist list)
        {
            try
            {
                rwLock.EnterWriteLock();

                var result = WriteToFile(listId, list);
                dirtyList.Remove(listId);
                return(result);
            }
            finally
            {
                rwLock.ExitWriteLock();
            }
        }
Пример #3
0
        private E <LocalStr> WriteToFile(string listId, IReadOnlyPlaylist plist)
        {
            var fi = NameToFile(listId);

            if (fi is null)
            {
                return(new LocalStr(strings.error_playlist_no_store_directory));
            }
            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,
                };

                var meta = playlistInfo.GetOrNew(listId);
                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.AudioResource);
                    sw.WriteLine();
                }
            }
            return(R.Ok);
        }
Пример #4
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);
        }