海外版2ちゃんねるReddit APIを調べてみた
海外版2ちゃんねるとも称される巨大掲示板あるいはソーシャルニュースサイトRedditからコンテンツを取得して自動投稿するWordPressプラグインを開発しています。
で、開発に当たり今日はRedditのAPIを調べてみました。
Reddit APIのドキュメント
https://www.reddit.com/dev/api/
必要なのは以下のとおりです。
・キーワードで掲示板を検索する機能
・掲示板内のスレッドをキーワードで検索する機能
・スレッドからコメントを抽出する機能
色々と調べてみるとこの3つの機能についてはOAuth認証も不要。OAuth認証に必要なAPIキーは不要らしい。
あとあと必要になるかもしれないが、とりあえず上記の機能については不要。
キーワードで掲示板を検索する機能
「キーワードで掲示板を検索する機能」については以下のエンドポイントを使います。
https://www.reddit.com/subreddits/search.json
ここにパラメータを指定します。
使用できるパラメータは色々とありますが2つだけ覚えておけばよし。
「q(キーワード)」と「limit(取得件数:最大100件)」です。
例えば、キーワードが「日本」だった場合は以下のようにします。
https://www.reddit.com/subreddits/search.json?q=日本&limit=100
GET形式でアクセスができるのでこのURLをブラウザにコピペして開くとjsonデータが返ってきます。
因みにRedditのURLは法則性があって、エンドポイントの最後に「.json」でJSON形式に。「.rss」でRSSフィードが返ってきます。
便利ですね!
json形式だと人間が読めないので、人間が読める形でデータを取得したい場合はこうします。
https://www.reddit.com/subreddits/search?q=日本&limit=100
掲示板内のスレッドをキーワードで検索する機能
「掲示板内のスレッドをキーワードで検索する機能」については以下のエンドポイントを使います。
https://www.reddit.com/r/(subreddit名)/search.json
「(subreddit名)」にsubreddit名を入れる必要があります。
因みにsubredditというのは掲示板と同義となります。
なので予めsubreddit名を知っておく必要があります。
例えば、ニュー速RのReddit版は「newsokur」なので以下のようになります。
https://www.reddit.com/r/newsokur/search.json
ここにパラメータを指定します。
さきほどと同様に「q(キーワード)」と「limit(取得件数:最大100件)」を指定します。
例えば、キーワードが「コロナ」だった場合は以下のようにします。
https://www.reddit.com/r/newsokur/search.json?q=コロナ&limit100
json形式だと人間が読めないので、人間が読める形でデータを取得したい場合はこうします。
https://www.reddit.com/r/newsokur/search?q=コロナ&limit100
とりあえず日本語の2バイト文字をurl_encodeしなくてもそのまま使えるようです。
スレッドからコメントを抽出する機能
最後に「スレッドからコメントを抽出する機能」については以下のエンドポイントを使います。
https://www.reddit.com/r/(subreddit名)/comments/(スレID)/(スレタイトル)/.json
「(スレID)」と「(スレタイトル)」については前処理で取得しておくわけですが、今は単発のテストなので予め調べておきます。
2020年6月2日現在「ブルーインパルス再飛行も検討 コロナ対応の医療従事者へ感謝 | NHKニュース」という記事にコメントが11件付いているのでそれを取得するとします。
そうするとこうなります。
json形式だと人間が読めないので、人間が読める形でデータを取得したい場合はこうします。
特徴としては「(スレタイトル)」はurl_encodeされている点です。
これだけ分かればテスト画面を作ることができます。
この記事が気に入ったらサポートをしてみませんか?