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); }
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); }
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)); }
public void Add(string id, Playlist list, PlaylistMeta meta) { playlistCache.Add(id, new PlaylistData { Meta = meta, Playlist = list, Songs = CreateSongsInfo(id, list) }); }
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); }
public void Add(string id, PlaylistMeta meta) { playlistCache.Add(id, new PlaylistData { Meta = meta }); }