java-jaのopml作った
いつだったか、id:daisuke-mがjava-jaのopmlってないの?みたいな話をしてたのをふと思い出したので、現実逃避して作ってみましたよ。
これでjava-jaストーカーの皆さんも安心ですね!
tumblrのOPML
(右クリックで保存してくださいね)
java-ja wikiの賛同者のページからURLを拾ってきて、livedoor Reader Feed Discover APIを利用してopmlを吐くpythonスクリプトを書いて作ってます。
java-jaなのにpythonってwww
livedoor Reader Feed Discover APIの仕様で、購読者数の少ないtwitterやtumblrのFeedは含まれてないです。あとは自力でやってくださいw。
スクリプトはこんなんです。もちろん、添削大歓迎です。
# -*- coding: utf-8 -*- import string, re, urllib, urllib2 from BeautifulSoup import BeautifulSoup def makeOpml(urlList,filename ,category): url = 'http://rpc.reader.livedoor.com/feed/discover' links = "" postdata = {} postdata['format'] = 'opml' postdata['links'] = "\n".join(urlList) params = urllib.urlencode(postdata) up = urllib.urlopen(url, params) opml = up.readlines() f = open("%s.xml"% filename, 'w') h = open("%s.html"% filename, 'w') h.writelines('<html><head><title>%s</title></head><body><h1>%s</h1>' % (category,category)) for line in opml: f.writelines(line) if line.startswith('<outline title="Subscriptions">'): f.writelines('<outline title="%s">\n' % category ) if line.startswith('</outline>'): f.writelines('</outline>\n') pt = re.compile('title="(.+)" html') gt = pt.search(line) ph = re.compile('xmlUrl="(.+)"') gh = ph.search(line) if gt and gh : h.writelines('<a href="%s">%s</a><br/>\n' % (gh.group(1) ,gt.group(1))) h.writelines('</body></html>') h.close() f.close() url = 'http://java-ja.yoshiori.org/index.php?%E8%B3%9B%E5%90%8C%E8%80%85' opener = urllib2.build_opener() html = opener.open(url).read() soup = BeautifulSoup(html) members = soup.find('div',id='contents').find('table').find('tbody').findAll('tr') blogList = [] twitterList = [] tumblrList = [] for member in members: tds = member.findAll('td') def getURL( td ): if td and td.find('a'): return td.find('a')['href'] return if tds[1] : blogURL = getURL(tds[1]) if blogURL : blogList.append( blogURL) if tds[2] : twitterURL = getURL(tds[2]) if twitterURL : twitterList.append(twitterURL) if tds[3] : tumblrURL = getURL(tds[3]) if tumblrURL : tumblrList.append(tumblrURL) makeOpml(blogList,"java-ja-blog","java-ja Blog") makeOpml(twitterList,"java-ja-twitter","java-ja Twitter") makeOpml(tumblrList,"java-ja-tumblr","java-ja Tumblr")
あと、java-ja温泉に参加します。
まだYomeAuth取ってないけどw