Skip to main content

ログ取得ツール (移転先予定地)

togetter→EPUB変換

結局、togetterの番号から記事を取ってきてテキストにするスクリプトを書いて、reStructuredTextあたりとして処理してpandocでEPUBに変換することで、ニンジャスレイヤーをEPUBでオフラインで読むことができるようになりました。最近はこれでAndroidのFBReaderで読んでますが、動作も安定しているし、途中で中断しても続きから開けるのでかなり快適になりました。

とりあえずスクリプトを載せておきます。Cookieとかcsrf_tokenがないと続きを読み込めないみたいだが、かなり適当にやっても普通にテキストに変換することができた。ニンジャスレイヤーのテキストに関しては一部エスケープしないといけなかったり、&が&になってしまったりするようだが、おおむね読むのに問題ない状況になっている。

#! /usr/bin/python
# encoding: UTF-8

import urllib, urllib2
import cookielib
from BeautifulSoup import BeautifulSoup as BS

class tog:
  def __init__(self, tid):
    self.title=str(tid)
    self.tid=tid
    self.cookie=cookielib.CookieJar()
    self.texts=[]
    self.opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cookie))
  def call_api(self, name, tid, data):
    url="http://togetter.com/api/%s/%d" %(name, tid)
    data["csrf_token"]=self.csrf_token
    params=urllib.urlencode(data)
    fp=self.opener.open(url, params)
    html=fp.read()
    return html
  def get(self):
    fp=self.opener.open("http://togetter.com/li/%d" %(self.tid))
    html=fp.read()
    soup=BS(html)
    self.csrf_token=soup.find('meta', {"name":"csrf_token"})["content"]
    self.title=soup.find("meta", {"name":"twitter:title"})["content"]
    return html
  def parse2txt(self, html):
    soup=BS(html)
    for i in soup.findAll("div", {"class":"tweet"}):
      self.texts.append(i.text)
    rest=filter(lambda f: f.text.startswith(u"残りを読む"), soup.findAll("a", {"class": "btn comment_btn"}))
    if len(rest)==1:
      rstr=rest[0]["onclick"]
      page=int(rstr.split(",",1)[1].strip(");"))
      return page
    return None
  def readall(self):
    html=self.get()
    rest=self.parse2txt(html)
    while rest!=None:
      html=self.call_api("moreTweets", self.tid, {"page":rest})
      rest=self.parse2txt(html)

if __name__=="__main__":
  import sys
  tg=tog(int(sys.argv[1]))
  tg.readall()
  titlelen=len(tg.title.encode("EUC-JP"))
  print tg.title.encode("UTF-8")
  print "-"*titlelen
  print ""
  for t in tg.texts:
    print t.encode("UTF-8")
    print ""

読み進めたのは今のところ第2部の終わりくらいまで。ヨロシサン製薬が実際大活躍でしたな。ビョーキ・トシヨリ・ヨロシサン。ヨロシサン関係のニンジャ…特にケジメニンジャ=サンやサブジュゲイター=サン、セントール=サンあたりはかなり良かった。

ただ就職するならヨロシサンよりオムラ・インダストリだよね。モーター理念バンザイ。最後は残念なことになっちゃったけど。