Home > Beautifulsoup | python | twitter > がんばれ! アドミンくん の新作情報を知らせるTwitterBotを作った

がんばれ! アドミンくん の新作情報を知らせるTwitterBotを作った

@ITで連載中の4コマ漫画がんばれ! アドミンくんは、システム管理者のありがちネタをユーモラスに描いており、とっても面白く、一服の清涼剤という感じで、第一話から欠かさず読んでいます。
今回、がんばれ! アドミンくんの新着を見逃さないように、新着情報を知らせるTwitterBotを作成しました。
http://twitter.com/ad_min_kun
アカウントがadmin_kunでなく、ad_min_kunと細切れになっているのは、下のようにadminという文字は使えないようなので。

image01

がんばれ!アドミンくん はRSSを吐き出していない為(YahooPipes等の外部サービスでRSS化しているものは見かけます)、スクレイピングで対応しました。例によってコードを晒します。
Python2.4と2.5で動作確認をしています。スクレイピングにBeautifulSoupを、Twitter投稿にpython-twitter(依存関係でsimplejsonも必要)を使用しています。

# coding: utf-8
import urllib2
from twitter import Api as TwitterApi
from BeautifulSoup import BeautifulSoup

def file_open(f):
    r = open(f,'r')
    latest_number = r.readline()
    r.close()
    return latest_number

def parse_html(u):
    soup = BeautifulSoup(urllib2.urlopen(u))
    data = []
    for node in soup.findAll('td', {'colspan': '3'}):
        for tag in node('table', {'width': '100%', 'cellpadding': '3', 'border': '0'}):
            for atag in tag('a'):
                data.append([atag['href'], atag.string])
    data.reverse()
    return data

def main(data, latest_number):
    for i in data:
        entry_link, entry_title = i[0], i[1]
        e = entry_link.split('/')
        entry_number = e[4]
        if latest_number < entry_number:
            api = TwitterApi(TWITTER_USERNAME, TWITTER_PASSWORD)
            post = u'%s %s%s' % (entry_title, DOMAIN, entry_link)
            api.PostUpdate(post)
            latest_number = entry_number
    return latest_number

def file_close(f, l):
    w = open(f, 'w')
    w.write(str(l))
    w.close()

if __name__ == '__main__':
    FILE = 'adminkun_status.txt'
    TWITTER_USERNAME = 'TWITTER_ACCOUNT'
    TWITTER_PASSWORD = 'PASSWORD'
    URL = 'http://www.atmarkit.co.jp/fwin2k/itpropower/admin-kun/index/index.html'
    DOMAIN = 'http://www.atmarkit.co.jp'
    latest_number = file_open(FILE)
    data = parse_html(URL)
    latest_number = main(data, latest_number)
    file_close(FILE, latest_number)

実は前回のBotはこれの副産物でした。自分にとってTwitterは、すっかり情報ハブになっているので、有益になりうるTwitterBot候補があれば、ちょくちょく作っていこうかと思います。

Comments:4

doya 09-01-15 (木) 21:48

この漫画初めて知りましたー。連載数がすごいですねw

aoshiman 09-01-15 (木) 21:57

コメントありがとうございます。私がこういう仕事やりはじめてからすぐに連載が始まって
よく読んでいた思い出があります。アドミンくんと一緒に成長?しているつもりですw

naokits 09-08-18 (火) 23:14

こんにちは。こちらなにわ電機 総務課のBOT希望しますw。あと、相談したい事があるので、Twitterの「naokits」をfollowしておいていただけないでしょうか?

aoshiman 09-08-19 (水) 21:24

コメントありがとうございます!@naokitsをfollowしました。

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://aoshiman.net/weblog/2009/01/07/adminkun-twitter/trackback/
Listed below are links to weblogs that reference
がんばれ! アドミンくん の新作情報を知らせるTwitterBotを作った from “南船北馬”

Home > Beautifulsoup | python | twitter > がんばれ! アドミンくん の新作情報を知らせるTwitterBotを作った

Search
Feeds
Meta

Return to page top