Home > WordPress Archive

WordPress Archive

Twitpress を twicco に力業で対応させてみる

Twitter の日本語版向けサービスとして立ち上がった、twicco は特定の話題を扱うコミュニティを作ることができるサービス。

さっそく私も興味があるところに登録してみました。

で、それに関連する話題をブログにポストしたときに、コミュニティ向けに reply してやれると便利じゃね? と短絡的に考えた結果、またしても Twitpress をちょっとだけカスタマイズしてみました。

具体的な動作は、指定したカテゴリに属するポストがされたとき、指定したコミュニティ宛に reply 用の文字列 @~ を付けてやるという単純なものです。

既存のソースに数行追加するだけの簡単なものなので、ご参考までに。

Continue reading

拍手する
この記事が参考になったり面白かったりしたらお気軽にご評価ください
1 Star2 Stars3 Stars4 Stars5 Stars (0 件の評価, 平均: 0 点 / 5 点満点中)
読み込み中 ... 読み込み中 ...

Twitpress 日本語版

WordPress の更新を Twitter へ通知する プラグイン Twitpress 0.3.2 の日本語版です。

設定画面で出力されるメッセージを日本語化し、以下のカスタマイズを行っています。

  • ページの更新を通知しない(ソース書き換えでオリジナルの動作に戻せます)
  • パーマリンクが正しく送信されない不具合への対応(詳細)

ダウンロードして展開してできた twitpress.php をプラグインディレクトリに設置し、有効化してください。

WordPress 2.6.3 + 日本語リソース 環境下で動作確認を行っています。

拍手する
この記事が参考になったり面白かったりしたらお気軽にご評価ください
1 Star2 Stars3 Stars4 Stars5 Stars (0 件の評価, 平均: 0 点 / 5 点満点中)
読み込み中 ... 読み込み中 ...

Twitpress の通知 URL にパーマリンクをちゃんと使いたい

WordPress 2.3 でカノニカル URL が導入されたのが原因か判断付かないのですが、TwitpressMessage format を、

更新したよ! : [title] [permalink]*Twitpress*

のようにしても、パーマリンクが通知されない状況が続いていました。別に、ちゃんとリダイレクトされるので問題ないなあと思ってたんですが、Twitter でそれに困ってるつぶやきを見かけたので、ソースを追ってみました。で、多分これで解決。

$ diff -u twitpress.php.org twitpress.php
--- twitpress.php.org   2008-10-26 10:29:45.000000000 +0900
+++ twitpress.php       2008-10-26 10:13:21.000000000 +0900
@@ -246,7 +246,8 @@
        $proto = get_option( 'twitpress_message' );
        $post = get_post( $postID );
        $proto = str_replace( "[title]", $post->post_title, $proto );
-       $proto = str_replace( "[permalink]", $post->guid, $proto );
+       //$proto = str_replace( "[permalink]", $post->guid, $proto );
+       $proto = str_replace( "[permalink]", get_permalink($postID), $proto );
        $proto = str_replace( "[link]", get_option( 'home' )."?p=".$postID, $proto );
        return $proto;
 }

[permalink] で置換されるURLはデータベース内の wp_posts テーブルの guid フィールドを参照しているのですが、これは更新したときもパーマリンクが格納されるのじゃなくて、カノニカルURL 用のパラメータが格納されている雰囲気。なので、その値を使わずに、get_permalinkを使い、パラメータに $postID を指定することで、投稿記事のパーマリンクを取得、投稿するようにしています。

まぁ、この記事がテスト投稿なんですが、ちゃんと通知されてますでしょうか?

ページを更新したときは通知したくない

twitpress.php の関数 twitpress_run を書き換えて、$post_typepost の時のみ通知を行うように変更してみました。

//Runs when a post record is inserted into the database
function twitpress_run( $postID ) {
	//get the post
	$post = get_post( $postID );

	//get the post type(page or post)
	$post_type = get_post_type( $postID );

	//we only want to do anything if the post was not previously twittered
	if ( !twitpress_was_twittered( $postID ) && ( $post_type === "post") ){
		//Update the post to reflect it's current status
		twitpress_db_update_post( $postID, $post->post_status );
	}
	//process the posts, including twittering newly published posts
	if ( $post_type === "post" ){
		twitpress_process_posts();
	}
}

ページを作成したときにTwitterへポストされるのがイヤな場合は、このような書き換えで回避できそうです。

拍手する
この記事が参考になったり面白かったりしたらお気軽にご評価ください
1 Star2 Stars3 Stars4 Stars5 Stars (0 件の評価, 平均: 0 点 / 5 点満点中)
読み込み中 ... 読み込み中 ...

WordPress の更新内容を mixi へ投稿するスクリプト RSS2mixi with MagpieRSS

ブログのエントリーをmixi日記に自動投稿する「RSS2mixi」 ::: creazy photograph で配布されているスクリプト RSS2mixi をちょっと改造して本文から画像データを抜き出せるようにしてみました。
元スクリプトでは description を見ているためか、WordPress の吐く RSS では画像を使っていても、そこまでスクリプトが読んでくれないので*1 どうにかこうにかしてみようとしたのが、MagpieRSS を用いて RSS をパースするという方法。

他ライブラリを使うのでシンプルではなくなるのですが、もともと便利なスクリプトだし、どうせ自前のサーバで動かすので、ちょっと富豪的にしてみました。

元スクリプトは PHP5 の SimpleXML を使っていますが、その部分を MagpieRSS にお任せしているので、PHP4 でも動くかもしれませんね。

MagpieRSS 導入方法

MagpieRSS のファイル群は RSS2mixi と同じ場所に magpierss というディレクトリを作成して保存してあります。

rss_fetch.inc を直接書き換え MAGPIE_OUTPUT_ENCODING の値を ‘UTF-8′ にしてあります。

その他、環境に応じてキャッシュディレクトリなどの書き換えを行います。

RSS2mixi の使い方

設定はスクリプト自体を書き換え、フィードの URL や mixi へのログイン情報、ID などを記入します。

$posted_file および $img_tmp_file で指定するファイルは、予め作成しておくのが良いようです。

設定が完了したら cron で定期的にスクリプトを実行すれば、新規に投稿されたエントリの内容を mixi に複製してくれるはずです。

ソースコード

<?php
/**
 * RSS2mixi with MagpieRSS
 * 
 * RSS読み込んでmixi日記に自動投稿します。
 * 
 * original script @author  yager <yager[ at ]creazy.net>
 * http://creazy.net/2008/08/rss2mixi_php.html
 *
 * custmized by yuuichi <u1 [ at ] u-1.net>
 */
mb_language("japanese");
mb_internal_encoding("UTF-8");

require_once 'Services/MixiAPI/Diary.php';
require_once 'Services/MixiAPI/Image.php';
require_once 'Services/MixiAPI/Factory.php';
require_once './magpierss/rss_fetch.inc';
error_reporting(E_ALL);

//------------------------------------------------------------
// Settings
//------------------------------------------------------------
/**
 * RSS設定
 */
$rss  = ''; //ブログのRSS

/**
 * mixi設定
 */
$user = ''; //ログインID
$pass = ''; //パスワード
$id   = ''; //mixi ID

/**
 * 送信済みエントリーをストアしておくためのデータファイル
 * @memo 別のファイル名で設置した場合はここを修正してください。
 *       書き込み権限を与えておく事を忘れずに。
 *       chmod 666 {データファイル名}
 */
$posted_file  = './rss2mixi.link.database.txt';
$img_tmp_file = './rss2mixi_tmp_file.jpg';

//------------------------------------------------------------
// Get data
//------------------------------------------------------------
// 登校済みのURLのデータファイルを読み込み
$posted_links = explode("\n",file_get_contents($posted_file));

// MagpieRSSによるRSSの展開
$root_ = fetch_rss($rss);
$title = $root_->channel['title'];
$items_ = array();
foreach ( $root_->items as $item ) {
    $items_[] = $item;
}

rsort($items_);

//------------------------------------------------------------
// Post mixi
//------------------------------------------------------------
foreach ( $items_ as $item ) {
  // すでにポスト済みの記事はスキップ
  if ( in_array($item['link'],$posted_links) ) continue;
  $title       = $item['title'];
  $title       = "ブログを更新しました : ".$title;
  $link        = $item['link'];
  $description = $item['description'];
  $fulltext    = $item['content']['encoded'];

    // 添付画像URL取得
    $matches = array();
    if ( preg_match('/<img.*?src=[\'\"](.*.jpg)[\'\"].*?>/i',$fulltext,$matches) ) {
        // JPEGのIMGタグがあったら添付画像として
        $photo_url = $matches[1];
        echo $photo_url . "<br />\n";
    }

    // 本文の成形
    $description =
		preg_replace( // 画像タグはカメラアイコン+URL
			'/<img.*?src=[\'\"](.*?)[\'\"].*?>/ie'
			,"'([m:133]$1)'"
			,$description
		);
    $description =
		preg_replace( // リンクタグはPCアイコン+TinyURL
			'/<a.*?href=[\'\"](.*?)[\'\"].*?>(.*?)<\/a>/ie'
			,"'([m:196]$2:'.tinyurl('$1').')'"
			,$description
		);
    $description = strip_tags($description);
    $description = $description."\n\n".$link;

    // debug
    echo $title . "<br />\n";
    echo $link . "<br />\n";
    echo "<pre>".$description."</pre><hr />\n";

    // mixiにポスト
    $diary   = new Services_MixiAPI_Diary($title, $description);
    if ( $photo_url ) {
        if ( $fp = fopen($img_tmp_file,"w") ) {
            fwrite($fp,file_get_contents($photo_url));
            fclose($fp);
        }
        $diary->setImage(new Services_MixiAPI_Image($img_tmp_file));
    }
    $service = Services_MixiAPI_Factory::getInstance(
                   Services_MixiAPI_Factory::API_MODE_POSTDIARY,
                   $user, $pass, $id);
    $service->setDiary($diary);
    $service->execute();

    // ポスト済みに登録
    if ( $fp = fopen($posted_file,"a") ) {
        fwrite($fp,$item['link']."\n");
        fclose($fp);
    }

}

/**
 * TinyURL変換関数
 * @param  String $url 変換したいURL
 * @return String 変換後のTinyURL
 */
function tinyurl($url) {
    $tiny = file_get_contents('http://tinyurl.com/api-create.php?url='.urlencode($url));
    return $tiny;
}
?>

参考リンク

以下のURLを参考にスクリプトを改造させていただきました。感謝。

  1. これは SimpleXML の制限ぽいですね。PHP での SimpleXML 処理 []
拍手する
この記事が参考になったり面白かったりしたらお気軽にご評価ください
1 Star2 Stars3 Stars4 Stars5 Stars (0 件の評価, 平均: 0 点 / 5 点満点中)
読み込み中 ... 読み込み中 ...

WPtouch で iPhone/iPod touch 用の画面に変換する

WPtouch で変換した画面 WordPress のプラグインで、出力画面を iPhone や iPod touch 用に変換してくれる WPtouch を有効にしてみました。

インストール自体は簡単で、配布アーカイブを展開して、プラグインディレクトリに放り込んで有効化するだけ。

細かい設定は、プラグインの管理画面から行えて、表示するページやアイコンの選択、他、連携するプラグインについての説明などがあります。flickrRSS を有効にして、Photos というページを作成すれば Flickr からの写真の表示ができたり、blip.it を有効にすると、iPhone 内で動画の再生もサポートされるみたいです。

画面自体も、さすがに専用に最適化されるだけあって、Safari で見るのよりも「らしい」表示になっていますね。携帯電話専用の出力でもなく、PC 用の出力でもなく、iPhone に合わせた画面が出力されるだけで随分と印象が変わります。

……でも、iPhone でのアクセスって、あったっけかなあ……?

拍手する
この記事が参考になったり面白かったりしたらお気軽にご評価ください
1 Star2 Stars3 Stars4 Stars5 Stars (0 件の評価, 平均: 0 点 / 5 点満点中)
読み込み中 ... 読み込み中 ...

Home > WordPress Archive

Support Banner
  • 『遥かに仰ぎ、麗しの』応援バナー
Search
Feeds
Meta
Sponsored Link
Blog Parts
あわせて読みたい フィードメーター - MOMENTS

Return to page top