種別[software] cocolog:71180305
セクションJRF のソフトウェア Tips
日時2012年01月07日 14:28:08
元URLhttp://jrf.cocolog-nifty.com/software/2012/01/post.html
タグ[ウェブログ・ココログ関連] [Perl] [JRF 作成ソフトウェア]

ブログのバックアップ&「ひとこと」のクロスリファレンス

私の《ひとこと》サイトで「クロスリファレンス」を張ろうと思い立った。少し試した段階でスパム制限等のため時間がかかることがわかったので、その前に《ひとこと》を「ダンプ」つまりフルバックアップすることにした。

ココログの機能として、他所に移転するのを支援するために、バックアップの機能がもとからあるが、これは、元の URL やトラックバック URL、記事 ID などを記録しないため、今回の目的には適さない。少し迷惑かなぁと思いつつ、 XMLRPC と普通のページ読み込みの両方を使って、「フルバックアップ」するスクリプトを書いた。それが dump_blog.pl である。

このフルバックアップにもとづいて、当初は、URL マップみたいなのを XMLに書いて、Ajax で読み込もうかとも考えたが、私以外の場所で使うことを想定すると、これが巨大になることもありえるかもしれず、するとただでさえ重い《ひとこと》サイトがさらに重くなるかもしれないので、その方法は採用しなかった。代わりに単純に後向きの参照としてトラックバックを張ることにした。スクリプトでリンクを張っているため、検索エンジンにその密結合ぶりをアピールできてないことを疑っていたので、それを補う意味でもこの方法が良いと思われた。それを実現するのが、xref_trackback.pl である。

■使用方法
  
dump_blog.pl と xref_trackback.pl は aboutme2cocolog のパッケージに含んで配布する。aboutme2cocolog の記事に書いてあるように、config.ph をエディットして、make_templates.pl を実行すると、generated/ の下に、dump_blog.pl と xref_trackback.pl ができている。

トラックバックを送るのには特に認証が必要ないので、xref_trackback.pl はブログ名ぐらいしか config.ph のデータを使っていないが、XMLRPC を使う dump_blog.pl は config.ph の中の XMLRPC 関連のパスワード等を使っている。

perl dump_blog.pl --blogid=XXXX > tmp.blog_dump

…などとすると、tmp.blog_dump にフルバックアップが残される。まれにココログの側でエラーが出たことがあったが、何度かトライすると直ったのでエラー処理はそれほどやっていない。ダンプされた形式は、オリジナル形式だが、 XML として解釈できる(はず)。

なお、ダンプに含まれる情報は、ココログのバックアップの上位拡張ではなく、 IP 情報がなくなる。むしろ、他人のプライバシーである IP 情報は除くようにして、プライベートなオンラインストレージなどに置きやすくしてある。

いちおう内部では BASIC 認証にも対応しているので、BASIC 認証をしたい方は dump_blog.pl のソースを適宜いじってもらえばよい。

perl xref_trackback.pl tmp.blog_dump

…とすると、トラックバックを送りはじめる。

<b>なお、トラックバックの通知をメールで受け取る設定をしていると大量のメールが届くので、このコマンドの前に、一連の作業が終るまで、その設定を解除しておいたほうがいいだろう。</b>

これでトラックバックを送れるとは、つまり、ココログを経由してトラックバックを送っているのではなく、まるでトラックバックスパムを送るようにローカルからトラックバックのプロトコルを直接吐いて、トラックバックを送っている。

よって、これがスパムと判断されるのはもっともな話で、トラックバックを受けつけたあとスパムと判断したという警告を発されたり、そもそもトラックバックの受けつけを拒否し、403 Forbidden エラーを返してくることもある。スクリプトでは 403 エラーを返されたときは、3 分待って再送を行う。

当然時間がかかる。476 個のトラックバックを送るのに 4 日ほどかかった。トラックバックを送りきったあと、ココログの管理画面でスパムと判断されたものを「公開」する必要がある。これは手作業で行うが、それまでに 4 日かかったことを思えば、大した作業ではないだろう。orz

トラックバックが全部で何個送られるかを知るには次のようにする。

perl xref_trackback.pl --to=0 tmp.blog_dump

途中でエラーなどで止めてしまって、再開したい場合には範囲指定ができる。 100 番目のトラックバックから、200 番目のトラックバックを指定するときは次のようにする。(なお、↑はその範囲指定の最後を 0 にしただけである。)

perl xref_trackback.pl --from=100 --to=200 tmp.blog_dump

■配布物
  ●aboutme2cocolog.shar。最新版には dump_blog.pl と xref_trackback.pl が含まれている。
■関連
  ●《aboutme2cocolog:アバウトミーの「ひとこと」をココログプロへ移転するツール》。
  ●《Statuses_Editor_Proxy.CGI - XMLRPC と OAuth を組み合わせた「ひとことサイト」ソリューション》。現在は、aboutme2cocolog の一部。
  ●《トラックバック技術仕様書》。
  ●《MovableType で使える XML-RPC API》。
    
更新:2012-01-07
初公開:2012年01月07日 14:28:15
最新版:2012年01月07日 14:32:44

後方参照 (2 件)