oschina 提供的OPENAPI 中 /action/openapi/news_list API中如何获取URL

砼砼 发布于 06/30 17:27
阅读 111
收藏 0

开源之夏第三届火热来袭,高校学生参与赢万元奖金!>>>

获取新闻列表拿到的是这样的数组

{
    "newslist": [
        {
            "id": 26754, 
            "author": "test33", 
            "pubDate": "2013-09-17 16:49:50.0", 
            "title": "asdfa", 
            "authorid": 253469, 
            "commentCount": 0, 
            "type": 4
        }
    ], 
    "notice": {
        "replyCount": 0, 
        "msgCount": 0, 
        "fansCount": 0, 
        "referCount": 0
    }
}

并没有包含URL,导致新闻可以自行拼接URL,对于每日一搏或者软件更新这些信息,就只有去读取详细的文章内容再获取到URL。有什么简单的方式可以直接获取URL减少一次API调用吗?

以下是我获取新闻的逻辑

// 获取新闻
function get_news ()
{
  if ( !is_array ( $news_data -> news ) || count ( $news_data -> news ) < 10 ) {
    $news_data -> news = [];
    for ( $i = 1 ; $i <= 3 ; $i ++) { // 一次循环最多能取20条数据
      $data = json_decode ( file_get_contents ( 'https://www.oschina.net/action/openapi/news_list?catalog=1&pageSize=100&dataType=json&access_token=' . $news_data -> token -> access_token . '&pageIndex=' . $i ));
      $news_data -> news = array_merge ( $news_data -> news ,   $data -> newslist );
    }
  }
  $index = array_rand ( $news_data -> news );
  $data = $news_data -> news [ $index ];
  switch ( $data -> type ) {
    case 4 :
      $data -> url = 'https://www.oschina.net/news/' . $data -> id ;
      break ;
    default :
      $data = json_decode ( file_get_contents ( 'https://www.oschina.net/action/openapi/news_detail?dataType=json&access_token=' . $news_data -> token -> access_token . '&id=' .   $data -> id ));
  }
 
  return $data ;
}

效果就是这种,在企业微信中机器人跟进通知的时候,带上一条随机的咨询,有兴趣的标题可以直接点进去看

 

加载中
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部