Plaggerを使って、はてなダイアリーの日記をmixi日記に自動で転載しています。

Publish::MixiDiary ( http://xcezx.net/blog/development/plagger-plugin-publish-mixidiary-2.html )を使用しているのですが、mixi日記に転載される際にリンクが全てテキストに置き換えられてしまいます。

例: <a href="http://hatena.jp">はてな</a> → はてな
(mixiプレミアムを使用しているので、日記内で<a>タグは使用可能です)

Publish::MixiDiary 44行目からの

>>
my $e = $args->{entry};
(中略)
my $body = $e->body_text;
<<

この部分でプレーンテキストに変換されていると言うことまでは判ったのですが、ここをどう修正すれば元のダイアリーそのままに転載することが出来るのでしょうか?

回答の条件
  • 1人2回まで
  • 登録:2008/08/08 21:46:40
  • 終了:2008/08/15 21:50:02

回答(1件)

id:otsune No.1

otsune回答回数35ベストアンサー獲得回数52008/08/12 00:34:18

ポイント60pt

*答え

$e->body

*解説

(Plagger内部について知りたくなければ読む必要は有りません)

Plagger::Entryオブジェクトにbodyというテキストアクセッサが定義されていて、それはPlagger::Textオブジェクトになってる。

そして正確に言うとPlagger::Entryの->body->dataにHTMLソースが入っているのだけど、lib/Plagger/Text.pmで

use overload q("") => sub { $_[0]->data }, fallback => 1;

とオーバーロードされているので普通に->bodyでアクセスするだけでok(のはず)。

ちなみにbody_textはlib/Plagger/Entry.pmで

sub body_text {
    my $self = shift;
    $self->body ? $self->body->plaintext : undef;
}

とわざわざPlagger::Text::plaintextメソッドでテキスト化してます。

id:a-park

回答ありがとうございました。

該当の方法で(mixi以外へは)HTMLそのままに出力することができるのを確認できました。

しかしmixi日記に関しては代わらずタグがすべて消去された状態で書き込まれるので、Plaggar以外の場所での不具合が起こっているのでないかと考えられます。

なのでもう一度RSS取得から書き込みまでの流れをすべて洗ってみようと思います。

2008/08/14 21:35:42

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません