( ꒪⌓꒪) ゆるよろ日記

( ゚∀゚)o彡°オパーイ!オパーイ! ( ;゚皿゚)ノシΣ フィンギィィーーッ!!!

java-jaのopml作った

いつだったか、id:daisuke-mjava-jaのopmlってないの?みたいな話をしてたのをふと思い出したので、現実逃避して作ってみましたよ。
これでjava-jaストーカーの皆さんも安心ですね!


BlogのOPML

tiwtterのOPML

tumblrのOPML
(右クリックで保存してくださいね)


java-ja wikiの賛同者のページからURLを拾ってきて、livedoor Reader Feed Discover APIを利用してopmlを吐くpythonスクリプトを書いて作ってます。
java-jaなのにpythonってwww


livedoor Reader Feed Discover APIの仕様で、購読者数の少ないtwittertumblrの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