1657 への返信

URLに反応してそのリンク先のページのタイトルを表示させる方法についての質問Noname - No.1657
過去ログで検索しても見つからなかったので質問させてください。
誰かがURLを貼ったとします、するとそのリンク先のページの名前を下記にある例のように表示させたいのです。



<URLを貼った人> http://www.konami.jp/products/mgs2bd_kd332/
[マクロを組んでる人] METAL GEAR SOLID 2 BANDE DESSINEE

こうするにはどういったマクロあるいはスクリプトを組めばよいのでしょうか、教えてください。
使用してるのは最新版のlime231です。
ひゅー - No.1658
スクリプトを使えばHTTPでページを取ってくることができます。
ヘルプのgoogle検索の例を少し修正して書いてみました。

function event::onChannelText(prefix, channel, text)
{
if (text.match(/.*(http:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+).*/i)) {
var url = RegExp.$1;
if (url.length > 0) {
var req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = function() {
if (req.readyState == 4) {
var s = req.responseText;
if (s.match(/<title>(.+?)<\/title>/i)) {
var title = RegExp.$1
send(channel, title);
}
}
}
req.open('GET', url, true);
req.send('');
}
}
}
}

このスクリプトはチャンネルの発言の中からURLらしき物を探し、
見つけた場合それを取得し、titleタグで囲まれた部分を発言します。
ただし、URLが画像ファイル等の場合でも容赦なく読みに行きますので、
エラーで落ちる可能性はあります。
悪意のあるページを故意に張り付ける人もいるでしょうし、
もう少し手を入れた方が良いかもしれません。
Noname - No.1659
>ひゅーさん
回答ありがとうございます!
スクリプトだったんですね、ありがたく使わせていただきます。
身内で使用するのみなのでページの内容についてはおそらく大丈夫だと思います。
いろいろとお手数掛けました><
両断な人 - No.1781
初めまして、両断な人と申します。似た様な質問なので、便乗させて頂きます。

URLタイトル表記のスクリプト(http://d.hatena.ne.jp/gede99/20080504/1209905370)を使用させていただいています。
URLの前に「秘密」をつけると反応しなくなるようにしたいのですが、どうすればいいのかと悩んでおります。
お知恵をお貸しいただければと思いまして、書き込みさせて頂きました。
稚拙な部分が目立つとは思いますが、何卒ご協力のほどお願い致します。

以下の項目を必ず守ってください。守っていない書き込みは無視されるかも知れません。

あなたにとっては1回の質問でも、答える側は1回ではないことを理解してください。

  • 文章はきちんと状況が伝わるように丁寧に書いてください。
  • 話し言葉での書き込みは禁止します。
  • 過去ログを検索して確認してから書き込んでください。
  • 内容がわかるタイトルをつけること。要望する場合は[要望]を先頭につけること。
  • 動作確認はかならず最新版で行ってください。
  • 不適切な文章は、管理人が削除、編集することがあります。
名前*
メッセージ*
パスワード (編集・削除に使用。16文字以内)