2007-12-29 15:22:39 来自: jjgod
前段时间做的一个小 hack,Mac 用户也许会喜欢 :)
就是用 Delicious Library 的条形码扫描功能给自己的豆瓣添加收藏。
有图有真相:
http://jjgod.org/document/images/douban-dl-importer.png
简单的说,因为 Delicous Library [1] 有条形码扫描功能,但是它根据条形码来导入的数据来源却只能是 Amazon,而根据 vgod 的发现 [2], DL 每次成功扫描到一条新的条形码,都会往
~/Library/Application\ Support/Delicious\ Library/Scanned\ UPCs\ Log.txt
里写入一条新的数据。于是今天做的这个东西,就是用 kqueue (2) 来监视这个文件的 event,只要一收到写入的 event,就调用一个 Python 脚本来提交 douban 的书籍收藏请求 (“我读过这本书”),这个 Python 脚本的基本原理是:
1. 用一个当前路径下的叫 prev.txt 的文件和当前的 ~/Library/Application\ Support/Delicious\ Library/Scanned\ UPCs\ Log.txt 进行 diff -u,获取结果。
2. 找出 (1) 中结果行首为 + 的行,把这些行后面的内容作为条形码。
3. 将条形码发送到 http://www.douban.com/isbn/${isbn}/?interest=collect 这个格式的 URL,通过 urllib2。
4. (3) 之前其实还要调用 cookielib 登录,不过只要第一次登录后,就可以在本地存放一个 cookies.lwp 文件记录下 cookie,下次调用这个 Python 脚本时就直接载入 cookie.lwp,不用重新登录。所以这个脚本执行得很频繁也没关系。
5. 把 Scanned UPC Log.txt 复制到 prev.txt,这次请求发送全部完成。
[1]: http://www.delicious-monster.com
[2]: http://blog.vgod.tw/2007/03/07/用macbook內建的isight攝影機快速建立網路書櫃/