PageCookery微信机器人


<p>上传API文件到网站,微信添加PageCookery公共账号即可使用(下面有详细使用教程说明)。本机器人建立初功能比较薄弱,仅有绑定账号,发表状态功能,后续博主会再接再厉增加更多功能的。个人认为此微信公共账号变相地解决了PageCookery的手机客户端的问题。本账号还处于婴儿阶段,并未作过多的测试,欢迎大家反馈。</p>

<p>使用教程:</p>
<p>第一步:下载wechat.php并上传到PageCookery的根目录(请保证文件名为wechat.php)
</p>
<p>wechat.php源代码(请自行保存以下代码并上传至PageCookery根目录):

<?php 
include"config.php";
function sql_query($sqlcon){
    $con=mysql_connect(DATABASE_HOST,DATABASE_USER,DATABASE_PSSWORD);
    mysql_select_db(DATABASE_DB_NAME);
    mysql_query("SET NAMES 'utf8'");
    $result=mysql_query($sqlcon);
    mysql_close($con);
    return $result;
}
if(!isset($_GET['do'])) $_GET['do'] = '';
switch($_GET['do']){
    case'auth':
        $user=sql_query("SELECT * FROM user WHERE id= '".$_POST['usr']."'");
        $user=mysql_fetch_array($user);
        $pwd=md5($user['username'].$user['password']);
        if($pwd===$_POST['auth']){
            $j = array('code'=>true, 'message'=>'绑定成功,现在你可以发一条消息试试了!');
        }else{
            $j = array('code'=>false, 'message'=>'绑定失败,请输入正确的信息!');
        }
        echo json_encode($j);
    break;
    case 'post':
        $user=sql_query("SELECT * FROM user WHERE id= '".$_POST['usr']."'");
        $user=mysql_fetch_array($user);
        $pwd=md5($user['username'].$user['password']);
        if($pwd===$_POST['auth']){
            $userid=$_POST['usr'];
            $content=$_POST['content'];
            $time=time();
            $res=sql_query("INSERT INTO entry VALUES ('','0','$content','$time','微信','$userid')");
            if($res){
                $j = array('code'=>true, 'message'=>'发送成功!');
            }else{
                $j = array('code'=>false, 'message'=>'发送失败请稍后再试');
            }
        }else{
            $j= array('code'=>false, 'message'=>'您还未绑定网站或者之前的绑定已失效,请重新绑定!');
        }
        echo json_encode($j);
    break;
    case 'postfromgtalk':
        $user=sql_query("SELECT * FROM user WHERE id= '".$_POST['usr']."'");
        $user=mysql_fetch_array($user);
        $pwd=md5($user['username'].$user['password']);
        if($pwd===$_POST['auth']){
            $userid=$_POST['usr'];
            $content=$_POST['content'];
            $time=time();
            $res=sql_query("INSERT INTO entry VALUES ('','0','$content','$time','Gtalk','$userid')");
            if($res){
                $j = array('code'=>true, 'message'=>'发送成功!');
            }else{
                $j = array('code'=>false, 'message'=>'发送失败请稍后再试');
            }
        }else{
            $j= array('code'=>false, 'message'=>'您还未绑定网站或者之前的绑定已失效,请重新绑定!');
        }
        echo json_encode($j);
    break;
    
    case 'signature':    
        echo '<meta charset="utf-8" http-equiv="content-type" content="">';
        if(!isset($_POST['username'])) {
            echo '<form method="post" action="./wechat.php?do=signature"><p>用户名:<input type="text" name="username" value="" /></p><p>密  码:<input type="password" name="password" value="" /></p><p><input type="submit" value="确认" />';
        } else {
            $user=sql_query("SELECT * FROM user WHERE username = '".$_POST['username']."'");
            $user=mysql_fetch_array($user);
            if(md5($_POST['password']) === $user['password']) {
                $sig = $user['id'].md5($user['username'].$user['password']);
                echo '你的识别码是"'.$sig.'",请发送"-sig '.$sig.'"给PageCookery微信机器人完成绑定!';
            } else {
                echo '用户名或密码错误!';
            }
        }
    break;
    default:
        $j = array('code'=>true, 'message'=>'微信机器人平台搭建成功!');
        echo json_encode($j);
    break;
}
?>

</p>
<p>第二步:关注PageCookery微信机器人账号。微信中选择“朋友-添加朋友-查找微信公众账号”,输入pagecookery即可查到机器人账号,添加即可。或者直接扫描下面的二维码即可成功添加。<br/>PageCookery微信机器人</p>
<p>第三步:绑定自己的网站和账号。首先发送消息“-url 你的网站地址”,会让你跳转到另外一个页面,复制地址到浏览器中打开输入你的账号和密码后会返回识别码,复制识别码到微信中发送过去就完成绑定过程了。具体使用见下图:</p>
<p>第一次关注会提示你绑定网站,输入“-url 你的网站地址”即可完成绑定。<br/>绑定账号成功绑定账号成功</p>
<p>复制地址到浏览器中打开,并输入你的PageCookery账号和密码,网页会返回识别码,复制识别码发送给PageCookery微信机器人即可完成绑定。<br/>绑定账号成功绑定账号成功绑定账号成功</p>
<p>如果发送错误的识别码过去,机器人会提示绑定失败。<br/>绑定账号成功</p>
<p>绑定账号完成后直接输入消息就可以发布状态了。<br/>发布状态</p>

为你的PageCookery制作网站挂件(增加97版的支持)

[1g1g]残酷月光-林宥嘉#playID:147633[/]

之前写过一篇为你的PageCookery制作博客挂件,利用的是PageCookery的RSS制作的。今天给大家放的代码是直接读取数据库然后用js的innerhtml引用的方法,此方法适用于任何网站,甚至是HTML页面也是可以的。新分享的方法简单方便而因为读取数据库的原因是实时更新的呢!这里要感谢卜卜口の君的各种指导。

本文需要使用的文件下载:普通下载 | 115下载 | uudisc下载
注意:以上文件适合97版本以前的【不包括97版】PageCookery,如果是97版以后的请拷贝下面的代码。

下载好文件后将其解压,将widget.php和badge.php文件上传到您的PageCookery根目录下,即与config.php同级的目录。然后浏览器输入"您的PageCookery地址+/widget.php",例如我的是http://pagecookery.net/widget.php出现什么了?呵呵~上面已经有提醒了,我就不多说了。

友情提醒:通过定义script地址后面的mount的值可以控制显示的条数哦!我已经定义了许多标签,样式什么的可以尽情的发挥咯!

这里我也直接放出代码出来给那些不愿下载的孩子:

widget.php文件源代码:

<?php
require_once("global.php");
?>
<p>JS插件代码|复制代码到你要引用的地方
<textarea style="width:80%;height:80px;"><div id="pagecookery"></div>
<script type="text/javascript" src="<?php echo BASE_URL; ?>badge.php?mount=10"></script></textarea></p>
<p>效果预览:
<div id="pagecookery"></div>
<script type="text/javascript" src="<?php echo BASE_URL; ?>badge.php?mount=10"></script></p>

badge.php文件源代码(适合97版本以前的PageCookery【不包括97版】):

header('Content-Type:application/javascript;charset=utf-8');
require_once("global.php");
if (!isset($_GET['mount'])){
    $_GET['mount']='10';
}
document.getElementById('pagecookery').innerHTML='< ?php
if(ereg("^[0-9]*$",$_GET['mount'])){
$sql='SELECT * FROM entry ORDER BY time DESC LIMIT '.$_GET['mount'];
$entry = $SQL->RunQuery($sql);
echo '<style type="text/css">#pagecookery img {display:none;}</style><ul>';
while($item = $SQL-> FetchArray($entry)){
echo '<li>';
echo '<span clss="entry">' . get_username_by_id($item['userid']) . '</span>';
echo ':';
echo hFormat::ParseBBCode( htmlspecialchars($item['content'],ENT_QUOTES));
echo '
  header('Content-Type:application/javascript;charset=utf-8');
  require_once("global.php");
  if (!isset($_GET['mount'])){
      $_GET['mount']='10';
  }
echo "document.getElementById('pagecookery').innerHTML='";
  if(ereg("^[0-9]*$",$_GET['mount'])){
    $sql='SELECT * FROM entry ORDER BY time DESC LIMIT '.$_GET['mount'];
    $entry = $db->query($sql)->result_array();
    echo '<style type="text/css">#pagecookery img {display:none;}</style><ul>';
    foreach($entry as $item){
      echo '<li>';
      echo '<span clss="entry">' . get_username_by_id($item['userid']) . '</span>';
      echo ':';
      echo Format::ParseBBCode( htmlspecialchars($item['content'],ENT_QUOTES));
      echo '

站外引用的代码|在"您的PageCookery地址+/widget.php"文件中有!

<div id="pagecookery"></div>
<script type="text/javascript" src="您的PageCookery地址+/badge.php"></script>

明眼人都看出来了吧,其实widget.php可有可无的,方便大家而已!

PageCookery转微饭程序

[1g1g]广岛之恋-莫文蔚#playID:2381[/]
<p>某些人吵着要的转换程序,先放在这里了。将下列代码保存为convertpc2mf.php并放到你的PageCookery根目录下运行即可。</p>

<html>
<head>
<title>PageCookery转微饭程序 </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
    textarea {width:100%;height:200px;}
    form {width:400px;}
    button {float:right;}
    #footer {width:100%;text-align:center;position:fixed;bottom:0px;}
</style>
</head>
<body>
<?php
    error_reporting(E_ALL ^ E_NOTICE);
    require_once 'config.php'; 
    function sql_query($sqlcon){   
      $con=mysql_connect(DATABASE_HOST, DATABASE_USER, DATABASE_PSSWORD);
      mysql_select_DB(DATABASE_DB_NAME);
      mysql_query("SET NAMES 'utf8'");
      $result = mysql_query($sqlcon);
      mysql_close($con);
      return $result;
    }
    $entry_pc = sql_query('SELECT * FROM entry');
    $reply_pc = sql_query('SELECT * FROM reply');
    $prefix = $_GET['prefix'];
    if ($prefix == "") $prefix = "mf_";
?>
<form action="convertpc2mf.php" method="GET">
请输入你的微饭数据库的自定义前缀:<input name="prefix" type="text" value="mf_">(不要忘了最后还有一个'_'哦!)
<input type="submit" value="确认">
</form>
<p>复制下列代码并在phpMyadmin中执行即可不懂请看图</p>
<textarea>
    <?php
      while ($entry = mysql_fetch_object($entry_pc)) {
          $content = $entry -> content;
        echo "INSERT INTO " . $prefix . "entry VALUES ";
        echo "('','" . $entry -> userid . "','','','','" . addslashes($content) . "','" . $entry -> time . "','" . $entry -> from . "','0','','','');";
        echo "n";    
      }
    while($reply =mysql_fetch_object($reply_pc)){
        $nickname = $reply -> nickname;
        $geo = $reply -> geo;
        if ($nickname == "" && $geo != "owner") {
            $nickname = $geo . '网友';
            $userid = 0;
        } elseif ($nickaname == "" && $geo == "owner" ) {
            $userid = 1;
            $nickname = "";
        }
        echo "INSERT INTO " . $prefix . "entry VALUES";
        echo "('','" . $userid . "','" . $nickname . "','" . $reply -> email . "','" . $reply -> url . "','" . $reply -> message . "','" . $reply -> time . "','网页','" . $reply -> entryid . "','','','');";
        echo "n";
    }
  ?>
</textarea>
<p style="margin-top:15px;color:#AAA;">
        友情提示:
1.请确定你是在'微饭'的表中执行代码,并确保微饭已经安装,即存在entry和reply两个表。
2.请输入你的'微饭'表前缀并确定后再复制代码,否则可能导致失败。
3.部分对数据库架构进行过变动的用户可能会导入失败,请修改相关代码后再进行导入。
4.导入前请将原数据库进行备份,以免发生意外损失。 </p> <div id="footer">Powered By 怡红公子 | 欢迎报告 BUG</div> <body> </html>

Emlog碎语转换到PageCookery

[1g1g]1973-James Blunt#playID:-6797[/]
<p>N久之前有某位同学给我发邮件让我帮忙写一个emlog碎语转PageCookery的数据库转换程序。虽然没有什么技术,但感觉这东西还是有些思路的,就接下来了。在卜卜口の君的帮助下,也算是有模有样的写出来了。并且拿了一个emlog的碎语数据库做过测试,因为他的内容多且杂,应该能代表广大群众的了。所以特地分享出来,希望能帮助一些同学。</p>
<p>将下列代码保存成covertopc.php,然后上传到emlog程序的根目录访问即可得到转换代码。本来想写成下载文件下载成SQL文件然后让用户自己导入的。我想直接代码也不还是PHPMYADMIN,于是就没多做操作了。虽然我做了测试,但不代表一定没有问题,欢迎使用中有问题的同学和我交流,最后说明问题的时候能发一份你的碎语数据库文件到我的邮箱里头。我的邮箱是i#imnerd.org</p>

<html>
<head>
<title>Emlog碎语转PageCookery程序 </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
    textarea {width:100%;height:200px;}
    form {width:400px;}
    button {float:right;}
    #footer {width:100%;text-align:center;position:fixed;bottom:0px;}
</style>
</head>
<body>
<?php 
    require_once 'config.php'; //连接数据库   
    function mysql_run($sqlcon){   
      $con=mysql_connect(DB_HOST, DB_USER,DB_PASSWD);
      mysql_select_db(DB_NAME);
      mysql_query("SET NAMES 'utf8'");
      $result = mysql_query($sqlcon);
      mysql_close($con);
      return $result;
    }

?>

<p>复制下列代码并在phpMyadmin中执行即可不懂请看图</p>
<textarea>

<?php

$content = mysql_run('SELECT * FROM ' . DB_PREFIX . 'twitter');

while($entry=mysql_fetch_object($content)){
    echo "INSERT INTO entry VALUES ";
    echo "('',1,'" . htmlspecialchars( str_replace('\','',$entry -> content) , ENT_QUOTES ) . "'," . $entry -> date . ",'Emlog'," . $entry -> author . ");";
}
?>


<?php
$re = mysql_run('SELECT * FROM ' . DB_PREFIX . 'reply');
while($reply =mysql_fetch_object($re)){
    echo "INSERT INTO reply VALUES";
    echo "(''," . $reply -> tid .",'Great Fire Wall', '" . $reply -> ip . "','" . $reply -> content . "'," . $reply -> date . ",'0','" . $reply -> name . "');";
}
?>
</textarea>
<p style="margin-top:15px;color:#AAA;">
    友情提示:
1.请确定你是在PageCookery的表中执行代码,并确保PageCookery已经安装,即存在entry和reply两个表。
2.部分对数据库架构进行过变动的用户可能会导入失败,请修改相关代码后再进行导入。
3.导入前请将原数据库进行备份,以免发生意外损失。 </p> <div id="footer">Powered By 怡红公子 | 欢迎报告 BUG</div> <body> </html>

PageCookery:为照片墙增加灯箱和透明效果

[music1g play=#315715]

不是很喜欢PageCookery默认的照片墙效果,很早之前用了@ideeland同学的方法换了一个透明效果,感觉还不错。这两天又想着搞一个LightBox(灯箱)效果,即点击小图片后可以用LightBox效果浏览大图片。预览效果请见:传送门

PageCookery里头Flickr照片墙是通过CURL函数获取最近上传的json数据来实现的,比较可以的是获取过来的json数据只有小图地址而没有大图地址。所以我就打算自己用Flickr API写过一个。经试验发现,这里需要使用flickr.people.getPublicPhotos和flickr.photos.getSizes两个API,前者获取最近上传照片的信息,后者则获取特定照片的全部尺寸地址。

将下列代码保存成photos.html替换掉template/photos.html


{template header}
<style type="text/css">
    @import 'css/jquery.lightbox.css';
    ul.photos li {
    overflow:hidden;
    /根据这个宽度和长度控制你单行显示图片的数量,如果总长是600px,这里设置为100px的话那么你单行就能放6张图片,可以根据自己的情况做改变。/
    /实在计算不来的可以慢慢试出最佳值/
    width:149px;
    height:149px;    
    }
    ul.photos li a {
  filter:alpha(opacity=70);
  opacity:0.7;
  -moz-opacity:0.7;
  -webkit-opacity:0.7;    
  }
  ul.photos li a:hover {
  filter:alpha(opacity=100);
  opacity:1;
  -moz-opacity:1;
  -webkit-opacity:1;
  }
</style>
<script type="text/javascript" src="javascript/jquery.lightbox.js"></script>
<script type="text/javascript">
    $(function() {
        $('ul.photos li a').lightBox({fixedNavigation:true});
    });    
</script>
<div id="main">    
    <php> $key= ""; //输入你申请的key,请到"http://www.flickr.com/services/apps/create/noncommercial/?"这里申请你自己的非商用key $user_id = ""; //输入你的账户id,请到"http://www.flickr.com/services/api/explore/?method=flickr.photos.getRecent"这里查看你的id $per_page = ""; //输入你要显示的照片的数量 $data = file_get_contents("http://api.flickr.com/services/rest/?method=flickr.people.getPublicPhotos&api_key=" . $key . "&user_id=" . $user_id . "&per_page=" . $per_page ); $object = simpleXML_load_string($data); $photo = $object -> photos -> photo; foreach ($photo as $each) { $photo_m = 'http://farm' . $each['farm'] . '.static.flickr.com/' . $each['server'] . '/' . $each['id'] . '_' . $each['secret'] . '_m.jpg'; $photo_b = 'http://farm' . $each['farm'] . '.static.flickr.com/' . $each['server'] . '/' . $each['id'] . '_' . $each['secret'] . '_b.jpg'; </php>
  • <php> } </php>

<div style="clear:left"></div>
</div>
{template footer}</pre>

需要填写的东西我已经在代码里写好了,大家填写上就好了。可能美观上有些问题,大家再自己根据我这个修改一下自己的样式表就可以了。如有不懂的地方也可以留言,我会尽量帮忙的啦~
其实我自己的上面是把php语句function成了一个函数,然后再html模板中直接引用就好啦~嘿嘿,发现我最近真的很喜欢这样做,function_microblog.php里已经有好几个自定义函数了。嘿咻~!然后顺便想说的是更换了一个新的icon,没别的意思,就像让大家看一下,结束!

PS:搞完这个之后,我发现Flickr有最近更新的RSS订阅,XML里小图地址大图地址各种齐全,连API,USER_id什么的都不要,各种给力。于是我就这么的悲催了image

显示PC的最近消息模板


<p>论坛有人问能否做一个显示微博的单页面,之前我写过一个Typecho的,现在特地转到WP中来。</p><p>
</p><p>复制一下代码命名为microblog.php上传到你当前主题文件夹中</p>

< ?php
/*
Template Name:Microblog
*/
?>
< ?php get_header(); ?>
<div class="grid_10" id="content">
<div class="post">
  • <span style="float:left;">怡红别院<span style="font-size:10px;font-family:"Lucida Grande",Verdana,Arial;">http://pagecookery.net/</span></span>登录 | 评论 | 关注
  • < ?php $xmlfile = "http://pagecookery.net/rss.xml"; $xml = simplexml_load_file($xmlfile); $n="20"; for($i=0;$i<$n;$i++){ ?>
  • <div id="entry-<?php echo $i;?>" class="entry"> < ?php echo $xml->channel->item[$i]->description;?><span class="entry-meta" id="entry-meta"></span> </div>
  • < ?php }?>

</div>
</div><!-- end #content-->
< ?php get_sidebar(); ?>
< ?php get_footer(); ?>
</pre>
<p>然后在WP后台添加新页面,在高级选项的自定义模板中选择刚才上传的Microblog就可以了。</p>
<p>然后对于我这个模板您最后修改一下您的PageCookery的RSS输出样式。具体是将如下代码保存为rss_update.php并上传覆盖掉cron/rss_update.php文件。</p>

< ?php
ob_start();

$entry = $SQL->RunQuery("SELECT * FROM entry ORDER BY time DESC LIMIT 0, 50");

$title = SITE_NAME . ' - RSS';

echo urldecode('%3C%3Fxml+version=%221.0%22+encoding=%22utf-8%22%3F%3E');
?><rss version="2.0">
<channel>
<title>< ?php echo $title; ?></title>
<link>< ?php echo BASE_URL; ?></link>
<description>Powered by PageCookery Microblog v< ?php echo $pcm_version; ?> Build < ?php echo $pcm_build; ?></description>
<language>zh</language>
< ?php while ($item = $SQL->FetchArray($entry)) { ?>
<item>
<title>< ?php echo Format::Time($item['time'], 1); ?> 来自 < ?php echo $item['from']; ?></title>
<link>< ?php echo BASE_URL; ?>?act=view&id=< ?php echo $item['id']; ?></link>
<description>< ![CDATA[<?php echo $item['content']; ?>
< ?php $item['picture'] = $SQL->QueryRowsArray("SELECT * FROM picture WHERE entryid = " . $item['id']); ?>
< ?php if ($item'picture') { ?>
<p class="image"></p>
< ?php } ?>]]></description>
<pubdate>< ?php echo Format::Date($item['time'], 'D, j M Y H:i:s' , 0); ?> +0000</pubdate>
</item>
< ?php } ?>
</channel>
</rss>
< ?php

$data = ob_get_contents();
ob_end_clean();

file_put_contents('rss.xml', $data);

<p>最后附上我的样式表,复制下列代码到WP当前主题的style.css中即可。</p>
</pre><pre lang="css">
.pagecookery_list {
list-style-type:disc;
font-size:14px;
color:#666666;
line-height:1.7;
font-family:Georgia,Times,"Times New Roman",serif;
}
.pagecookery_list li {
border-bottom:1px dashed #CCCCCC;
list-style-type:none;
padding:5px 0;
margin:0;
}
.pagecookery_list li:hover {
background:none repeat scroll 0 0 #E7E7E7;
}
.pagecookery_list li img {
width:100px;
}
.pagecookery_list a {
color:#999999;
}
.entry-meta {
background:url("http://storage.live.com/items/8AAEE749DE3922BE!558?filename=digu-time.png") no-repeat scroll 0 0 transparent;
padding:0 0 0 19px;
}
.entry-meta a {
border-bottom:none;
}
.entry-meta a:hover {
color:#FF6633;
}

panel {

text-align:right;
}

panel:hover {

background:none;
}

panel a {

border:none;
padding:2px 5px;
}

panel a:hover {

color:#FF6633;
background:none repeat scroll 0 0 #E7E7E7;
}

为你的PageCookery添加富评论


<p>友情提示:本文代码已经跟最最新版0.95做了相关的调整,并添加了检查评论网址是否带有http://的功能,欢迎广大新老用户再次测试。</p>
<p>曾几何时,我在PageCookery的讨论组上看到的最多的帖子就是如何让评论能支持昵称,邮箱和网址,跟WP一样。而后@孙老四同学就慷慨的分享了他的添加文件。经过我自己的摸索,我终于也成功的添加上了富评论,特此分享出我的添加过程。大家不要看代码比较多,其实要修改的只有几行,我怕大家找不到才把前后不变的代码也弄上来了。如果是在不愿意看的,可以直接下载文末我已经修改好的程序就行~</p>
<p>一、先要为数据库添加上相应的字段,这里定义记录网址和邮箱的字段名称为email和url,请记住他们的先后顺序以及名称。</p>
image
<p style="text-align:center;">1.打开reply表的结构页面</p>
image
<p style="text-align:center;">2.为reply表添加两个字段存放邮箱和地址</p>
image
<p style="text-align:center;">3.最后reply表结构如图所示</p>
二、然后为网站加上输入框

打开template/blog.html,将100行p标签的内容改为如下内容{如果段数不一样的可以看代码前几行查找}

<script src="https://gist.github.com/831336.js?file=gistfile1.html";></script>











阅读全文

终极同步大法

<div style="font-size: 14px; font-family: microsoft yahei, microsoft jhenghei; color: #333399; text-indent: 2em;">

随着微博的热门,已经有很多的微博程序纷纷出现了,而我们该如何挑选这些微博程序呢?首先我们要考虑的是选择单用户还是多用户的。但是如果像我这种注重功能的人,可能第一个想到的是它的同步功能如何?今天就介绍一种方法,为你的PageCookery的同步功能做拓展。
<div style="font-size: 14px; font-family: microsoft yahei, microsoft jhenghei; color: #333399; text-indent: 2em;">

这里主要是利用了月光博客制作的GAE同步程序制作的一个针对PageCookery的简易教程。总所周知,Twitter现如今是微博界的老大,虽然被G.F.W了,但是仍然不能阻挡它的光芒!我们可以利用Twitter这个跳板,将其他地方的消息同步到Twitter中,同时也可以利用Twitter的多方式发布消息将自己的消息发布到Twitter中,然后将Twitter的消息同步到别的地方去!而月光的这个GAE程序就能够实现将Twitter的信息分发到各大微博网站去,包括新浪微博/嘀咕/网易微博/9911/51follow等等微博门户。而PageCookery微博程序又提供了对嘀咕的双向同步,而且也提供了RSS导入这么一个极佳的功能。
<div style="font-size: 14px; font-family: microsoft yahei, microsoft jhenghei; color: #333399; text-indent: 2em;">

有人可能会说了,为什么我不直接用Twitter的RSS导入到PageCookery来呢?这是因为直接导入RSS的话,会有很多的RSS垃圾产生,比如你@别人的消息,以及RT别人的消息也都会同步过来,这个还算是小事,重要的是Twitter的RSS格式包括了用户名,所以每次导入Twitter的消息时都会带上"username:"这样的前缀,让人看起来甚是不爽,所以我们要对RSS进行过滤!而月光博客的GAE同步程序也正是做到了这一点。在此,要感谢月光博客为我们带来了这么好的一个工具。而且,利用GAE的高效工作性,我们基本能够实时的同步我们的消息到PageCookery中(我说的是几乎)……
<div style="font-size: 14px; font-family: microsoft yahei, microsoft jhenghei; color: #333399; text-indent: 2em;">

好了,优点讲完了就改说怎么捣鼓了,首先呢,你要有申请一个GAE,如果有,则可跳过此不,如果没有,请参照如何申请GAE
<div style="font-size: 14px; font-family: microsoft yahei, microsoft jhenghei; color: #333399; text-indent: 2em;">

申请好GAE并成功建立一个项目之后,我们要做的就是将月光博客的GAE程序给下载下来,下载方法,使用TortoiseSVN检出这个SVN地址,然后,编辑 app.yaml,修改为自己的appspot应用名,接着,修改twitter.py文件的最后一行,将自己的Twitter用户名填入,修改从 ret = send_sina_msgs("username","password",text) 语句开始的 username 和 password ,将相应微博客的用户名和密码分别填入,不需要同步的服务请使用#号注释掉,cron.yaml文件里是计划任务设置。至于如何使用TortoiseSVN下载,请参考:教你如何用SVN下载源码
<div style="font-size: 14px; font-family: microsoft yahei, microsoft jhenghei; color: #333399; text-indent: 2em;">千万不要忘记,记得修改最后一样你要同步的Twitter帐号!编辑保存后,我们就可以把程序上传到GAE主机上去了,至于如何上传么,请参考:如何上传文件到GAE
image
<div style="font-size: 14px; font-family: microsoft yahei, microsoft jhenghei; color: #333399; text-indent: 2em;">

好了,前半部分工作就做好了,下面我们就要做另外一部分工作了,现在假设你将Twitter上的信息同步到了嘀咕,由于PageCookery的嘀咕同步有个限制,就是嘀咕没有认证的API(也就是嘀咕页面消息显示是来自API)的消息PageCookery是不会同步过来的,所以我们只能通过RSS导入的法子,获取嘀咕微博的RSS地址,然后导入过来就可以了。(不能使用RSS导入功能的童鞋表示灰常抱歉了。)有人说了,如果我填写的是新浪微博的帐号怎么办?恩,我们知道新浪微博还没有开放RSS功能,不过这个也不要紧,http://imnerd.org/sinarss.php+"你的ID号"就是你的RSS地址了,这里要再次感谢月光博客提供的程序,有需要的也可以去他博客下载哦~~
<div style="font-size: 14px; font-family: microsoft yahei, microsoft jhenghei; color: #333399; text-indent: 2em;">

其实个人认为吧,我们应该能从月光的GAE程序中直接获取到RSS地址的,那么就可以直接导入进PageCookery了,而不用使用其他微博做跳板了,只是python实在不是很了解,就没心思看他的代码了,希望有心人能够发现啊,呵呵~~最后就讲讲这个同步的时间问题,从Twitter同步到嘀咕等微博网站的时间是可以设置的,最短可以是1分钟(修改地方在cron.yaml文件最后一行的every minutes,将换成同步间隔时间即可),基本上可以做到实时同步,然后是嘀咕等RSS同步到PageCookery,经过我的初步观察,最迟15min~20min应该会同步过来的,如果没有同步过来的话我就告诉你一句:反正迟早的事,何必这么焦急呢,呵呵!
<div style="font-size: 14px; font-family: microsoft yahei, microsoft jhenghei; color: #333399; text-indent: 2em;">

最后要提醒大家一句,请注意不要开启对某个微博的双向同步,一面发生消息同步死循环的状况……到时候估计删消息会删的你手软的!哈哈!

</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>