public static void SaveModel(string filename, ZipListingModel model) { JsonSerializer serializer = new JsonSerializer(); serializer.Converters.Add(new JavaScriptDateTimeConverter()); serializer.NullValueHandling = NullValueHandling.Ignore; Monitor.Instance.Push($"Write file: {filename}"); using (StreamWriter sw = new StreamWriter(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, filename))) using (JsonWriter writer = new JsonTextWriter(sw)) { serializer.Serialize(writer, model); } }
public void Build(ZipListingModel src) { tagdata_collection = new HitomiTagdataCollection(); tagdata_collection.artist?.Clear(); tagdata_collection.tag?.Clear(); tagdata_collection.female?.Clear(); tagdata_collection.male?.Clear(); tagdata_collection.group?.Clear(); tagdata_collection.character?.Clear(); tagdata_collection.series?.Clear(); tagdata_collection.type?.Clear(); tagdata_collection.language?.Clear(); Dictionary <string, int> artist = new Dictionary <string, int>(); Dictionary <string, int> tag = new Dictionary <string, int>(); Dictionary <string, int> female = new Dictionary <string, int>(); Dictionary <string, int> male = new Dictionary <string, int>(); Dictionary <string, int> group = new Dictionary <string, int>(); Dictionary <string, int> character = new Dictionary <string, int>(); Dictionary <string, int> series = new Dictionary <string, int>(); Dictionary <string, int> type = new Dictionary <string, int>(); foreach (var article in src.ArticleList.Select(x => x.Value.ArticleData)) { if (article.Artists != null) { article.Artists.ToList().ForEach(x => Add(artist, x)); } if (article.Tags != null) { article.Tags.ToList().ForEach(x => { if (x.StartsWith("female:")) { Add(female, x); } else if (x.StartsWith("male:")) { Add(male, x); } else { Add(tag, x); } }); } if (article.Groups != null) { article.Groups.ToList().ForEach(x => Add(group, x)); } if (article.Characters != null) { article.Characters.ToList().ForEach(x => Add(character, x)); } if (article.Series != null) { article.Series.ToList().ForEach(x => Add(series, x)); } if (article.Types != null) { Add(type, article.Types); } } tagdata_collection.artist = artist.Select(x => new HitomiTagdata() { Tag = x.Key, Count = x.Value }).ToList(); tagdata_collection.tag = tag.Select(x => new HitomiTagdata() { Tag = x.Key, Count = x.Value }).ToList(); tagdata_collection.female = female.Select(x => new HitomiTagdata() { Tag = x.Key, Count = x.Value }).ToList(); tagdata_collection.male = male.Select(x => new HitomiTagdata() { Tag = x.Key, Count = x.Value }).ToList(); tagdata_collection.group = group.Select(x => new HitomiTagdata() { Tag = x.Key, Count = x.Value }).ToList(); tagdata_collection.character = character.Select(x => new HitomiTagdata() { Tag = x.Key, Count = x.Value }).ToList(); tagdata_collection.series = series.Select(x => new HitomiTagdata() { Tag = x.Key, Count = x.Value }).ToList(); tagdata_collection.type = type.Select(x => new HitomiTagdata() { Tag = x.Key, Count = x.Value }).ToList(); tagdata_collection.language = new List <HitomiTagdata>(); tagdata_collection.artist.Sort((a, b) => b.Count.CompareTo(a.Count)); tagdata_collection.tag.Sort((a, b) => b.Count.CompareTo(a.Count)); tagdata_collection.female.Sort((a, b) => b.Count.CompareTo(a.Count)); tagdata_collection.male.Sort((a, b) => b.Count.CompareTo(a.Count)); tagdata_collection.group.Sort((a, b) => b.Count.CompareTo(a.Count)); tagdata_collection.character.Sort((a, b) => b.Count.CompareTo(a.Count)); tagdata_collection.series.Sort((a, b) => b.Count.CompareTo(a.Count)); tagdata_collection.type.Sort((a, b) => b.Count.CompareTo(a.Count)); builded = true; }