示例#1
0
        /// <summary>
        ///     Search in Pixiv.
        /// </summary>
        /// <param name="tag">Texts for searching</param>
        /// <param name="start">Start page</param>
        /// <param name="pages">Number of pages</param>
        /// <param name="matchOption">
        ///     The <see cref="SearchTagMatchOption.TitleAndCaption" /> option for the method of search
        ///     matching
        /// </param>
        /// <param name="sortOption">The <see cref="IllustrationSortOption" /> option for sorting method</param>
        /// <param name="searchDuration">The <see cref="SearchDuration" /> option for the duration of this search</param>
        /// <param name="targetFilter">The <see cref="TargetFilter" /> option targeting android or ios</param>
        /// <param name="startDate">The starting date filtering the search results</param>
        /// <param name="endDate">The ending date filtering the searching results</param>
        /// <returns>
        ///     The <see cref="SearchEngine" /> iterator containing the searching results.
        /// </returns>
        public IFetchEngine <Illustration> Search(
            string tag,
            int start = 0,
            int pages = 100,
            SearchTagMatchOption matchOption  = SearchTagMatchOption.TitleAndCaption,
            IllustrationSortOption?sortOption = null,
            SearchDuration searchDuration     = SearchDuration.Undecided,
            TargetFilter?targetFilter         = null,
            DateTimeOffset?startDate          = null,
            DateTimeOffset?endDate            = null)
        {
            EnsureNotCancelled();
            if (sortOption == IllustrationSortOption.PopularityDescending && !Session.IsPremium)
            {
                sortOption = IllustrationSortOption.DoNotSort;
            }

            return(new SearchEngine(this, new EngineHandle(CancelInstance), matchOption, tag, start, pages, sortOption, searchDuration, startDate, endDate, targetFilter));
        }
示例#2
0
        public static string ToParamString(this SearchDuration duration)
        {
            switch (duration)
            {
            case SearchDuration.Nothing:
                return("");

            case SearchDuration.LastDay:
                return("within_last_day");

            case SearchDuration.LastWeek:
                return("within_last_week");

            case SearchDuration.LastMonth:
                return("within_last_month");

            default:
                throw new ArgumentOutOfRangeException(nameof(duration), duration, null);
            }
        }
示例#3
0
 public SearchEngine(
     MakoClient makoClient,
     EngineHandle?engineHandle,
     SearchTagMatchOption matchOption,
     string tag,
     int start,
     int pages,
     IllustrationSortOption?sortOption,
     SearchDuration searchDuration,
     DateTimeOffset?startDate,
     DateTimeOffset?endDate,
     TargetFilter?targetFilter) : base(makoClient, engineHandle)
 {
     _matchOption    = matchOption;
     _tag            = tag;
     _current        = start;
     _pages          = pages;
     _sortOption     = sortOption ?? IllustrationSortOption.PublishDateDescending;
     _searchDuration = searchDuration;
     _startDate      = startDate;
     _endDate        = endDate;
     _targetFilter   = targetFilter ?? TargetFilter.ForAndroid;
 }