/// <summary> /// Htmlテキストからイラスト情報を取得する /// </summary> /// <param name="text"></param> /// <returns></returns> private List<Illust> GetIllustsFromHtml(PixivPages page, string text) { List<Illust> list = new List<Illust>(); Regex Reg = null; switch (page) { case PixivPages.DailyRanking: case PixivPages.WeeklyRanking: case PixivPages.MonthlyRanking: case PixivPages.R18DailyRanking: case PixivPages.R18WeeklyRanking: case PixivPages.Favorite: case PixivPages.MyPixiv: Reg = new Regex(ConstData.RankingPattan); break; case PixivPages.NewIllust: case PixivPages.R18NewIllust: default: Reg = new Regex(ConstData.NewIllustPattan); break; } // イラスト情報を取得する var matchs = Reg.Match(text); while (matchs.Success) { Illust illust = new Illust(); illust.Url = ConstData.PixivUrl + matchs.Groups["illust_id"].Value; illust.ThumnailImageUrl = matchs.Groups["thumnail"].Value; illust.Title = matchs.Groups["title"].Value; illust.AuthorPixivID = matchs.Groups["author"].Value; illust.ThumnailName = matchs.Groups["thumnailFileName"].Value; // リストにイラスト情報を追加 list.Add(illust); // マッチングした次のイラスト情報 matchs = matchs.NextMatch(); } return list; }
/// <summary> /// 特定ページのイラスト情報を取得する /// </summary> /// <param name="page">ページ種別</param> /// <param name="pageCount">ページ数</param> /// <returns></returns> public List<Illust> GetIllusts(PixivPages page, int pageCount) { #if !PixivAPI string pageUrl = string.Format(page.ToUrlFormat(), pageCount); #else string pageUrl = string.Format(page.ToUrlFormat(), pageCount); pageUrl = pageUrl + "&" + this.Cookie; #endif // 指定したページからイラスト一覧のテキストを取得する string text = GetHtml(pageUrl); // 1ページあたりのイラスト数を取得する int rankBase = 0; switch (page) { case PixivPages.NewIllust: case PixivPages.MyPixiv: case PixivPages.R18NewIllust: rankBase = 20; break; default: rankBase = 50; break; } // htmlからイラストのリストを取得する List<Illust> list = GetIllustsFromHtml(page, text); for (int i=0; i<list.Count; i++) { list[i].Rank = (rankBase * (pageCount - 1)) + i + 1; } return list; }