見出し画像

海外版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

海外版2ちゃんねるReddit APIを調べてみた01

掲示板内のスレッドをキーワードで検索する機能

「掲示板内のスレッドをキーワードで検索する機能」については以下のエンドポイントを使います。

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ちゃんねるReddit APIを調べてみた02

とりあえず日本語の2バイト文字をurl_encodeしなくてもそのまま使えるようです。

スレッドからコメントを抽出する機能

最後に「スレッドからコメントを抽出する機能」については以下のエンドポイントを使います。

https://www.reddit.com/r/(subreddit名)/comments/(スレID)/(スレタイトル)/.json

「(スレID)」と「(スレタイトル)」については前処理で取得しておくわけですが、今は単発のテストなので予め調べておきます。
2020年6月2日現在「ブルーインパルス再飛行も検討 コロナ対応の医療従事者へ感謝 | NHKニュース」という記事にコメントが11件付いているのでそれを取得するとします。

そうするとこうなります。

https://www.reddit.com/r/newsokur/comments/gv4gqx/%E3%83%96%E3%83%AB%E3%83%BC%E3%82%A4%E3%83%B3%E3%83%91%E3%83%AB%E3%82%B9%E5%86%8D%E9%A3%9B%E8%A1%8C%E3%82%82%E6%A4%9C%E8%A8%8E_%E3%82%B3%E3%83%AD%E3%83%8A%E5%AF%BE%E5%BF%9C%E3%81%AE%E5%8C%BB%E7%99%82%E5%BE%93%E4%BA%8B%E8%80%85%E3%81%B8%E6%84%9F%E8%AC%9D_nhk%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9/.json

json形式だと人間が読めないので、人間が読める形でデータを取得したい場合はこうします。

https://www.reddit.com/r/newsokur/comments/gv4gqx/%E3%83%96%E3%83%AB%E3%83%BC%E3%82%A4%E3%83%B3%E3%83%91%E3%83%AB%E3%82%B9%E5%86%8D%E9%A3%9B%E8%A1%8C%E3%82%82%E6%A4%9C%E8%A8%8E_%E3%82%B3%E3%83%AD%E3%83%8A%E5%AF%BE%E5%BF%9C%E3%81%AE%E5%8C%BB%E7%99%82%E5%BE%93%E4%BA%8B%E8%80%85%E3%81%B8%E6%84%9F%E8%AC%9D_nhk%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9/

海外版2ちゃんねるReddit APIを調べてみた03

特徴としては「(スレタイトル)」はurl_encodeされている点です。

これだけ分かればテスト画面を作ることができます。

この記事が気に入ったらサポートをしてみませんか?