ここ3日ほど、Twitter界隈で「MyMiniCity」が盛り上がっています。
ということで、私も始めてみました。
私のページのアドレスはhttp://hjfuji.myminicity.comです。
また、自分のブログ等にMyMiniCityの町を表示するためのCGIも作ってみました。
2007年12月21日 午後12時45分
CGIとJavaScriptを一部修正しました。
2009年1月17日 午後19時3分
CGIを一部修正しました。
1.MyMiniCityの概要
MyMiniCityはSimCity風のサービスです。
ページへのアクセスが多くなるほど、町が大きくなっていくという仕組みです。
町が大きくなって人口が増えるにつれて、工業や交通といった町のパラメータを調節することができるようになるようです。
また、コメントをつける機能があり、ちょっとしたコミュニケーションツールとして使うこともできます。
自分のIDを登録するだけでアカウントを作ることができ、手軽に始めることができます。
私はまだ始めたばかりなので、人口はわずか5人です。
誰かにアクセスしてもらわないと町が大きくならないというシステムなので、大きくなるには時間がかかりそうです。
2.自分のブログ等に町を表示したい
MyMiniCityでは、現状はブログパーツのようなものは提供されていません。
「町の様子を自分のブログ等に表示したい」という方には、この点が弱点だと思います。
町はFlashで表示されているので、そのFlashのコードをブログ等に貼り付ければ、一応表示することはできます。
ただ、人口等が増えるにつれて、Flashに渡すパラメータが変化するので、それを得ることが必要です。
そこで、パラメータを得てFlashのコードを出力するCGIを作ってみました。
以下のように表示することができます。
2-1.CGIの設置
まず、以下のCGIをサーバーにアップロードし、パーミッションを「705」等に変えて実行可能にます。
ただし、2行目の「your_username」は、ご自分のユーザー名に書き換えます。
たとえば、ご自分のページのアドレスが「http://hoge.minicity.com」の方は、この行を「my $username = 'hoge';」にします。
また、3行目の赤字の「width」には、町を表示する際の幅を指定します。
例えば、180ピクセルで表示したい場合だと、この行を「my $width = 180;」とします。
#!/usr/bin/perl -w
my $username = 'your_username';
my $width = width;
use strict;
use LWP::UserAgent;
use HTTP::Request;
use CGI;
my $q = new CGI;
my $referrer = $q->param('referrer') || '';
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
my $req = HTTP::Request->new(GET => "http://${username}.myminicity.com/");
$req->referrer($referrer);
$req->header(Cookie => "X-MV-referrer=$referrer; X-Mc-Ref=1");
my $resp = $ua->request($req);
my $html = $resp->content;
print "Content-type: text/javascript\n\n";
if ($html =~ /so.addParam\("FlashVars","(name=.*?&k=.*?)"/) {
my $param_str = $1;
$param_str =~ s/&/&/g;
my $height = int($width * 2 / 3);
print <<HERE;
document.write('<embed width="$width" height="$height" flashvars="$param_str" allowscriptaccess="always" menu="false" quality="high" bgcolor="#deecfe" name="client" id="client" src="http://data.myminicity.com/swf/client.swf?v=0" type="application/x-shockwave-flash"/>');
HERE
}
else {
print <<HERE;
document.write('Error occured');
HERE
}
1;
ã¹ã¯ãªããã®ç¶ç¶çãªéçºããµãã¼ãã®ããã«ãã¹ã¯ãªããããå©ç¨ãããæ¹ã¯ãããã¼ã·ã§ã³ï¼å¯ä»ï¼ãè¡ã£ã¦ããã ããã¨å¹¸ãã§ãã
ããã¼ã·ã§ã³ã®æ¹æ³ã¯ããã¡ãã®ãã¼ã¸ããåç
§ãã ããã
2-2.JavaScriptの設置
次に、MyMiniCityを表示したい位置に、以下のJavaScriptを入れます。
<script type="text/javascript">
//<![CDATA[
document.write('<script type="text/javascript" src="CGIのURL?referrer=' + encodeURIComponent(document.referrer) + '"><\/script>');
//]]>
</script>










コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。
こんばんは。
こちらのCGIを利用させていただこうかと思いましたが、
「Error occured」と表示されて見ることができません。
このページにも表示されているようにかかれていますが、
>そこで、パラメータを得てFlashのコードを出力するCGIを
>作ってみました。
>以下のように表示することができます。
同じように「Error occured」と表示されています。
自分のページだけなら、設置の失敗と考えたのですが、
こちらのページも同じように表示されていますので、
何に問題があるのかさっぱりわかりません。
「Error occured」で検索しても、ピンとくるサイトに
出会うこともできず、こちらで質問させていただくことにしました。
考えられることがあるようでしたら、お時間のある時にでもお答えいただければと思います。
よろしくお願いします。
>Goriさん
こんにちは。
CGIを一部修正しましたので、差し替えてご利用ください。
すいません。わざわざありがとうございました。