2004年02月26日

moblog.uva.ne.jp の 「まど」 をホームページに
[ Movable Type, Software, moblog, python]
http://moblog.uva.ne.jp の直近の転送された画像を右のフレームに組み込みました。
ランダムに色々なホームページの写真が見れるので自分のホームページで見れたらいいなと思って作ってみました。

お願い : 自由にご利用ください。ただし自己責任で、プログラムをきちんと理解してお使いください。

まず、http://moblog.uva.ne.jp の <img> タグ、<a href> タグ情報をとってくる必要があります。
python で簡単な通信プログラム、CGI を書きました。

get_moblog.cgi
#!/usr/local/bin/python
import urllib, string

print "Content-type: text/html\n"
#html の体裁を整える、無くても動くけど、文字コードを誤ることもあるので... print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"
\"http://www.w3.org/TR/html4/loose.dtd\">" print "<html lang=\"ja\">" print "<head>" print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />" print "<title>show moblog images</title>" print "</head>" print "<body>" #ここまで
url = "http://moblog.uva.ne.jp/"
#何枚の画像を調べるか?
howmany = 7
i = 1
f = urllib.urlopen(url)

while i <= howmany:
data = f.readline()
#<div class="banner_image"> の行を抽出
if (string.find(data, "banner_image") > 0):
start = string.find(data, "<a href")
href_end = string.find(data, ">", start)
lastIs = string.find(data, "</div", href_end) - 1
printdataIs_1 = data[start:href_end]
printdataIs_2 = data[href_end :lastIs]
#<a href.... target="_top"> とすることで、今のページを閉じてリンク先が開く
print printdataIs_1, "target=\"_top\"", printdataIs_2, "<br>"
i = i + 1
#指定数を超えて画像情報が無い場合
if (string.find(data, "id=\"foot\"") > 0):
print "<!-- I can't find banner_image's tag !! -->"
break #体裁を整える print "</body>" print "</html>"

上記 CGI を適当なディレクトリーにコピーしてください。
つぎに、下記 内容をテンプレートに書き込み。

<div class="show_moblog">
<meta http-equiv="Refresh" content="60">
<iframe src="http:///cgi-binをインストールしたディレクトリ/get_moblog.cgi"
width="140" height="135" frameborder="0" scrolling="yes" />
</meta> </div>

iframe をつかい、 新しい フレームを作成し、 http-equiv の Refresh と、content の値で
指定時間ごとに新しい情報を取得します。
style sheet には、class show_moblog を適当に作成ください。

投稿者 heididorf : PM