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;
<<
この部分でプレーンテキストに変換されていると言うことまでは判ったのですが、ここをどう修正すれば元のダイアリーそのままに転載することが出来るのでしょうか?
*答え
$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メソッドでテキスト化してます。
回答ありがとうございました。
該当の方法で(mixi以外へは)HTMLそのままに出力することができるのを確認できました。
しかしmixi日記に関しては代わらずタグがすべて消去された状態で書き込まれるので、Plaggar以外の場所での不具合が起こっているのでないかと考えられます。
なのでもう一度RSS取得から書き込みまでの流れをすべて洗ってみようと思います。