public async Task RankingHotTopicGettingTestAsync(RankingTerm term, int page) { var data = await NiconicoRanking.GetRankingRssAsync(RankingGenre.HotTopic, term : term, page : page); Assert.IsTrue(data.IsOK); Assert.IsTrue(data.Items.Any()); var sampleItems = data.Items.Take(1).ToArray(); foreach (var sampleItem in sampleItems) { var videoid = sampleItem.GetVideoId(); Assert.IsTrue(videoid.StartsWith("sm") || videoid.StartsWith("so") || videoid.StartsWith("nm")); System.Diagnostics.Debug.WriteLine(videoid); var title = sampleItem.GetRankTrimmingTitle(); System.Diagnostics.Debug.WriteLine(title); var moreData = sampleItem.GetMoreData(); Assert.IsNotNull(moreData.Title); Assert.IsTrue(moreData.Length > TimeSpan.Zero); Assert.IsTrue(moreData.WatchCount >= 0); Assert.IsTrue(moreData.CommentCount >= 0); Assert.IsTrue(moreData.MylistCount >= 0); } }
static async Task <RssVideoResponse> Internal_GetHotTopicRankingRssAsync(RankingTerm term, int page) { if (!IsHotTopicAcceptTerm(term)) { throw new ArgumentOutOfRangeException($"out of range {nameof(RankingTerm)}. accept with {string.Join(" or ", Constants.HotTopicAccepteRankingTerms)}."); } if (page == 0 || page > Constants.MaxPageHotTopic) { throw new ArgumentOutOfRangeException($"out of range {nameof(page)}. inside btw from 1 to {Constants.MaxPageHotTopic} in with tag."); } var dict = new Dictionary <string, string>() { { "rss", "2.0" }, { "lang", "ja-jp" } }; dict.Add(nameof(term), term.GetDescription()); if (page != 1) { dict.Add(nameof(page), page.ToString()); } try { return(await VideoRssContentHelper.GetRssVideoResponseAsync( $"{Constants.NiconicoRankingHotTopicDomain}?{HttpQueryExtention.DictionaryToQuery(dict)}" )); } catch { return(new RssVideoResponse() { IsOK = false, Items = new List <RssVideoData>() }); } }
public Task <RssVideoResponse> GetRankingGenreWithTagAsync(RankingGenre genre, string tag, RankingTerm term, int page = 1) { return(_niconicoSession.ToolkitContext.Video.Ranking.GetRankingRssAsync(genre, tag, term, page)); }
public async Task RankingHotTopicFailTestAsync(RankingTerm term, int page) { await Assert.ThrowsExceptionAsync <ArgumentOutOfRangeException>(async() => await NiconicoRanking.GetRankingRssAsync(RankingGenre.HotTopic, term: term, page: page) ); }
public static bool IsGenreWithTagAcceptTerm(RankingTerm term) { return(Constants.GenreWithTagAccepteRankingTerms.Any(x => x == term)); }
public static bool IsHotTopicAcceptTerm(RankingTerm term) { return(Constants.HotTopicAccepteRankingTerms.Any(x => x == term)); }
static async Task <RssVideoResponse> Internal_GetHotTopicRankingRssWithKeyAsync(string key, RankingTerm term) { if (!IsHotTopicAcceptTerm(term)) { throw new ArgumentOutOfRangeException($"out of range {nameof(RankingTerm)}. accept with {string.Join(" or ", Constants.HotTopicAccepteRankingTerms)}."); } var dict = new Dictionary <string, string>() { { "rss", "2.0" }, { "lang", "ja-jp" } }; dict.Add(nameof(key), Uri.EscapeDataString(key)); dict.Add(nameof(term), term.GetDescription()); try { return(await VideoRssContentHelper.GetRssVideoResponseAsync( $"{Constants.NiconicoRankingHotTopicDomain}?{HttpQueryExtention.DictionaryToQuery(dict)}" )); } catch { return(new RssVideoResponse() { IsOK = false, Items = new List <RssVideoData>() }); } }
/// <summary> /// /// </summary> /// <param name="genre"></param> /// <param name="tag"></param> /// <param name="term"></param> /// <param name="page"></param> /// <returns></returns> public static async Task <RssVideoResponse> GetRankingRssAsync(RankingGenre genre, string tag = null, RankingTerm term = RankingTerm.Hour, int page = 1) { if (genre != RankingGenre.HotTopic) { if (string.IsNullOrEmpty(tag)) { return(await Internal_GetRankingRssAsync(genre, term, page)); } else { return(await Internal_GetRankingRssWithTagAsync(genre, tag, term, page)); } } else { if (string.IsNullOrEmpty(tag)) { return(await Internal_GetHotTopicRankingRssAsync(term, page)); } else { return(await Internal_GetHotTopicRankingRssWithKeyAsync(tag, term)); } } }
public async Task <Mntone.Nico2.RssVideoResponse> GetRankingGenreWithTagAsync(RankingGenre genre, string tag, RankingTerm term, int page = 1) { return(await NiconicoRanking.GetRankingRssAsync(genre, tag, term, page)); }