Twitterユーザの画像を表示するPukiWikiプラグイン「twitter_img」
目次
- 概要
- インストール
- 使い方
- 詳細
- ソースコード
- 変更履歴
- 参考
インストール
twitter_imgプラグインを使用するためには、twitter_img.inc.phpをpluginフォルダにインストールします。
twitter_img.inc.phpは、下記のソースコードを参照ください。
詳細
ソースコード
以下、プラグイン「twitter_img」のソースコードです。
twitter_img.inc.php
<?php // PukiWiki - Yet another WikiWikiWeb clone. // $Id: twitter_img.inc.php,v 1.00 2010/02/13 21:10:00 nattou_curry Exp $ // // Inline-twitter-image plugin define('PLUGIN_TWITTER_IMG_USAGE', '#twitter_img(): Usage: (twitter-user-name)<br />' . "\n"); function plugin_twitter_img_convert() { #################################################### # Get Args #################################################### $args = func_get_args(); if (! isset( $args[0] ) ) { return PLUGIN_TWITTER_IMG_USAGE; } $user_name = $args[0]; $user_page = "http://twitter.com/$user_name"; #################################################### # Read Cache File #################################################### $cache = array(); if ( file_exists( CACHE_DIR . "twitter_img.dat" ) ) { $fp = fopen(CACHE_DIR . "twitter_img.dat", "r"); while ( ! feof( $fp ) ) { $line = fgets( $fp ); $line = chop( $line ); $linedata = explode( "|", $line ); if ( count( $linedata ) < 3 ) { continue; } $cache_user_name = $linedata[0]; $cache_img_url = $linedata[1]; $cache_timestamp = $linedata[2]; $cache[$cache_user_name] = array( img_url => $cache_img_url, timestamp => $cache_timestamp ); } fclose( $fp ); } #################################################### # Check Cache #################################################### $use_cache = false; if ( array_key_exists( $user_name, $cache ) ) { $data = $cache[$user_name]; $img_url = $data["img_url"]; $timestamp = $data["timestamp"]; if ( time() < $timestamp + 60 * 60 ) { $use_cache = true; } } if ( $use_cache == false ) { #################################################### # Get Image Url #################################################### @$contents = file_get_contents( $user_page ); $img_url = ""; # Public Mode $pattern = '/<img alt="" border="0" height="73" id="profile-image" src="(.*?)" valign="middle" width="73" \/>/'; if ( preg_match( $pattern, $contents, $matches ) == 1 ) { $img_url = $matches[1]; } # Private Mode $pattern = '/<img alt="" class="profile-img" height="73" src="(.*?)" width="73" \/>/'; if ( preg_match( $pattern, $contents, $matches ) == 1 ) { $img_url = $matches[1]; } #################################################### # Update Cache #################################################### $timestamp = time(); $cache[$user_name] = array( img_url => $img_url, timestamp => $timestamp ); #################################################### # Write Cache File #################################################### $fp = fopen(CACHE_DIR . "twitter_img.dat", "w"); foreach ( $cache as $cache_user_name => $data ) { $cache_img_url = $data["img_url"]; $cache_timestamp = $data["timestamp"]; fwrite( $fp, "$cache_user_name|$cache_img_url|$cache_timestamp\n"); } fclose( $fp ); } #################################################### # Create Image Tag #################################################### $result = "<div class='img_margin' style='text-align:left'>" . "<a href='$user_page'>" . "<img src='$img_url' alt='' />" . "</a>" . "</div>"; return $result; } ?>
変更履歴
- 2010/02/18
- ツイートを非公開にしているユーザの画像を取得できるよう修正。