msnからのトラックバック2

数日前、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のデータを直接書き換えて対応してみた。

msnからのトラックバック2」への1件のフィードバック

  1. えーと、いつの間にか(9月中旬以降)msnからのトラックバックで、エントリーのタイトルが正常に取得できるようになっていた。
    これまでは、普通のブログからのトラックバックだと「タイトル」が入る部分にエントリーの「URL」が、「概要」の部分に「タイトル」が入る形で送信されてきたのだけれど、「URL」だった部分がきちんと「タイトル」になって送信されてきている(あいかわらず概要は送信されず)。
    とうことで、上記phpスクリプトの青字部分は不要になりました。
    青文字部分を
    “<$MTPingTitle$></a> from ”
    に置き換えてやればOK。
    それにしても、仕様を変えるなら一言教えていただけると嬉しいんだけどな>msnさん
    たまに「グレードアップ中です」みたいなメッセージが出てブログにつながらなくなるのは、こうしたバージョンアップ中のためなんですかね。

コメントは停止中です。