一直盼望哪位大侠能写个“批量导出饭否消息”的程序。请教过郭万怀,fanfou还没有批量导出全部消息的api。现有的api最多只能导出20条消息。于是我使用perl+curl实现了全部抓取的功能。现在还是perl脚本版的。有对话框界面的不急,慢慢来。
已经实现的功能:
- 根据fanfou id,批量导出fanfou消息。
- 导出的内容有:fanfou消息本身,该消息发布的时间,该消息的id号,形如oj1Wil-g4wk。
Todo List:
- 做成gui版的。
- 批量删除、分享(自己的消息)。
- 使用sqlite实现本地存储、sql语言查询。
- 支持标签分类。需要在发布消息时在消息开头或末尾加上[]、[]等分隔符。
如果您想批量导出自己的fanfou消息,同时知道如何运行perl脚本,那么直接改动下面的脚本即可;如果您不愿自己动手,我可以代劳。您只须加我(zhasm)为好友,然后饭密我一条消息,发个请求即可。这是为了保证您要抓取的,是您自己的内容。敬请谅解。我会在最晚2个工作日之内发给您。
饭密给我的消息,可以包含如下内容:
- 您的邮箱。
- 分隔符,默认是tab,您也可以;、,诸如此类。
- 序号(1-N,还是N-1.默认是n-1)。
- 是否加上时间戳。(默认包含)。
- 是否加上消息的id. 此处指的是fanfou为您每一条消息自动生成的形如oj1Wil-g4wk序列号。如果您不明白此为何物,可不必包含此项。如果批量删除或批量分享,则保留此项。
好了,以下是代码部分,附有注释。您如果在您的机器中运行此代码,需确保安装有WWW::Curl::Easy模块。需要说明的是,该脚本的运行速度取决于网络速度与机器自身速度。在我的机器上,抓取700余条消息大约花费3分钟时间。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #!/usr/bin/perl -w # # this script is to grab all the fanfou items for the given id. # rex.zhasm rex[at]zhasm[dot]com # 27 jan 2007 # # use strict; use WWW::Curl::Easy; my $output="output.txt"; open(OUT,">$output") or die "can not open file to out put!"; #print all the messages into the file: output.txt"; my $id="zhasm"; #specify the user's id. my $url = "http://fanfou.com/".$id; # Init the curl session my $curl= WWW::Curl::Easy->new() or die "curl init failed!\n"; $curl->setopt(CURLOPT_URL, $url); |
