Google ReaderでitmeをStarへ登録すると,Hatena Bookmarkされるプログラム
みなさん Google Readerばりばり使っていますか.
私は,WebのUIが好きではないので,NetNewsWireを使っています.
3カラムとFeedの数でソートしてくれるのがいいです.
NetNewsWire使いやすくていいんですが,本文で全文読んでしまい,わざわざWebブラウザーで開いてからHatenaへBookmarkするのは面倒でした.
なので,どうにかしてRSS ReaderだけでBookmarkしたい*1.
NetNewsWireは,AppleScriptでPluginを書けるんですが,AppleScriptはよく知らないし.*2
そこで,
Starを付けたitemをBookmarkするプログラムを書いた.
#! /usr/bin/env python # -*- coding:utf-8 -*- from hashlib import sha1 as sha import feedparser import random import datetime, time import base64 import httplib #e.g.) # #username = 'hatena user name' #passwd = 'hatena password' #hatenatag = '[googleReaderStar]' <- add comment and tag #atomfeed = 'http://~~.rss' <- RSS username = '' passwd = '' atomfeed = '' hatenatag = '[googleReaderStar]' class AtomClient: def __init__(self): self.endopoint = None self.wsse = None def credentials(self, endpoint, user, password): nonce = sha(str(time.time() + random.random())).digest() now = datetime.datetime.now().isoformat() + "Z" digest = sha(nonce + now + password).digest() wsse = 'UsernameToken Username="%(u)s", PasswordDigest="%(p)s", Nonce="%(n)s", Created="%(c)s"' value = dict(u = user, p = base64.encodestring(digest).strip(), n = base64.encodestring(nonce).strip(), c = now) self.endpoint = endpoint self.wsse = wsse % value def atom_request(self, method, URI, body): con = httplib.HTTPConnection(self.endpoint) con.request(method, URI, body, {'X-WSSE' : self.wsse,'Content-Type':'text/xml','User-Agent': 'Python WSSE'}) r = con.getresponse() response = dict(status=r.status, reason=r.reason, data=r.read()) con.close() return response class HateBu(AtomClient): def upload_entry(self, url, comment): entry = '''<entry xmlns="http://purl.org/atom/ns#"> <title>dummy</title> <link rel="related" type="text/html" href="%s"/> <summary type="text/plain">%s</summary> </entry>''' return self.atom_request('POST', '/atom/post', entry%(url, comment)) #↑Author id=blankblank if __name__ == "__main__": #google star Atom atom = feedparser.parse(atomfeed) hp = HateBu() hp.credentials('b.hatena.ne.jp', username, passwd) for entry in atom['entries']: link = entry['link'] hp.upload_entry(link, hatenatag)
lnial/Rss-to-hatenabookmark · GitHub
プログラム参考サイト
AtomAPIでブックマーク
使い方は,HatenaUserIDとパスワードを設定する.
Google ReaderのStar Feedを公開する.Feedの公開の仕方.ここで得られたFeedを追記する.
オプションでコメントとTagも追記できるようにしてある.
後は,プログラムをcronで回しておくだけで*3,Google ReaderでStar*4を付けるとBookmarkに追加されて便利.
試してないけど,どんなFeedでも使えると思う.
例えば,特定の人の,はてブRSSを登録しておくと自分のはてブに追記されていく.