偏読日記@はてな

本を読んだりゲームをしたり、インターネットの話をしたりします。小説も書きます。

PlaggerでBlogとmixi日記を同期させた(完全版)

Piece of a Puzzle - Weblog - P::P::Publish::MixiDiary #2 で紹介されているPublish::MixiDiaryを利用してはてなダイアリーからmixi日記へ自動転載をここ数ヶ月行ってきて、唯一困っていたことは転載の際にタグが全て消去されたプレーンテキストになってしまうことでした。
<a>タグが消去されリンクが消えるおかげで、はてなダイアリーとmixi日記で全く文意の異なるものになって非常に困っていました。

数ヶ月間悩み続けたこの問題に、先週末を費やしてようやく一つのめどが付いたのでBlogに書いておきます。
別に大したことをしているわけではないのですけど、いくら検索しても俺と同じ事で悩んでいる人が一人も見あたらなかったのでこれは書かないといけないと思いまして。
世の中のPublish::MixiDiaryで自動転載している人は<a>タグが消えてそれで満足しているんですかね?それとも外部日記設定にしないで自動で全文転載する俺のような奴が珍しいのか。




Publish::MixiDiary自体がスクリプトの内部でフィードをプレーンテキストに変換してしまうので、まずはここを修正。これに関しては俺の以前の人力検索での質問を参照。
・Plaggerを使って、はてなダイアリーの日記をmixi日記に自動で転載しています。 - 人力検索はてな


しかしmixi日記入力欄自体がどうやら自動で入力されたHTMLタグを消去するようなので、メール投稿等の手段を試した結果、Filter::Regexpで<a>タグの部分を書き換えるのが最適なのだという結論に達しました。


ブログのエントリーをmixi日記に自動投稿する「RSS2mixi」 ::: creazy photograph


このスクリプトの、「画像タグはカメラアイコン+URL」「リンクタグはPCアイコン+URL」の部分(ソース中程)の正規表現のみを借用。Filter::Regexpの変換パターンに設定し、現在以下に示すYAMLでmixi日記への自動転載を行っています。

global:
 assets_path: assets/
 timezone: Asia/Tokyo
 log:
  level: debug

plugins:
  - module: Subscription::Config
    config:
      feed:
        - url: http://d.hatena.ne.jp/a-park/rss

  - module: Filter::Reverse
  - module: Filter::Rule
    rule:
      module: Deduped

#エントリ内の画像を取得して最初の3枚を投稿
  - module: Filter::FindEnclosures
  - module: Filter::FetchEnclosure
    config:
      dir: /home/hoge

#エントリ内の<a> <img>を変換
  - module: Filter::Regexp
    config:
      regexp: s/<img.*?src=[\'\"](.*?)[\'\"].*?>/([m:133]$1)/g
  - module: Filter::Regexp   
    config:
      regexp: s/<a.*?href=[\'\"](.*?)[\'\"].*?>(.*?)<\/a>/$2:($1)/g

  - module: Publish::MixiDiary
    config:
      username: hoge
      password: password

YAMLをUTF-8で保存しないと()の部分が文字化けするので注意。俺はこれで最後の最後に詰まりました。
<a>タグをそのまま保持して投稿するという当初のもくろみは達成できませんでしたが、リンクが完全に消えていた以前よりは遙かにまし。
これで心置きなくはてなダイアリーからの自動転載が出来ますよ。ここまで本当に長かった。