我把更新器分成了 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://portfolio.mrcongwang.com/statusupdater/test.php
关于开发:
添加一个新的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'; } } ?> |
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=''; } } ?> |
0 Responses
Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.