iGoogleのガジェットはXMLで書く

この辺りは、googleで検索してもらった方が速いので

http://www.google.co.jp/search?q=igoogle+%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88+%E4%BD%9C%E6%88%90&sourceid=navclient-ff&ie=UTF-8&rlz=1B3GGGL_ja___JP231&aq=t

こんなリンクを貼っておくことにします。

Googleにもxmlファイルの記載方法などの解説サイトがありました…が、あんまり読んでません。

とりあえず、今回はlastRSS(http://lastrss.oslab.net/)というRSS取得のためのライブラリを使ってRSSに含まれている画像へのURLを抜き出してimgタグで表示することにしました。

関数名と一部しか名残りはありませんが、lastRSSのサンプルソースの一部を改造して使っています。

見たいblogに載っている画像の大きさは大体一緒だったので、width/heightパラメータにサイズ1/6したものを設定して表示させています。それから、imgタグが記載されている場所を決め打ちして処理しているので、他の用途は考えてないため、柔軟性はないです。

以下、XMLファイルとphpソース。

<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="タイトル" scrolling="true" />
<Content type="url" href="phpスクリプトを設置した場所のURL" />
</Module>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
function getIMGURL ( $str ) {
if ( ereg ( "<img ", $str ) ) {
$img = split ( "<img ", $str );
$img = split ( "/>", $img[1] );
$img = split ( " ", $img[0] );
$imgblock = Array();
foreach ( $img as $line ) {
if ( ereg ( "alt", $line ) ) {
$keys = split("=", $line );		// alt
$imgblock['alt'] = preg_replace ( "/\"/","",$keys[1]);
} else if ( ereg ( "src", $line ) ) {
$keys = split("=", $line );		// alt
$imgblock['src'] = preg_replace ( "/\"/","",$keys[1]);
} else if ( ereg ( "width", $line ) ) {
$keys = split("=", $line );		// alt
$imgblock['width'] = preg_replace ( "/\"/","",$keys[1]);
} else if ( ereg ( "height", $line ) ) {
$keys = split("=", $line );		// alt
$imgblock['height'] = preg_replace ( "/\"/","",$keys[1]);
}
}
} else return NULL;
return $imgblock;
}
function checkLinkItem ( $str ) {
$checkStr = Array (
'ot_listing.pl',
);
foreach ( $checkStr as $cs ) {
if ( ereg ( $cs, $str ) ) return false;
}
return true;
}
function ShowOneRSS($url,$itemCount) {
global $rss;
if ($rs = $rss->get($url)) {
$iC = sizeof($rs['items']);
if ( sizeof($rs['items']) > $itemCount ) {
$iC = $itemCount;
}
for ( $i = 0; $i < $iC; ++$i ) {
$rsbody = $rs['items'][$i];
$imgbody = getIMGURL($rsbody['description']);
if ( ( $imgbody != NULL ) ) {
if ( trim($imgbody['width']) ) {
$w = intval($imgbody['width']) / 6;
} else unset($w);
if ( trim($imgbody['height']) ) {
$h = intval($imgbody['height']) / 6;
} else unset($h);
printf ( "<a href=\"%s\" target=\"%s\">%s</a><br /><img src=\"%s\"%s%s><br />\n",
$rsbody['link'],
'_blank',
$rsbody['title'],
$imgbody['src'],
isset($w) ?  'width="'.$w.'" ' : "",
isset($h) ? 'height="'.$h.'" ' : "" );
}
}
}
}
include "./lastRSS.php";
$rss_list = array(
'取得したいblogのRSS',
);
$rss = new lastRSS;
$rss->cache_dir = './temp';
$rss->cache_time = 60 * 60 * 60;
$rss->cp = 'UTF-8';
$rss->items_limit = 10;
print '<tr><td class="block">';
foreach ($rss_list as $url) ShowOneRSS($url,5);
print '</td></tr>';
?>
</body>
</html>
広告

About sato_c

小学生の頃にインベーダーゲームやPC-8001やApple][といったものを知ってしまい、それ以降ずーっとゲーム好き。でも、あんまりうまくはありません。 仕事は当初はゲーム関係のプログラムやサウンドをやっていましたが、WEB関係を通ったあと、遊技機関係のプログラムやサウンドをやっています。あまり節操がないのか。 現在はJavaですてきなコードを書けるように勉強中。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。