【node.js+Qiita API】タグを使った記事検索 #Granvalley
1.はじめに
皆さんこんにちは。
グランバレイ社員兼釣りビギナーのJim2@GVです。
今回は、タイトルの通りnode.jsとQiita APIを使ってQiita記事を自動でタグ検索する方法を紹介します。
気になる方はぜひ見ていってくださいね!
実行環境
Windows10 64bit
node 12.18.0
npm 6.14.4
2.プログラム
まずはプログラムの全容です。
const request = require('request');
const QIITA_TOKEN = 取得したアクセストークン;
const URL = 'https://qiita.com/api/v2/items?'
+ 'page=1'
+ '&per_page=20'
+ '&query=tag%3APython+OR+tag%3Anode'
+ '+likes_count%3A%3E5';
request.get({
url: URL,
headers: {
'Content-type': 'application/json',
'Authorization': 'Bearer ' + QIITA_TOKEN
},
json: true
}, function (err, req, result) {
const qiita_json = result.map(function (data) {
return { "title": data.title, "url": data.url, "tag": JSON.stringify(data.tags) };
});
console.log(qiita_json);
});
最新の投稿から、指定のタグかつLGTM数が5以上の記事を20件取得するプログラムとなっています。
Qiita APIを利用するには、事前にアクセストークンの取得が必要ですが、次項以降でトークンの取得方法から紹介していきます!
2.Qiita APIのアクセストークン取得
アクセストークンはQiitaにユーザー登録をすると取得することができるようになります。
ユーザー登録の後、Qiitaサイトの右上のメニューから「設定」を選択します。
続いて「アプリケーション」メニューの「新しくトークンを発行する」を選択します。
今回は記事の情報を取得することができれば良いので、スコープは「read_qiita」のみを選択し「発行する」をクリックします。
これでアクセストークンを取得することができます!
** 注意 **
このアクセストークンは再び表示することができないので
必ずどこかに控えておきましょう!
3.Qiita APIでの記事検索方法
アクセストークンの準備はできたので、続いてはQiita APIの使い方について紹介します。
Qiita APIでは「GET」「POST」「PUT」「PATCH」「DELETE」という5種類のリクエストを行うことができます。
今回使用するのは「GET」リクエストです。
他の人が投稿した内容を取得するには以下のURLへリクエストを行います。
https://qiita.com/api/v2/items?page=1&per_page=20
# page : ページ番号
# per_page : 取得記事数
これだけですと、最近投稿されたすべての記事から20件取得されます。
なので、更に情報を付加して絞り込みを行います!
&query=tag%3APython+OR+tag%3Anode+likes_count%3A%3E5
先程のURLの後ろに「&query= ・・・」を付加すると、条件に合った記事の中から情報を取得できるようになります。
今回は、「tag」と「likes_count」という条件を付加しています。
「tag」はそのままタグのことですが、「likes_count」はLGTMの件数を指しています。
また、途中の「%3A」は「:」を、「%3E」は「>」を表しています。
これはURLエスケープのためにこのような表記にしています。
その他のURLエンコードは以下のリンクを参照ください。
このように条件を指定したURLに対しリクエストを行うことで、自分の読みたい記事を取得することができます!
4.GETリクエストで取得できる情報について
前項で紹介したURLに対してGETリクエストを行うと、記事1件に対し以下のような情報をJSON形式で取得することができます。
HTTP/1.1 200
Content-Type: application/json
[
{
"rendered_body": "<h1>Example</h1>",
"body": "# Example",
"coediting": false,
"comments_count": 100,
"created_at": "2000-01-01T00:00:00+00:00",
"group": {
"created_at": "2000-01-01T00:00:00+00:00",
"id": 1,
"name": "Dev",
"private": false,
"updated_at": "2000-01-01T00:00:00+00:00",
・
・
・
"items_count": 300,
"linkedin_id": "qiita",
"location": "Tokyo, Japan",
"name": "Qiita キータ",
"organization": "Increments Inc",
"permanent_id": 1,
"profile_image_url": "https://s3-ap-northeast-1.amazonaws.com/qiita-image-store/0/88/ccf90b557a406157dbb9d2d7e543dae384dbb561/large.png?1575443439",
"team_only": false,
"twitter_screen_name": "qiita",
"website_url": "https://qiita.com"
},
"page_views_count": 100
}
]
長いので省略してしまいましたが、詳細は公式ドキュメントを参照してみてください!
このように多くの情報を取得することができるので、コンソールなどに出力する場合は、以下のようにタイトルやURLなどに絞って表示させると見やすいです!
# result : GETリクエストで取得したJSON形式の記事データ
const qiita_json = result.map(function (data) {
return { "title": JSON.stringify(data.title), "url": JSON.stringify(data.url), "tag": JSON.stringify(data.tags) };
});
console.log(qiita_json);
5.まとめ
node.jsとQiita APIを使って、Qiita記事を自動でタグ検索する方法の紹介でしたが、いかがでしたか?
Qiita APIを利用すれば、自分の見たい記事を効率よく探すことができてとても便利ですね。
皆さんもぜひ試してみてください!
今回の記事が皆様のお役にたてばうれしいです。
最後までお読みいただきありがとうございました!
※グランバレイにご興味のある方はこちらをご覧ください!
この記事が気に入ったらサポートをしてみませんか?