public static string ToDisplayString(this RankingMode mode) { switch (mode) { case RankingMode.Daily: return(Resources.GetString("Daily/Text")); case RankingMode.DailyMale: return(Resources.GetString("PopularMale/Text")); case RankingMode.DailyFemale: return(Resources.GetString("PopularFemale/Text")); case RankingMode.WeeklyOriginal: return(Resources.GetString("Original/Text")); case RankingMode.WeeklyRookie: return(Resources.GetString("Rookie/Text")); case RankingMode.Weekly: return(Resources.GetString("Weekly/Text")); case RankingMode.Monthly: return(Resources.GetString("Monthly/Text")); default: throw new ArgumentOutOfRangeException(nameof(mode), mode, null); } }
public RankingViewModel(RankingMode mode, IImageStoreService imageStoreService, INavigationService navigationService) { RankingMode = mode; ImageStoreService = imageStoreService; NavigationService = navigationService; }
/// <summary> /// Gets a list of ranking illusts. /// </summary> /// <param name="mode">The ranking mode to use.</param> /// <param name="date">The date to get ranking illusts for.</param> /// <param name="filter">The filter to use.</param> /// <returns><seealso cref="IllustSearchResult"/> for ranking illusts.</returns> public async Task <IllustSearchResult> RankingIllustsAsync(RankingMode mode = RankingMode.Day, DateTime?date = null, FilterType?filter = null) { // Converts time to the correct timezone and produces a date string in correct format Stream response; DateTime dateValue = date ?? DateTime.Now.AddDays(-1); string dateString = dateValue.Year.ToString("0000") + "-" + dateValue.Month.ToString("00") + "-" + dateValue.Day.ToString("00"); Dictionary <string, string> parameters = new Dictionary <string, string>() { { "mode", mode.JsonValue() }, { "date", dateString } }; // Adds filter if required if ((filter ?? Filter) != FilterType.None) { parameters.Add("filter", filter.JsonValue() ?? Filter.JsonValue()); } FormUrlEncodedContent encodedParams = new FormUrlEncodedContent(parameters); response = await RequestClient.RequestAsync(PixivUrls.RankingIllusts, encodedParams) .ConfigureAwait(false); return(Json.DeserializeJson <IllustSearchResult>(response)); }
public async Task <SearchResult[]> GetRankingAsync(RankingMode mode, int offset, DateTime?date) { if (string.IsNullOrWhiteSpace(AccessToken)) { throw new AuthentificationRequired(); } await CheckUpdateTokenAsync(); string url = _baseUrl + "/v1/illust/ranking?mode=" + _rankingModeValues[mode]; if (offset != 0) { url += "&offset=" + offset; } if (date.HasValue) { url += "&date=" + date.Value.ToString("yyyy-MM-dd"); } var request = new HttpRequestMessage(HttpMethod.Get, url); request.Headers.Add("Authorization", "Bearer " + AccessToken); var response = await HttpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead); response.EnsureSuccessStatusCode(); var jsonToken = JsonConvert.DeserializeObject <JToken>(await response.Content.ReadAsStringAsync()); return(ParseSearchResults((JArray)jsonToken["illusts"])); }
public RankingNovelViewModel(INovel novel, RankingMode mode, IImageStoreService imageStoreService, INavigationService navigationService) : base(mode, imageStoreService, navigationService) { Title = novel.Title; ThumbnailPath = PyxisConstants.DummyImage; Thumbnailable = new PixivNovel(novel, imageStoreService); }
public RankingImageViewModel(IIllust illust, RankingMode mode, ContentType contentType, IImageStoreService imageStoreService, INavigationService navigationService) : base(mode, imageStoreService, navigationService) { _illust = illust; _contentType = contentType; Title = _illust.Title; ThumbnailPath = PyxisConstants.DummyImage; Thumbnailable = new PixivImage(_illust, imageStoreService); }
public PixivRanking(IPixivClient pixivClient, ContentType rankingType, RankingMode rankingMode, IQueryCacheService queryCacheService) { _pixivClient = pixivClient; _rankingType = rankingType; _rankingMode = rankingMode; _queryCacheService = queryCacheService; _offset = ""; if (_rankingType == ContentType.Novel) { Novels = new ObservableCollection <INovel>(); } else { Illusts = new ObservableCollection <IIllust>(); } #if OFFLINE HasMoreItems = false; #else HasMoreItems = true; #endif }
/// <summary> /// ランキング上位のイラスト一覧を取得します。 /// </summary> /// <param name="mode">ランキングモード</param> /// <param name="date">YYYY-MM-DD 形式の日付</param> /// <param name="offset">オフセット</param> /// <param name="filter">フィルター (`for_ios` が有効)</param> /// <returns> /// <see cref="IllustCollection" /> /// </returns> public async Task <IllustCollection> RankingAsync(RankingMode mode, string date = "", long offset = 0, string filter = "") { var parameters = new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("mode", mode.ToParameter()) }; if (!string.IsNullOrWhiteSpace(date)) { parameters.Add(new KeyValuePair <string, string>("date", date)); } if (offset > 0) { parameters.Add(new KeyValuePair <string, string>("offset", offset.ToString())); } if (!string.IsNullOrWhiteSpace(filter)) { parameters.Add(new KeyValuePair <string, string>("filter", filter)); } return(await PixivClient.GetAsync <IllustCollection>("https://app-api.pixiv.net/v1/illust/ranking", parameters).Stay()); }
/// <summary> /// <see cref="RankingMode" /> を URL クエリパラメータに変換します。 /// </summary> /// <param name="obj"> /// <see cref="RankingMode" /> /// </param> /// <returns>変換後文字列</returns> public static string ToParameter(this RankingMode obj) { switch (obj) { case RankingMode.Daily: return("day"); case RankingMode.DailyMale: return("day_make"); case RankingMode.DailyFemale: return("day_famele"); case RankingMode.DailyManga: return("day_manga"); case RankingMode.Weekly: return("week"); case RankingMode.WeeklyOriginal: return("week_original"); case RankingMode.WeeklyRookie: return("week_rookie"); case RankingMode.WeeklyManga: return("week_manga"); case RankingMode.Monthly: return("month"); case RankingMode.MonthlyManga: return("month_manga"); default: throw new ArgumentOutOfRangeException(nameof(obj), obj, null); } }
/// <summary> /// ランキング上位の小説を取得します。 /// </summary> /// <param name="mode">ランキングモード</param> /// <param name="date">日付 (YYYY-MM-DD 形式)</param> /// <param name="offset">オフセット</param> /// <returns> /// <see cref="NovelCollection" /> /// </returns> public async Task <NovelCollection> RankingAsync(RankingMode mode, string date = "", long offset = 0) { Ensure.InvalidEnumValue(mode == RankingMode.DailyManga, nameof(mode)); Ensure.InvalidEnumValue(mode == RankingMode.WeeklyManga, nameof(mode)); Ensure.InvalidEnumValue(mode == RankingMode.WeeklyOriginal, nameof(mode)); Ensure.InvalidEnumValue(mode == RankingMode.Monthly, nameof(mode)); Ensure.InvalidEnumValue(mode == RankingMode.MonthlyManga, nameof(mode)); var parameters = new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("mode", mode.ToParameter()) }; if (!string.IsNullOrWhiteSpace(date)) { parameters.Add(new KeyValuePair <string, string>("date", date)); } if (offset > 0) { parameters.Add(new KeyValuePair <string, string>("offset", offset.ToString())); } return(await PixivClient.GetAsync <NovelCollection>("https://app-api.pixiv.net/v1/novel/ranking", parameters).Stay()); }
public static string ToParamString(this RankingMode mode, ContentType type = ContentType.Illust) { switch (mode) { case RankingMode.Daily: if ((type == ContentType.Illust) || (type == ContentType.Novel)) { return("day"); } return("day_manga"); case RankingMode.DailyMale: if (type == ContentType.Manga) { throw new NotSupportedException(); } return("day_male"); case RankingMode.DailyFemale: if (type == ContentType.Manga) { throw new NotSupportedException(); } return("day_female"); case RankingMode.WeeklyOriginal: if (type != ContentType.Illust) { throw new NotSupportedException(); } return("week_original"); case RankingMode.WeeklyRookie: if ((type == ContentType.Illust) || (type == ContentType.Novel)) { return("week_rookie"); } return("week_rookie_manga"); case RankingMode.Weekly: if ((type == ContentType.Illust) || (type == ContentType.Novel)) { return("week"); } return("week_manga"); case RankingMode.Monthly: if (type == ContentType.Novel) { throw new NotSupportedException(); } if (type == ContentType.Illust) { return("month"); } return("month_manga"); default: throw new ArgumentOutOfRangeException(nameof(mode), mode, null); } }
public static int ToParamIndex(this RankingMode mode, ContentType type = ContentType.Illust) { if (type == ContentType.User) { throw new NotSupportedException(); } switch (mode) { case RankingMode.Daily: return(0); case RankingMode.DailyMale: if (type == ContentType.Manga) { throw new NotSupportedException(); } return(1); case RankingMode.DailyFemale: if (type == ContentType.Manga) { throw new NotSupportedException(); } return(2); case RankingMode.WeeklyOriginal: if (type == ContentType.Illust) { return(3); } throw new NotSupportedException(); case RankingMode.WeeklyRookie: if (type == ContentType.Manga) { return(1); } if (type == ContentType.Novel) { return(3); } return(4); case RankingMode.Weekly: if (type == ContentType.Manga) { return(2); } if (type == ContentType.Novel) { return(4); } return(5); case RankingMode.Monthly: if (type == ContentType.Manga) { return(3); } if (type == ContentType.Novel) { throw new NotSupportedException(); } return(6); default: throw new ArgumentOutOfRangeException(nameof(mode), mode, null); } }
public IList<QueryResult> Query(string query, RankingMode rankingMode) { using (FileStream indexFileStream = File.Open(indexFilePath, FileMode.Open)) { using (FileStream metadataFileStream = File.Open(metadataFilePath, FileMode.Open)) { IndexMetadata indexMetadata = new IndexMetadata(metadataFileStream); TermIndex index = new TermIndex(indexFileStream); QueryEngine queryEngine = new QueryEngine(index, indexMetadata); IList<long> results = queryEngine.Query(query.ToLower(), rankingMode); IList<QueryResult> queryResults = new List<QueryResult>(); int i = 1; Console.WriteLine("rank\tscore\ttitle"); foreach (long docId in results.Take(500)) { DocumentInfo docInfo; if (indexMetadata.TryGetDocumentInfo(docId, out docInfo)) { QueryResult res = new QueryResult() { Title = docInfo.Title, Uri = docInfo.Uri, Score = queryEngine.Scores[docId] }; queryResults.Add(res); } else { Console.WriteLine("Found document id in posting list that wasn't indexed in metadata: " + docId); } } return queryResults; } } }
public Task <SearchResult[]> GetRankingAsync(RankingMode mode) { return(GetRankingAsync(mode, 0, null)); }