NewsApiでカテゴリ別にニュースを取得する
政治カテゴリが無いのが残念。
成果物
情報源
前回まで
私としては以下のような設定でニュースを取得したかった。が、できない……。30件しか取れない。「政治」カテゴリがない。from
パラメータがない。
request() { NEWS_API_KEY="${NEWS_API_KEY:-"`get_news_api_key`"}" curl https://newsapi.org/v2/top-headlines -G \ -d country=jp \ -d pageSize=100 \ -d categoly=政治 \ -d from=`date +"%Y-%m-%d"` \ -H "X-Api-Key:${NEWS_API_KEY}" }
/v2/everything
を使うと国を指定できない……。from
パラメータはこちらにだけある。
APIは3種類ある。
コード
get_news_categoly.sh
get_news_api_key() { cat "${HOME}/root/work/record/pc/account/newsapikey"; } get_news_api_url() { local url="https://newsapi.org/v2/top-headlines" url+="?country=jp" url+="&pageSize=100" [ -n "$1" ] && url+="&category=${1}" echo "$url" } get_news_categolies() { echo "general technology science business health"; } #news_categolies() { echo "general technology science business health entertainment sports"; } #news_categolies() { echo "business entertainment general health science sports technology"; } request() { curl ${1} -H "X-Api-Key:${NEWS_API_KEY:-"`get_news_api_key`"}"; } format_json() { local name="_`basename "$1"`" local dir="`dirname "$1"`" cat "$1" | python3 -c 'import sys,json;print(json.dumps(json.loads(sys.stdin.read()),indent=4,ensure_ascii=False))' > "${dir%/}/${name}" } get_news() { local now="`date +"%Y%m%d%H%M%S"`" for categoly in `get_news_categolies`; do local url="`get_news_api_url ${categoly}`" request "${url}" > "${now}_${categoly}.json" format_json > "_${now}_${categoly}.json" sleep 1; done } get_news
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13
- bash 4.4.12(1)-release ※
- SQLite 3.29.0 ※
- MeCab 0.996ユーザ辞書
$ uname -a Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux