potpro (ぽとぷろ)
Full-stuck engineer(Not Full-stack)
JS/PHP/Go/Docker/Nginxなど。技術または趣味寄りの発信ブログです。
全 85 記事Redditの簡単なbotを作ってみる
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"でモジュールインストール完了。簡単です。
subreddit注目の上位5つのタイトルとスコアを取得
japanのsubredditを取得してみる。
# -*- 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
結果:
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
これだけで取得できます。非常に簡単です。
submit(テキストポストの投稿)を行う
# -*- coding: utf-8 -*-
import praw
user_agent = ("Python bots")
r = praw.Reddit(user_agent=user_agent)
r.login('username', 'password') #ユーザー名とパスワードを入力
r.submit('投稿したいsubreddit', 'タイトル', text="本文")
実際に投稿も簡単にできます。投稿にはアカウント必須です。 しかし、redditは投稿数やカルマで監視してbotかどうかを判断されるため、 作り立てで投稿もしていないアカウントだとほぼcapture認証を食らいます。
ユーザー名パスワードをそのまま書くのはどうよって場合は、OAuth認証も可能なようです。
cronなんかを使えば定期的な自動投稿なんかが可能となると思います。・・・が、監視しておかないとcapture認証に引っかかる気もします・・・。