現在、Movable Typeをレンタルサーバで運用しております。質問ですが、特定のキーワードについて書かれたブログだけを自動で収集し、一覧にして自分のブログに組み込むことは可能でしょうか?


イメージとしては、RSSリーダーの一部を自分のブログに埋め込んで、表示させる感じです。

例えば、下記のサイトの
http://kizasi.jp/

の表示結果を、自分のブログのパーツとして表示するというイメージです。

自分でも探してみたのですが、「Blog People」とか「MyBlog List」では、特定のキーワードだけのエントリーを、自分のブログに埋め込むことは出来ないようでした。

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:2006/06/15 16:40:06
  • 終了:2006/06/22 10:10:36

ベストアンサー

id:yoneto164 No.1

ヨネちゃん回答回数813ベストアンサー獲得回数942006/06/16 02:36:14

ポイント35pt

私もこういうのがあったら良いなぁと思っているのですが、なかなか無いのですよね。

PHPが使えるなら、安定したサービスの検索結果をブログパーツ用に書き換えて表示することは可能だと思います。

http://cameraman.blog14.fc2.com/

のブログパーツ「CAMERA NEWS (beta)」を改造してみました。

例えば、

log.html (666)

header.php

footer.html

index.php

というファイルをアップロードして、index.php をインラインフレーム内に表示させる方法です。開発中のものをアレンジしただけなのですが、

まず log.html は空のファイルをUPしてパーミッション(666)にします。

header.phpのソースは、


<?php

print "<html>

<head>

<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"

/>

<title>camera news</title>

<meta http-equiv=\"Content-Style-Type\" content=\"text/css\"

/>

<meta content=ja name=Content-Language>

<style type=\"text/css\">

<!--

{

padding-right:0px;

padding-left: 0px;

padding-bottom: 0px;

margin: 0px;

padding-top: 0px;

font-family: Tahoma,Arial,Helvetica,\"ms ui Gothic\",Osaka;

}

* {

margin:0;

padding:0;

font-family: Tahoma,Arial,Helvetica,\"ms ui Gothic\",Osaka;

}

body {

font-size: 9pt;

color: #".$tcolor.";

background-color: #".$bcolor.";

line-height: 1.1em;

}

a{ color: #".$acolor.";

text-decoration: none;

}

a:visited{ color: #".$vcolor.";

text-decoration: none;

}

a:hover{

text-decoration: underline;

}

li{

margin:0.3em 0 0 15px;

list-style-type: disc;

padding: 0px;

list-style-position: outside;

border-bottom: 1px solid #".$lcolor.";

}

div#foot {

text-align: center;

padding-top: 5px;

}

div#pwd {

font-size: 8pt;

}
-->

</style></head><body><ul>

";

?>

次にfooter.html は

</body></html>

index.php のソースは

<?php

// ***設定***

$header = "header.php";//ヘッダーファイルネーム

$footer = "footer.html";//フッターファイルネーム

$retime = 300;//リロードタイム(秒)

//変数を取得

$cat = urlencode($t);//検索用語種別指定

$tcolor = urlencode($c);//文字色

$bcolor = urlencode($b);//背景色

$acolor = urlencode($a);//リンク文字色

$vcolor = urlencode($v);//既リンク文字色

$lcolor = urlencode($l);//線色

$url = "http://www.technorati.jp/search/search.html?callCode=-6739.5986&...

$filename = "log.html";

// ***メインルーチンスタート***

$now = getdate();

$re = $now[0];

$re = $re-$retime;

// ***ログが$retime以内に更新されていれば読み込んで表示***

if (file_exists($filename) && date(filemtime($filename)) > $re) {

// if (date(filemtime($filename)) > $re) {

require $header;

require $filename;

require $footer;

// }

}else{

// ***ログを書き出して読み込み***

$html = "";

$lines = file($url);

foreach ($lines as $l) {

if (strpos($l, '<cite>') != false) {

$title = strip_tags($l, '<a>');

} elseif (strpos($l, 'blockquote') != false) {

$l = split("<p>",$l);

$l = str_replace("</p></blockquote>","",$l[1]);


$l = split("http",$l);

$title = explode("\">", $title, 2);

$title = $title[0]."\" title=\"$l[0]\">".$title[1];


$html .= "<li>".$title."</li>\n";

}

}

$html .= "</ul>\n";

$inc = fopen($filename,"w");

fwrite($inc,$html);

fclose($inc);

require $header;

require $filename;

require $footer;

}

?>

にしてみます。$url が途中で切れますので、

http://www.technorati.jp/search/search.html?callCode=-6739.5986&...

のショートカットをコピーして補ってください。

これは「カメラマン」というキーワードを含んだブログ記事の検索結果の新着順である、

http://www.technorati.jp/search/search.html?callCode=-6739.5986&...

のページをブログパーツ用に表示するもので、実行すると

http://yonetone.com/camera/test/?b=ccc&l=fff

のようなファイルになります。複数のブログで使えるように、各部分の色を指定できるようにしています。

この場合は b=ccc で背景色、l=fff でラインの色を指定しています。

検索サイトの動作が結構重いので、$retime 以内の更新はしないようにしてあります。

かなり大変な方法かと思いますが、参考になでば幸いです。

id:kensaku55

素晴らしいアドバイスありがとうございます。早速、設置してみました。そこで、さらに質問ですが、

http://www.technorati.jp/search/search.html?callCode=-6739.5...

47分 前 ( 2006年6月16日 10時22分49秒 )

日時を追加するには、どうすればよいのでしょうか?

2006/06/16 11:17:17

その他の回答(1件)

id:yoneto164 No.1

ヨネちゃん回答回数813ベストアンサー獲得回数942006/06/16 02:36:14ここでベストアンサー

ポイント35pt

私もこういうのがあったら良いなぁと思っているのですが、なかなか無いのですよね。

PHPが使えるなら、安定したサービスの検索結果をブログパーツ用に書き換えて表示することは可能だと思います。

http://cameraman.blog14.fc2.com/

のブログパーツ「CAMERA NEWS (beta)」を改造してみました。

例えば、

log.html (666)

header.php

footer.html

index.php

というファイルをアップロードして、index.php をインラインフレーム内に表示させる方法です。開発中のものをアレンジしただけなのですが、

まず log.html は空のファイルをUPしてパーミッション(666)にします。

header.phpのソースは、


<?php

print "<html>

<head>

<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"

/>

<title>camera news</title>

<meta http-equiv=\"Content-Style-Type\" content=\"text/css\"

/>

<meta content=ja name=Content-Language>

<style type=\"text/css\">

<!--

{

padding-right:0px;

padding-left: 0px;

padding-bottom: 0px;

margin: 0px;

padding-top: 0px;

font-family: Tahoma,Arial,Helvetica,\"ms ui Gothic\",Osaka;

}

* {

margin:0;

padding:0;

font-family: Tahoma,Arial,Helvetica,\"ms ui Gothic\",Osaka;

}

body {

font-size: 9pt;

color: #".$tcolor.";

background-color: #".$bcolor.";

line-height: 1.1em;

}

a{ color: #".$acolor.";

text-decoration: none;

}

a:visited{ color: #".$vcolor.";

text-decoration: none;

}

a:hover{

text-decoration: underline;

}

li{

margin:0.3em 0 0 15px;

list-style-type: disc;

padding: 0px;

list-style-position: outside;

border-bottom: 1px solid #".$lcolor.";

}

div#foot {

text-align: center;

padding-top: 5px;

}

div#pwd {

font-size: 8pt;

}
-->

</style></head><body><ul>

";

?>

次にfooter.html は

</body></html>

index.php のソースは

<?php

// ***設定***

$header = "header.php";//ヘッダーファイルネーム

$footer = "footer.html";//フッターファイルネーム

$retime = 300;//リロードタイム(秒)

//変数を取得

$cat = urlencode($t);//検索用語種別指定

$tcolor = urlencode($c);//文字色

$bcolor = urlencode($b);//背景色

$acolor = urlencode($a);//リンク文字色

$vcolor = urlencode($v);//既リンク文字色

$lcolor = urlencode($l);//線色

$url = "http://www.technorati.jp/search/search.html?callCode=-6739.5986&...

$filename = "log.html";

// ***メインルーチンスタート***

$now = getdate();

$re = $now[0];

$re = $re-$retime;

// ***ログが$retime以内に更新されていれば読み込んで表示***

if (file_exists($filename) && date(filemtime($filename)) > $re) {

// if (date(filemtime($filename)) > $re) {

require $header;

require $filename;

require $footer;

// }

}else{

// ***ログを書き出して読み込み***

$html = "";

$lines = file($url);

foreach ($lines as $l) {

if (strpos($l, '<cite>') != false) {

$title = strip_tags($l, '<a>');

} elseif (strpos($l, 'blockquote') != false) {

$l = split("<p>",$l);

$l = str_replace("</p></blockquote>","",$l[1]);


$l = split("http",$l);

$title = explode("\">", $title, 2);

$title = $title[0]."\" title=\"$l[0]\">".$title[1];


$html .= "<li>".$title."</li>\n";

}

}

$html .= "</ul>\n";

$inc = fopen($filename,"w");

fwrite($inc,$html);

fclose($inc);

require $header;

require $filename;

require $footer;

}

?>

にしてみます。$url が途中で切れますので、

http://www.technorati.jp/search/search.html?callCode=-6739.5986&...

のショートカットをコピーして補ってください。

これは「カメラマン」というキーワードを含んだブログ記事の検索結果の新着順である、

http://www.technorati.jp/search/search.html?callCode=-6739.5986&...

のページをブログパーツ用に表示するもので、実行すると

http://yonetone.com/camera/test/?b=ccc&l=fff

のようなファイルになります。複数のブログで使えるように、各部分の色を指定できるようにしています。

この場合は b=ccc で背景色、l=fff でラインの色を指定しています。

検索サイトの動作が結構重いので、$retime 以内の更新はしないようにしてあります。

かなり大変な方法かと思いますが、参考になでば幸いです。

id:kensaku55

素晴らしいアドバイスありがとうございます。早速、設置してみました。そこで、さらに質問ですが、

http://www.technorati.jp/search/search.html?callCode=-6739.5...

47分 前 ( 2006年6月16日 10時22分49秒 )

日時を追加するには、どうすればよいのでしょうか?

2006/06/16 11:17:17
id:yoneto164 No.2

ヨネちゃん回答回数813ベストアンサー獲得回数942006/06/16 15:37:30

ポイント35pt

早速設置して頂けた旨、非常に嬉しく思います。日時の表示については、index.php のソースを

<?php

// ***設定***

$header = "header.php";//ヘッダーファイルネーム

$footer = "footer.html";//フッターファイルネーム

$retime = 300;//リロードタイム(秒)

//変数を取得

$tcolor = urlencode($c);//文字色

$bcolor = urlencode($b);//背景色

$acolor = urlencode($a);//リンク文字色

$vcolor = urlencode($v);//既リンク文字色

$lcolor = urlencode($l);//線色

$url = "http://www.technorati.jp/search/search.html?callCode=-6739.5986&...

$filename = "log.html";

// ***メインルーチンスタート***

$now = getdate();

$re = $now[0];

$re = $re-$retime;

// ***新しいファイルがあれば読み込んで表示***

if (file_exists($filename) && date(filemtime($filename)) > $re) {

// if (date(filemtime($filename)) > $re) {

require $header;

require $filename;

require $footer;

// }

}else{

// ***書き出して読み込み***

$html = "";

$lines = file($url);

foreach ($lines as $l) {

if (strpos($l, '<cite>') != false) {

$title = strip_tags($l, '<a>');

} elseif (strpos($l, '<br><span style="font-size: 11pt; font-weight:

bold">') != false) {

$l = str_replace("<br><span style=\"font-size: 11pt; font-weight:

bold\">","",$l);

$l = str_replace("</span>&nbsp;<span style=\"font-size:

10pt\">(","",$l);

$time = str_replace(" ","",$l);

$date = "next2";

} elseif ($date == "next2") {

$date = "next1";

} elseif ($date == "next1") {

$time = $time.$l;

$date = "";

} elseif (strpos($l, 'blockquote') != false) {

$l = split("<p>",$l);

$l = str_replace("</p></blockquote>","",$l[1]);

$l = split("http",$l);

$title = explode("\">", $title, 2);

$title = $title[0]."\" title=\"$l[0]\">".$title[1];

$html .= "<li>".$title.$time."</li>\n";

}

}

$html .= "</ul>\n";

$inc = fopen($filename,"w");

fwrite($inc,$html);

fclose($inc);

require $header;

require $filename;

require $footer;

}

?>

等とすることで可能です。

http://yonetone.com/camera/test/?b=ccc&l=fff&c=333

にて実装してみました。

$catは今回使用しないと思われましたので削除しました。

あと、このスクリプトはデータ取得もとのサイトが仕様変更すると正常に動作しませんので、XML仕様等の検索結果表示サイトが出現するまでは、半永久的にBeta版であることをご承知置きください。

id:kensaku55

アドバイスのお礼が遅くなり申し訳ございません。

教えて頂いたように設置したのですが、なぜか日時が表示されません。原因としては何が考えられるでしょうか?

2006/06/19 15:47:42
  • id:yoneto164
    いるか賞ありがとう御座います。メッセージを送信させて頂いておりますが、日時表示の問題は解決しましたでしょうか?
  • id:kensaku55
    アドバイスありがとうございました。日時に関しては、なかなか上手く行かず、再度テストをしているところです。

    ご報告ですが、私の方でサポートしている下記のサイトに設置しました。イメージ通りの仕上がりになりした。本当にありがとうございます。

    サラリーマンの退職金110番|退職金制度の改革実行研究会
    http://www.t-110.jp/

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません