失败的玩具

来源:互联网 发布:房屋交易数据 编辑:程序博客网 时间:2024/04/28 20:37

昨天一起来就看到GOOGLE READER要离我们而去了,开始是怎么都想不通,一番了解之后才发现原来GOOGLE READER的死早已注定。惋惜归惋惜,首要任务当然是寻找代替产品。去年开始喜欢上了玩豆瓣,所以就想把订阅的条目都搬到九点里去。我在九点里没有别的订阅,所以在页面里只看到一个输入框和一个添加按钮……难道这要我一条一条的加上去?怎么可能!用GOOGLE TAKEOUT可以导出OPML,这是一个XML文件,里面包含了我GOOGLE READER的订阅信息。用脚本解析OPML文件,然后用CURL自动提交到九点添加订阅条目,就是这么个简单的想法,以及这段简单的代码。嗯,我觉得连工具都算不上,只能算玩具=_=

//解析OPML获得订阅源信息function get_url_list() {$url_list = array();$doc = new DOMDocument();$doc->load('./xml/subscriptions.xml');$element = $doc->getElementsByTagName('outline');foreach ($element as $e) {if ($e->hasAttribute('xmlUrl')) {$url_list[] = array('title' => $e->getAttribute('title'),'htmlUrl' => $e->getAttribute('htmlUrl'),);}}return $url_list;}//用CURL向九点自动提交订阅function subscript($sub_url) {$url = 'http://9.douban.com/reader/subscription';$post_data = array('url' => $sub_url);$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);$out_put = curl_exec($ch);if ($out_put === FALSE)echo 'cURL Error:'.curl_error($ch);elseecho $out_put;curl_close($ch);}//=======MAIN==============$url_list = get_url_list();foreach ($url_list as $url) {echo $url['title'].' : '.$url['htmlUrl'].'<br />';subscript($url['htmlUrl']);echo '<hr />';}

本来以为这样就能完成订阅的搬迁,结果我再次进入九点发现订阅列表还是空空如也。仔细分析九点提交页面的源码以及脚本的执行结果后发现,提交是没有问题的,但是提交完成后九点并没有直接完成订阅操作,而是返回了一个JSON对象。

{"subscription":{"id":"9136865","unread":0,"is_new":true,"name":"xkcd.com"}}
对象中包含订阅条目的信息,原来这次提交仅仅是一次查询。接下来就是JS的工作了,我猜是从session里找到我的用户信息,然后发送ajax完成订阅(也是,我写的脚本里面没有我的用户信息,它怎么可能知道是谁提交的,要是订阅成功了才奇怪吧)。

就在我看着九点的源码为怎么把JS的工作也接管过来挠头的时候,我发现九点原来有导入OPML的功能……然后,就没有然后了。

没错,失败的玩具……沮丧之时把脚本修改了一下可以用CURL直接向GOOGLE或百度提交搜索请求,得到的输出结果就是搜索页面,和用搜索引擎搜索的结果一样(废话)。

PS:但是,最后我还是选择了FEEDLY……

原创粉丝点击