/// <summary> /// 随机获取笑话 /// </summary> /// <returns>随机笑话数据集合</returns> public JuHeResponse <JokesData> RandomJokes() { string url = string.Format("http://v.juhe.cn/joke/randJoke.php?key={0}", JuHeOptions.AppKey); JuHeResponse <JokesData> jokesDataResult = SimulateRequest.HttpGet <JuHeResponse <JokesData> >(url); return(jokesDataResult); }
/// <summary> /// 查找最新笑话数据 /// </summary> /// <param name="pageIndex">当前页数,默认1</param> /// <param name="pageSize">每次返回条数,默认1,最大20</param> /// <returns>最新笑话数据集合</returns> public JuHeResponse <JokesData> SearchNewestJokes(int pageIndex = 1, int pageSize = 20) { string url = string.Format("http://v.juhe.cn/joke/content/text.php?key={0}&page={1}&pagesize={2}", JuHeOptions.AppKey, pageIndex, pageSize); JuHeResponse <JokesData> jokesDataResult = SimulateRequest.HttpGet <JuHeResponse <JokesData> >(url); return(jokesDataResult); }
/// <summary> /// 定时任务执行的方法 /// </summary> /// <param name="console">控制台输出</param> public override void ExecMethod(RichTextConsole console) { console.Info($"执行{TimerName}定时任务开始...", isWriteLog: false); totalSearch++; if (totalSearch > 50)//总共查找次数达到50重新从第一页开始 { totalSearch = 1; pageIndex = 1; } JuHeResponse <JokesData> jokeResult = jokeProvider.SearchNewestJokes(pageIndex); if (jokeResult.error_code == 0) { List <JokeInfo> jokeList = jokeResult.result.data; List <JokeInfoDto> jokeDtoList = jokeList.Select(joke => new JokeInfoDto { Id = joke.hashId, Content = joke.content, CreateTime = TimeHelper.GetDateTime(joke.unixtime), UpdateTime = joke.updatetime }).ToList(); int saveRow = jokeInfoManage.SaveRangeJokes(jokeDtoList); if (saveRow > 0) { console.Info($"当前页码:{pageIndex},保存最新笑话数据成功,共保存{saveRow}条记录", isWriteLog: false); if (pageIndex > 1) { pageIndex++; } } else { console.Warn($"当前页码:{pageIndex},保存最新笑话数据0条,可能远程没有更新笑话", isWriteLog: false); nonDataIndex++; if (nonDataIndex > 2) { pageIndex = pageIndex * 2; nonDataIndex = 0;//快速双倍翻页后,累计没有保存到数据的次数清0 } else { pageIndex++; } } } else { console.Error($"定时获取最新笑话数据储存:error_code ={jokeResult.error_code},reason ={jokeResult.reason}"); } console.Info($"执行{TimerName}定时任务结束", isWriteLog: false); }
/// <summary> /// 查找指定时间前发布的笑话数据 /// </summary> /// <param name="splitTime">指定分隔时间</param> /// <param name="timeFilter">数据排列方式,默认指定时间之后</param> /// <param name="pageIndex">当前页数,默认1</param> /// <param name="pageSize">每次返回条数,默认1,最大20</param> /// <returns>指定时间前发布的笑话数据集合</returns> public JuHeResponse <JokesData> SearchTimeJokes(DateTime splitTime, JuHeTimeFilter timeFilter = JuHeTimeFilter.After, int pageIndex = 1, int pageSize = 20) { string sort = "asc"; if (timeFilter == JuHeTimeFilter.Before)//聚合的排序与我们的习惯相反 { sort = "desc"; } long time = TimeHelper.GetTime(splitTime); string url = string.Format("http://v.juhe.cn/joke/content/list.php?key={0}&page={1}&pagesize={2}&sort={3}&time={4}", JuHeOptions.AppKey, pageIndex, pageSize, sort, time); JuHeResponse <JokesData> jokesDataResult = SimulateRequest.HttpGet <JuHeResponse <JokesData> >(url); return(jokesDataResult); }