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);
                }
        }
Esempio n. 2
0
        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;
        }