redditの簡単なbotを作ってみる

海外最大手のフォーラムサイト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認証に引っかかる気もします・・・。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)