Example #1
0
        internal static async void DoIterate <T>(IPixivIterator <T> pixivIterator, ICollection <T> container, bool useCounter = false)
        {
            var counter   = 1;
            var hashTable = new Dictionary <string, Illustration>();

            while (pixivIterator.HasNext())
            {
                if (useCounter && counter > Settings.Global.QueryPages * 10)
                {
                    break;
                }
                await foreach (var illust in pixivIterator.MoveNextAsync())
                {
                    if (illust is Illustration i)
                    {
                        if (IllustNotMatchCondition(Settings.Global.ExceptTags, Settings.Global.ContainsTags, i))
                        {
                            continue;
                        }

                        if (container is Collection <Illustration> illustrationContainer)
                        {
                            if (hashTable.ContainsKey(i.Id))
                            {
                                continue;
                            }

                            hashTable[i.Id] = i;
                            IComparer <Illustration> comparer = pixivIterator.SortOption switch
                            {
                                SortOption.None => null,
                                SortOption.PublishDate => IllustrationPublishDateComparator.Instance,
                                SortOption.Popularity => IllustrationPopularityComparator.Instance,
                                _ => null
                            };
                            illustrationContainer.AddSorted(i, comparer);
                        }
                    }
                    else
                    {
                        container.Add(illust);
                    }
                }

                counter++;
            }
        }
Example #2
0
        internal static async void DoIterate <T>(IPixivIterator <T> pixivIterator, ICollection <T> container, bool useCounter = false)
        {
            var counter = 1;

            while (pixivIterator.HasNext())
            {
                if (useCounter && counter > Settings.Global.QueryPages)
                {
                    break;
                }
                await foreach (var illust in pixivIterator.MoveNextAsync())
                {
                    if (typeof(T) == typeof(Illustration))
                    {
                        var i = illust as Illustration;
                        if (IllustNotMatchCondition(Settings.Global.ExceptTags, Settings.Global.ContainsTags, i))
                        {
                            continue;
                        }

                        if (Settings.Global.SortOnInserting)
                        {
                            (container as Collection <Illustration>).AddSorted(i, IllustrationComparator.Instance);
                        }
                        else
                        {
                            container.Add(illust);
                        }
                    }
                    else
                    {
                        container.Add(illust);
                    }
                }

                counter++;
            }
        }
Example #3
0
        internal static async void DoIterate <T>(IPixivIterator <T> pixivIterator, ICollection <T> container, bool useCounter = false)
        {
            var counter = 1;

            while (pixivIterator.HasNext())
            {
                if (useCounter && counter > Settings.Global.QueryPages * 10)
                {
                    break;
                }
                await foreach (var illust in pixivIterator.MoveNextAsync())
                {
                    if (typeof(T) == typeof(Illustration))
                    {
                        var i = illust as Illustration;
                        if (IllustNotMatchCondition(Settings.Global.ExceptTags, Settings.Global.ContainsTags, i))
                        {
                            continue;
                        }

                        if (container is Collection <Illustration> illustrationContainer)
                        {
                            illustrationContainer.AddSorted(i, Settings.Global.SortOnInserting ? IllustrationPopularityComparator.Instance : (IComparer <Illustration>)IllustrationPublishDateComparator.Instance);
                        }
                    }
                    else
                    {
                        container.Add(illust);
                    }
                }

                await Task.Delay(1000);

                counter++;
            }
        }