海外最大手のフォーラムサイトredditにも、最近大量に日本人の人口が増えました。
redditは最大手のフォーラムサイトのくせにオープンソースであり、スパム以外のソースを全部公開しているという大盤振る舞い。
APIも公開しているので、そのAPIに対するラッパー、ソフトウェア、OAuthアプリが大量にあるのです。
なので、botを作るくらいなら簡単に出来るようです。
ここを見ても、かなりの数の言語に対応したラッパーが作られていたりします。
なんというかすごくオープンな感じです。もっと日本で流行ってほしいですな。
その中でも今回は代表的なReddit APIラッパーであるPRAWを使用して作っていきます。
PRAWはpythonで動作するreddit APIラッパーです。かなり簡単にAPIを操作してコメント・submit・subredditの取得・subredditの立ち上げ・UPVOTE/DOWNVOTEなど大体のことができます。
pythonパッケージ管理ソフトpipが導入されていればコンソールから"pip install praw"でモジュールインストール完了。簡単です。
1.subreddit注目の上位5つのタイトルとスコアを取得
japanのsubredditを取得してみる。
[python]
–– coding: utf-8 ––
import praw
user agentを設定します。多分何にしても問題ないです
user_agent = ("Python bots")
r = praw.Reddit(user_agent=user_agent)
subreddit = r.get_subreddit("japan")
for submission in subreddit.get_hot(limit = 5):
print "Title: ", submission.title
print "Score: ", submission.score
[/python]
結果:
C:\>python C:\Python27\test.py Title: European products not available in Japan (for a present)? Score: 13 Title: For non-language teachers, how did you end up in Japan, and what do you do for a living? Score: 8 Title: Prime Minister Shinzo Abe says Japan will provide 4 billion dollars in a id for global efforts to promote disaster management over the next 4 years. Score: 6 Title: Japan budgets over $15 million for overseas universities in soft power p ush Score: 44 Title: Extended Hokuriku shinkansen line goes into service Score: 7
これだけで取得できます。非常に簡単です。
2.submit(テキストポストの投稿)を行う
実際に投稿も簡単にできます。投稿にはアカウント必須です。
しかし、redditは投稿数やカルマで監視してbotかどうかを判断されるため、作り立てで投稿もしていないアカウントだとほぼcapture認証を食らいます。
[python]
–– coding: utf-8 ––
import praw
user_agent = ("Python bots")
r = praw.Reddit(user_agent=user_agent)
r.login(‘username’, ‘password’) #ユーザー名とパスワードを入力
r.submit(‘投稿したいsubreddit’, ‘タイトル’, text="本文")
[/python]
こんな感じです。こちらも簡単。
ユーザー名パスワードをそのまま書くのはどうよって場合は、OAuth認証も可能なようです。
cronなんかを使えば定期的な自動投稿なんかが可能となると思います。・・・が、監視しておかないとcapture認証に引っかかる気もします・・・。