2006/04/03(月) 04:53:59 (JST)
Perlでトラックバックを送信する方法。意外と簡単。
今まで回りくどい書き方ばかりしていたので、最低限プログラミングに関するエントリだけは回りくどさをなくそうかと思っただけで実行するかは不明。なんだそれ。
というわけで、今回はPerlでトラックバックを送信する方法のメモ。
まず前提知識。
基本的にトラックバックはHTTP POSTリクエストで送信します。
指定可能なパラメータにはtitle, excerpt, url, blog_name, charsetなどがあるらしいです。
※charsetに関しては対応していないブログがある可能性は大きい
────────────────────
もう一つ前提知識として、トラックバックをポストしたときにどんなレスポンスが返ってくるかも知っておいた方がいいと思います。
というか、これ以上の知ったかぶりは僕にはできません。(え。
さて、実際にトラックバックを送信するスクリプトを載せておきます。
というわけで、今回はPerlでトラックバックを送信する方法のメモ。
まず前提知識。
基本的にトラックバックはHTTP POSTリクエストで送信します。
指定可能なパラメータにはtitle, excerpt, url, blog_name, charsetなどがあるらしいです。
title | トラックバックのタイトル |
excerpt | トラックバックの概要 |
url | トラックバック送信元URL |
blog_name | トラックバック送信元blog名 |
charset | トラックバック送信側文字エンコード |
────────────────────
もう一つ前提知識として、トラックバックをポストしたときにどんなレスポンスが返ってくるかも知っておいた方がいいと思います。
成功時のレスポンス(例)
<?xml version="1.0" encoding="utf-8"?> <response> <error>0</error> </response>
失敗時のレスポンス(例)
<?xml version="1.0" encoding="utf-8"?> <response> <error>1</error> <message>エラーメッセージ</message> </response>さて、Perlでトラックバックを送信するだけなら、トラックバックに関する知識はこの程度でいいと思います。
というか、これ以上の知ったかぶりは僕にはできません。(え。
さて、実際にトラックバックを送信するスクリプトを載せておきます。
※LWP::UserAgentというモジュールが使えることが前提です。
とまぁ、トラックバックのパラメータに何を含めるかさえ分かればそんなに難しいことではないということです。
sub postTrackbacksFromMyBlog { my %post; # トラックバックの内容のハッシュ(連想配列) $post{'title'} = 'タイトル'; # ブログのタイトルではなくエントリ(記事)のタイトル $post{'excerpt'} = '概要'; # ブログのエントリ(記事)の概要。要約。 # 多くの場合、記事の内容の頭から十数文字〜数百文字が使われるようです。 $post{'url'} = '送信元URL'; # ブログのURLではなくエントリ(記事)へのパーマリンク(Permalink; 固定リンク)のURL $post{'blog_name'} = 'Blog名'; # ブログのタイトル。 $post{'charset'} = 'euc'; # 送信側の文字のエンコード。 # EUC-JPの場合は'euc'でいいと思いますがブログによって実装が異なっている可能性はあります。 my @to = (送信先URLの入った配列); # トラックバックURL。 # 複数のURLに送信するスクリプトにしてみました。というわけで配列。 foreach (@to) { my $error = 1; require LWP::UserAgent; use HTTP::Request::Common; my $ua = LWP::UserAgent->new; my $response = $ua->request(POST "$_", \%post); if ($response->is_success) { if ($response->content =~ m`<error>(.+)</error>`i) { $error = $1; } } if ($error) { print "$_には送信できませんでした。\n"; } else { print "$_に送信できました。\n"; } } }※エラーの判定はXMLのParserを使った方が正確だとは思いますが、とりあえずここでは適当に。
とまぁ、トラックバックのパラメータに何を含めるかさえ分かればそんなに難しいことではないということです。
このエントリへのコメント
dddd コメントの投稿に失敗しました。YOCKOW@ひあるび管理人 >ddddさん
コメントの投稿に成功しています。