通用状态更新器 进展

2 views
Skip to first unread message

小包|Cong Wang

unread,
Sep 4, 2009, 8:56:57 AM9/4/09
to universal-st...@googlegroups.com, bup...@googlegroups.com
我把更新器分成了 http, XMPP, 其他
每个更新器都提供query(username, password) 和 update(username, password, status)方法
每个网站对应有自己的一个更新器
对外提供的是一个update.php页面 输入形如:
action=(query|update)&xml=
<?xml version="1.0" standalone="yes"?> <usu>
<site>
<sitename>renren.com</sitename>
<username>用户名</username>
<password>密码</password>
<status>test12345</status>
</site>
<site>
<sitename>kaixin001.com</sitename>
<username>用户名</username>
<password>密码</password>
<status>test12345</status>
</site>
</usu> 如果action是query 返回值形如:
<?xml version="1.0" standalone="yes"?>
<usu>
<site>
<sitename>renren.com</sitename>
<result>状态 或者 login failed 或者 query failed</result>
</site>
<site>
<sitename>kaixin001.com</sitename>
<result>状态</result>
</site>
</usu>  
如果为update 返回形如
<?xml version="1.0" standalone="yes"?>
<usu>
<site>
<sitename>renren.com</sitename>
<result>update success或者login failed 或者update failed</result>
</site>
<site>
<sitename>kaixin001.com</sitename>
<result>update success或者login failed 或者update failed</result>
</site>
</usu>


关于开发:
添加一个新的http更新器很容易 比如 xiaonei的更新器 如下
<?php
require_once('usu-classes.php');
class updater_xiaonei extends http_updater{
//site attributes
public function updater_xiaonei(){
$this->sitename = "renren.com";
$this->update_domain = 'status.renren.com';
$this->update_method = 'POST';
$this->update_url = '/doing/update.do?';
$this->update_referer = 'http://'.$this->update_domain.$this->query_url;
$this->query_domain = 'status.renren.com';
$this->query_url = '/getdoing.do';
$this->login_domain = 'login.renren.com';
$this->login_url = '/Login.do';
//patterns
$this->query_success_pattern = '/<span id="currentStatus">(.+)<\/span>/';
$this->query_fail_pattern='';
$this->login_success_pattern='';
$this->login_fail_pattern='<div class="errors_div">';
$this->update_success_pattern='/\{"updateStatusId":\d+,"code":\d,"msg":".+"\}/';
$this->update_fail_pattern='';
$this->update_post='c=[STATUS]&raw=[STATUS]';
$this->query_post='';
$this->login_post='email=[USERNAME]&password=[PASSWORD]&origURL=&formName=&method=&submit=%E7%99%BB%E5%BD%95';
}
}
?>
只要找出对应的地址和正则表达式即可 我会稍后添加详细的使用方法和注释

小包|Cong Wang

unread,
Sep 4, 2009, 9:01:26 AM9/4/09
to universal-st...@googlegroups.com, bup...@googlegroups.com
kaixin001.com的更新器如下:
<?php
require_once('usu-classes.php');
class updater_kaixin001 extends http_updater{
public function updater_kaixin001(){
//site attributes
$this->sitename = "kaixin001.com";
$this->update_domain = 'www.kaixin001.com';
$this->update_method = 'POST';
$this->update_url = '/friend/status_submit.php?';
$this->update_post='state=[STATUS]';

$this->query_domain = 'www.kaixin001.com';
$this->query_url = '/home/';
$this->query_post='';

$this->login_domain = 'www.kaixin001.com';
$this->login_url = '/login/login.php';
$this->login_post='email=[USERNAME]&password=[PASSWORD]&url=/home/';
//patterns
$this->query_success_pattern = '/<a href="\/home\/status.php" class="c0" style="text-decoration:none;color:#000;">(.+)<\/a>/';
$this->query_fail_pattern='';
$this->login_success_pattern='';
$this->login_fail_pattern='/账号或密码不太对吧!/';
$this->update_success_pattern='/\{"state":".+"\}/';
$this->update_fail_pattern='';
}
}
?>

2009/9/4 小包|Cong Wang <silw...@gmail.com>
Reply all
Reply to author
Forward
0 new messages