wp_sns_share更新2.4,添加同步博文摘要输出

1月 19th, 2012 3,125 留下评论 阅读评论

上个版本已经是去年暑假了,是该更新一个版本了。能改进的地方不多,比较有想法的是OAuth同步这块,想在同步博客时自动发现博客中的图片并上传到微博,还有一点就是带上摘要输出,当然最好再加上人人、twitter之类的OAuth认证和同步。这次比较懒,只先做了摘要输出,并修复了新浪微博同步中的中文URL问题。其实对于发送图片有研究并捣鼓了2个下午的新浪API,无奈一直搞不定,先作罢。

插件更新

  1. 微博同步时,增加博客名和博文摘要的输出
  2. 新浪微博同步时,url用url编码处理,可以支持中文url了
  3. 增加functions.php,放一些公用lib函数

做摘要输出,比较难的就是微博的字数控制,新浪微博和腾讯微博都是140个字数限制,仔细观察发现中文、日文、图形符号之类的特殊字符都是1个字符占1个字数,而英文字符、标点和数字(即ASCii字符)每2个占1个字数。因为不像Java用Unicode来存字符串,PHP需要逐一对字符串中的字符作分析,这样就要搞懂UTF-8字符集的原理,wiki了下还是挺简单的很有规律,于是就好办了。

具体规则见:http://zh.wikipedia.org/zh-cn/UTF-8

简单的就是:

  • 对于UTF-8编码中的任意字节B,如果B的第一位为0,则B为ASCII码,并且B独立的表示一个字符;
  • 如果B的第一位为1,第二位为0,则B为一个非ASCII字符(该字符由多个字节表示)中的一个字节,并且不为字符的第一个字节编码;
  • 如果B的前两位为1,第三位为0,则B为一个非ASCII字符(该字符由多个字节表示)中的第一个字节,并且该字符由两个字节表示;
  • 如果B的前三位为1,第四位为0,则B为一个非ASCII字符(该字符由多个字节表示)中的第一个字节,并且该字符由三个字节表示;
  • 如果B的前四位为1,第五位为0,则B为一个非ASCII字符(该字符由多个字节表示)中的第一个字节,并且该字符由四个字节表示;

至于URL的问题,新浪微博需要手动将URL给urlencode化,于是中文就变成了%XX这种比较难看的形式,而腾讯微博则会自动转化。

再说说新浪上传图片的upload API,的确比较麻烦,因为App申请的比较早,用的新浪1.0版本的OAuth和API,不知道怎么回事就是出错,又不能切换成新一代的2.0版OAuth和API,因为要绑定callback,wp_sns_share的callback随域名而变化不可能绑定一个固定的callback,所以同理导致人人网的App根本就无法申请,╮(╯_╰)╭。

等啥时候实在闲了又有兴趣了再去搞屡战屡败的新浪微博upload API和twitter的OAuth吧,哎,弱爆了 :(

Categories: Wordpress 标签:, ,
  1. 2月 14th, 2012 00:12

    加油!

  2. 2月 3rd, 2012 17:14

    能不能把这个插件与百度分享合并了?

    • Orz…连百度都来参与了啊,不是明摆着抄袭jiathis之类的么