The jonki

呼ばれて飛び出てじょじょじょじょーんき

bottonZ: はてなの最近のニューエントリををTwitterに投稿

また作りましたw
はてなのニューエントリから適当に引っ張ってきて投稿する。
RSSで取ってきても良かったんだけど、ブクマしてるユーザ数を取りたかったためhtmlをパース。
BeautifulSoupで何ができて、何ができないのか、だんだん分かってきたような気がする。
にしても30分ごとの投稿がスリープ関数でやってるんだけど、果てしなくダサイよな。
普通どうやるんだろ。シェルスクリプトでも動かしてんのかな。

ちなみにbottonXのときもそうですが、importしてるtwitter.pyの140文字制限の部分はコメントアウトしてます。自分のはヴァージョン0.5で1050,1051行めの例外処理のトコ。



こんな感じで表示される。


#!/usr/bin/python
#-*- coding: utf-8 -*-

#@author Junki OHMURA
#@date 2009/02/12

import urllib2
from BeautifulSoup import BeautifulSoup
import twitter
import random
import time

url = 'http://b.hatena.ne.jp/hotentry'

def getKigi(_soup):
_kigi = []
for category, users, entry in zip(
_soup.findAll(attrs={'class': 'category'}),
_soup.findAll(attrs={'class': 'users'}),
_soup.findAll(attrs={'class': 'entry-body'}) ):
twt = ''
# twt = '[' + category.find('a').string + ']' #カテゴリ名
twt += '[' + users.find('a').string + ']' #ユーザ数
# print entry.find('a') #リンクタグごとタイトル表示
twt += entry.find('a').string #日記タイトル
twt += ' ' + entry.find('a')['href'] #日記タイトルのURL
_kigi.append(twt)

return _kigi


while(2>1):
html = urllib2.urlopen(url).read()
soup = BeautifulSoup(html)
kigi = getKigi(soup)
randKigi = random.randint(0,len(kigi)-1)

print kigi[randKigi]
tapi = twitter.Api(username=<ユーザネーム>, password=<パスワード>)
status = tapi.PostUpdate(kigi[randKigi])
time.sleep(1800) #単位は秒、1800秒=30分