なんとなんと、ALISのAPIが公開されましたね!ALIS SEARCHも公式に認めてもらえまして、とっても嬉しいです。石井CTOの記事にご紹介いただきまして、ありがとうございました。
APIってなに?という記事はすでにいくつか挙がっているようなので、本記事では具体的な使い方を解説したいと思います。
使用言語はPythonです。Jupyter notebookという、ブラウザ上でPythonを実行できるソフトを使って解説します。
まず、APIのダウンロードとデータの取り扱いに必要なライブラリをインポートします。
次に、新着記事のデータを取得するAPIを呼び出してみましょう。
[2]では、APIを呼び出すURLをapiという名前の変数に与えています。なお、[2]は、上の画像の左端にIn[2]とあるのを指しています。
[3]では、APIをWEB上から取得(リクエスト)し、urlという名前の変数に与えています。
[4]では、url変数から、JSONというデータの形式でAPIからデータを読み、articlesという名前の変数に与えています。
[5]では、articlesを画面上に出力します。
こんな感じです。
新着記事の情報が並びます。よく見ると、下のような構文になっています。(ALISのAPI情報から抜粋)
"article_id"は、記事のIDです。記事のURLをよく見ると、最後に「3bNEde67zWzO」のような英数字がついていますよね。それです。
"user_id"はユーザーIDです。私だと「fukurou」ですね。ペンギンですが。
"title"は記事のタイトルです。
"overview"は記事の概要です。アイキャッチの下に書かれている文字ですね。
"eye_catch_url"はアイキャッチ画像のURLです。
"created_at"は記事が作成された時刻、だと思います。
そのほかにも、"published_at"は記事が投稿された時刻、"sort_key"は記事が作成された時刻をより精度高く表示、"status"は記事が公開状態かどうかを表しています。
先ほどの[5]でのコマンドでは、新着記事が全て出力されてしまうので、スクロールが大変です。一つだけ取り出してみてみましょう。
articles['Items'][0]とすると、新着記事の1番目の情報のみを表示することができます。みやすくなりましたね!(Pythonでは0が1番目を表します。ややこしいですが。)
なお、今回のAPIで取得した記事の総数は以下のように出力できます。
20記事取れましたね。なお、ALISのAPI情報を見ると、それ以上の記事を取得する方法も載っています。
また、[6]で出力したデータから"published_at"の情報を取得するにはこうします。
1530019758ってなに?となりますね。これはUNIX時間といって、1970年1月1日午前0時0分0秒からの経過秒数を表しています。[9]はそれを西暦に直すコマンドです。これで、記事が投稿された時刻が分かりましたね!
次に、ちょっと応用編です。
[4]で取得したリスト(articles)から、”10時台に投稿された”記事のみをフィルタリングしましょう。
[10]では、[9]と同様に、投稿時刻を取得しています。記事を書いていて気づきましたが、この値は使いません。
[11]では、10時に投稿された記事のIDと、その記事の執筆者のIDを同時に取得し、articles_10pm変数に与えています。Pythonではバックスラッシュ"\"は1行のコードを改行して記述するときに使いますので、[11]の2行目から下は実際には1行です。if ... hour == 22とあるので、なんとなく、22時に一致する記事を抜き出しているんだなとお分かりいただけると思います。
[12]では、それを表示しています。
10時に投稿された記事の、現時点での「いいね」の数を取得してみましょう。
api変数に、「いいね」を取得するURLを与え、
url変数にapiのURLにリクエストした結果を与え、
likes変数に「いいね」の値を与えます。
time.sleep(1)というのは、apiの取得に1秒間休止時間を設けるという意味です。ノータイムでAPIにアクセスしてしまうと、ALISのサーバーに負荷を与えてしまいますので注意が必要です。
APIの公開と、公式から「自由に使っていいよ」という言葉があったことは、これまで勝手に外部開発していた身からすると、すごく嬉しい出来事でした。
これは解説記事を書かねば!と、半ば使命感にかられ、早速記事を書かせていただきました。
本記事をみて、APIを使うとは具体的にどういうことなのかご理解いただけましたら幸いです。Python使ってみよーかなと思っていただけると、さらに嬉しいです。
腕に覚えのある方は、是非ハッカー部へ!
お待ちしております。
ホーさん