Twitter-APIを使わずにTL取得 in Python
TwitterのAPIでTL(タイムライン)を取得するとき、回数制限が設けられています。
しかしuser_timelineをRSSで取得する際には、この制限がありません。
なので、この独立したいくつかのuser_timelineを組み合わせ、TLを再構築させてみたいと思います。
準備:
Python処理系(俺は2.6系)
feedparser([ubuntu] slicehostでpython-mecabとかの インストール - shohu33's diaryを参考にしてインストール)
#!/usr/bin/python # -*- encoding: utf-8 -*- # coding: utf-8 import sys import urllib import feedparser def get_rss_url(id): url = "http://twitter.com/%s" % id std_str = "http://twitter.com/statuses/user_timeline/" try: s = urllib.urlopen(url).read() except: return None n = s.find(std_str) if n == -1: return None m = s.find('"', n) return s[n:m] def get_entries(url): try: fdp = feedparser.parse(url) except: print "(Error) can not get the RSS..." sys.exit(1) entries = [] for entry in fdp['entries']: entries.append(entry) return entries def get_tl(entries): entries.sort(cmp=lambda x, y:cmp(x["updated_parsed"], y["updated_parsed"])) return entries if __name__ == "__main__": id_list = ["pastak", "hush_in", "loli_comp", "3jyo"] entries = [] print "Crawle RSS Start." for id in id_list: rss_url = get_rss_url(id) if rss_url == None: print "Not found : ", id continue entries += (get_entries(rss_url)) print "Crawle Done." timeline = get_tl(entries) for entry in timeline: try: print entry["title"] except: print entry["title"].encode("mbcs") print "Date:\t", entry["updated"] print "URL:\t", entry["link"] print ""
- 関数説明