Simple Tweet」タグアーカイブ

ブログ投稿をTwitterに通知できるWordPressプラグイン「Simple Tweet」がTwitter API v1.1に対応


Simple Tweet (WordPress)

WordPressブログへの記事投稿をTwitterに自動で通知するWordPressプラグイン「Simple Tweet」。プラグインの名前とは裏腹にツイート内容をカスタマイズできるなど十分な機能を備えており愛用していましたが、Twitter API v1.1への対応が遅れていたことでJetPackのパブリサイズ共有機能に乗り換えていました。ただJetPackはツイート内容をカスタマイズできないところがそこはかとなく不満で。

ふとSimple Tweetの更新状況を調べてみたところ、3/4リリースのv1.4.0からTwitter API v1.1への対応が行われたようです。

image

Twitter API v1.1に対応したならばもう憂いはないということでSimple Tweetに戻してみました。試した限り問題なく動くようです。

なお今回のv1.1対応において「codebird」というライブラリが用いられています。Twitter APIのPHPラッパーで、v1.1にもちろん対応しています。これはこれで何かの機会に使えそうな雰囲気なので覚えておこうかと。

WordPressプラグイン「Simple Tweet」でj.mpのURL短縮がbit.lyになる事象の修正方法


当ブログの更新通知をTwitterに流す方法として、WordPressプラグイン「Simple Tweet」を便利に使わせていただいています。

ただ最近になって、URL短縮をj.mpにしているはずなのにbit.lyで短縮される事象が出てきて、bit.lyのドキュメントを当たってみると、

http://code.google.com/p/bitly-api/issues/detail?id=35

どうもSimple Tweetで使われているv2.0.1のAPIを使うと、j.mpで短縮したつもりでもbit.lyになる不具合が出ているよう。ただこのAPIはすでにDeprecated(非推奨)の扱いなので、この事象を直してくれるつもりはないようで「v3に移行しちゃいなよ」的なスタンス。

もう仕方がないので、Simple Tweet 1.3.7.2をベースにbit.ly/j.mpのAPIだけ最新に改変して使うことにしました。せっかくなのでパッチなどのせてみようかと。

90c90
<     const TWEET_BITLY_URL = ‘http://api.bit.ly/shorten?version=2.0.1&login=%s&apiKey=%s&longUrl=’;

>     const TWEET_BITLY_URL = ‘http://api.bitly.com/v3/shorten?domain=bit.ly&format=xml&login=%s&apiKey=%s&longUrl=’;
93c93
<     const TWEET_JMP_URL = ‘http://api.j.mp/shorten?version=2.0.1&&login=%s&apiKey=%s&longUrl=’;

>     const TWEET_JMP_URL = ‘http://api.bitly.com/v3/shorten?domain=j.mp&format=xml&login=%s&apiKey=%s&longUrl=’;
808c808
<         if ( preg_match( ‘/[\’"]shortUrl[\’"]:[ \t]*[\’"]([^\’"]*)[\’"]/iUs’, $result, $matches ) ) {

>         if ( preg_match( ‘/<url>[ \t]*(.*)[ \t]*<\/url>/iUs’, $result, $matches ) ) {

改変前は結果をJSONで受け取るようになっていましたが、v3のAPIを使ってJSONで短縮URLを受け取ると「/」がエスケープされた状態(「\/」)で返ってきて処理が面倒だったので、XMLで結果を受け取るようにして、短縮URL抽出の正規表現も変更しました。うちの環境では問題なくj.mpで短縮できているので多分大丈夫でしょう。

上記のパッチはすでに作者様にも送付させていただいているので、この事象はバージョンアップで解消されると思いますが、それまでの間「なんとしてもj.mpを使いたいんだ!」という方はパッチを試してみてください。

Simple TweetでHTML実体参照を変換して投稿する方法


ブログの更新情報をTwitterに反映してくれるプラグイン「Simple Tweet」。非常に使い勝手がいいのですが、自分の環境では記事タイトルに含まれる実体参照(「&amp;」や「&lt;」「&gt;」など)がそのまま(本来の文字に変換されずに)Twitterに反映されていました。私の環境ではちょくちょく発生し、ちょっと困っていたので、コードに手を入れて直してみました。修正元のバージョンは1.3.6です。

[function _do_tweetの内部]

$post_title = $post->post_title;
// add yoshikawa begin
$post_title = html_entity_decode($post_title, ENT_QUOTES, "UTF-8");
// add yoshikawa end

[function TweetThisLinkの内部]

$post_title = $post->post_title;
// add yoshikawa begin
$post_title = html_entity_decode($post_title, ENT_QUOTES, "UTF-8");
// add yoshikawa end

投稿タイトルを$post->post_titleで引っ張っているところがあるので、その文字列をhtml_entity_decode関数に食わせて実体参照を変換すればOK。文字コード指定「UTF-8」がないと、文字によってはTwitterに反映されないことがあるので注意。

というわけで、Simple Tweetの不具合を自分で解消できたので、dlvr.itによるTwitterへの更新通知を停止して、再びSimple Tweetを使っていきたいと思います。優柔不断ですみません。

【追記】作者様にこの情報を連絡させていただきました。次バージョンでの対応を検討していただけるということで、期待して待ちたいと思います。

ブログ更新のTwitter通知、迷いに迷い中…


Webサービス系ではFriendFeed、FeedBurner、dlvr.it、WordPressプラグインではWordTwit、Simple Tweetあたりを常にうろうろしている、ブログ更新のTwitter通知。最近はSimple Tweetを快適に使っていたのですが、特殊文字が化ける(というかHTML実体参照になる)こともあって、以前使っていたdlvr.itに戻してみました。一時期リアルタイム通知が調子悪かったようですが、今試したら快調に通知したので。

ブログ更新のTwitter通知については、今後もずっと探求を続けていそうな気がしますw。