数日前、msnのブログからのトラックバックではブログ名が取得できない、と書いたのだけれど、現在の動作状況を見てみると、とくにプログラムをいじらなくても(ブログ名の代わりに)ブログ作成者の「id」が取得できているようだ。msn側の仕様の変更なのか?あるいはこちらがMySQLに移行したことと関係があるのか(ないとは思うが)?
とにかく、ふたたびスクリプトの変更をしなくては。
前回紹介したのは、このようなスクリプト。
<MTPings>
<p id=”p<$MTPingID$>”>
& raquo; <a href=”<$MTPingURL$>”>
<?
$title = “<$MTPingTitle$>”;
if(preg_match(“/^http:\/\/spaces\.msn\.com/”, $title)){
$string = “<$MTPingURL$>”;
$list = explode (“/”, $string);
print “<$MTPingExcerpt$></a> from $list[4]”;
}
else { print “<$MTPingTitle$></a> from “; }
?>
<$MTPingBlogName$><br />
<$MTPingExcerpt$> <a href=”<$MTPingURL$>”>[続きを読む]</a>
</p>
<p class=”posted”>トラックバック時刻: <$MTPingDate$></p>
</MTPings>
msnからのトラックバックだと、先週までは<$MTPingBlogName$>が空欄になっていたので、その代わりとして<$MTPingURL$>からmsnのメンバー名を取り出して($list[4])代入していたのだけれど、どうも<$MTPingBlogName$>でメンバー名が取得できるようになったようで、このスクリプトのままではトラックバック元のサイト名が「from everyday-albiday everyday-albiday」のように二重に表示されてしまう。そこで、
<MTPings>
<p id=”p<$MTPingID$>”>
& raquo; <a href=”<$MTPingURL$>”>
<?
$title = “<$MTPingTitle$>”;
if(preg_match(“/^http:\/\/spaces\.msn\.com/”, $title)){
$string = “<$MTPingURL$>”;
$list = explode (“/”, $string);
print “<$MTPingExcerpt$></a> from$list[4]“;
else { print “<$MTPingTitle$></a> from “; }
?>
<$MTPingBlogName$><br />
<$MTPingExcerpt$> <a href=”<$MTPingURL$>”>[続きを読む]</a>
</p>
<p class=”posted”>トラックバック時刻: <$MTPingDate$></p>
</MTPings>
訂正線を引いた部分を削除する。これで「from everyday-albiday」のように表示されるようになる。
ただし、少なくとも4月6日以前のデータでは<$MTPingBlogName$>は空欄になっている。件数も少なかったので、古いPingデータはMySQLのデータを直接書き換えて対応してみた。
えーと、いつの間にか(9月中旬以降)msnからのトラックバックで、エントリーのタイトルが正常に取得できるようになっていた。
これまでは、普通のブログからのトラックバックだと「タイトル」が入る部分にエントリーの「URL」が、「概要」の部分に「タイトル」が入る形で送信されてきたのだけれど、「URL」だった部分がきちんと「タイトル」になって送信されてきている(あいかわらず概要は送信されず)。
とうことで、上記phpスクリプトの青字部分は不要になりました。
青文字部分を
“<$MTPingTitle$></a> from ”
に置き換えてやればOK。
それにしても、仕様を変えるなら一言教えていただけると嬉しいんだけどな>msnさん
たまに「グレードアップ中です」みたいなメッセージが出てブログにつながらなくなるのは、こうしたバージョンアップ中のためなんですかね。