« Baby Care Report ~体重は8kg越え&上の歯が生えてきた編~ | トップページ | 記述ミス? »

2008年1月22日 (火)

ブログのRSSを取得してmixi日記にメールで投稿するツール「RSS52mixi」

以前から改善しなきゃと思ってた、ブログとmixi日記との同期問題ですが、一応解決するツール「RSS52mixi」を作成しました。

これにより、PCの場合はブログへのクリック数の軽減と、mixiモバイルしか利用していない人達にブログのエントリーの存在をアピールすることができるはずです。
しかし、mixiモバイルだとURLを書いてもリンクを貼ってくれないんで、ブログ側がケータイ対応してても結果的に微妙なんですけどね・・・。(^^;A

同機能を実現したPerlやMovableTypeのプラグインなどサーバサイドのツールはググって見つけられたんですが、実行環境を用意する必要があって面倒だったのでクライアントサイドで手軽に動く物を作る事にしました。

また、WSHを使用したことで導入が容易なのと改造しやすくなっています。

※Ver3.0.0リリースに伴い旧バージョンの配布を終了させていただきました。最新バージョンについてはコチラをご覧ください。(2008/04/11追記)


【ダウンロード】

RSS52mixi Ver.2.0.0(2008/07/23)


【旧バージョン】

RSS52mixi Ver.1.5.0(2008/01/28)


【概要】

ブログの更新が完了後、「RSS52mixi」を実行すると設定したブログのRSSを取得し、前回以降に追加されたエントリー(記事)を「mixiモバイル」の「メールで書く」機能の仕組みを利用してmixi日記にメールで投稿します。

mixi日記への投稿内容は

  • 題名
  • 概要 or 本文
  • 上記エントリーへの固定リンク
  • カテゴリ
  • 作成日時
  • 画像ファイル(本文使用時のみ可能、最大で3ファイル)

となります。

メールで投稿できるWeb系サービスなら、mixi以外の掲示板やブログなどでも使用可能なはずですが、開発経緯的に投稿先はmixiを想定して作成されています。
なので、投稿メッセージの文言に「mixi」の単語が出てきます。
もし他の用途で使われる方は、スクリプトファイルを修正しください。


【実行環境】

OS : Windows XP SP2 以外での検証を行っていません。
Windows 2000以降なら動くよーな気はしてますが・・・動かなかったらゴメンなさい。m(_ _)m
その他:
  • 「Internet Explorer 6」以降が使用できる必要があります。
  • インターネットに接続できる必要があります。
  • 転記元となるブログなどはRSSが配信されている必要があります。
  • mixiモバイルが利用できるようになっている必要があります。

RSS内に含まれる本文については「ココログ フリー」で動作を確認しています。
その他のブログサービスの本文に関しては各ブログサービスの仕様の違いにより、動作しない場合があるかもしれませんので予めご了承ください。


【インストール】

1.「mixiモバイル」の設定

「RSS52mixi」は「mixiモバイル」の「メールで書く」機能を利用します。
そのため、「RSS52mixi」の使用前に「mixiモバイル」にログインし、メニューから「メールで書く」を選択して「メールで書く」機能が利用できるよーにしてください。

2.投稿用メルアドの取得

さらに「mixiモバイル」の「メールで書く」画面の「写真付き日記を書く」を選択し、メール送信画面を開きます。
メール送信画面の送信先に表示されているメールアドレスがmixi日記の投稿用メールアドレスとなりますので、メモってください。

3.「RSS52mixi」のインストール

ダウンロードした「RSS52mixi」の配布ファイルを適当なフォルダに解凍します。

4.「RSS52mixi」の設定

ダウンロードした配布ファイルを解凍すると、RSS52mixi.vbsが展開されていますのでテキストエディタやメモ帳で開き、「各種設定」と書かれた箇所の下記パラメータを設定します。

パラメータ 設定 設定内容
RSSURL 必須 エントリー内容を取得するブログのRSSのURL
SMTPAdd 必須 投稿メールの送信で使用するSMTPサーバのアドレス
ToAdd 必須 mixiモバイルの日記投稿用メールアドレス
FromAdd 必須 投稿メールの送信元メールアドレス
mixiモバイル用に登録したご自身のケータイのメールアドレスとなります。
UseConFlg 必須 本文使用フラグ
以下の値を設定します。
0:概要を使用 1:本文を使用
本文使用時のHTMLタグの扱いについては下記にある【技術情報】を参照してください。
MaxStrLen 必須 本文最大文字数
本文で投稿する際の投稿最大文字数です。
この設定より本文が長い場合は設定された文字数でカットします。
また、カットされた場合は文末に「...」が追加されます。
0で指定すると途中でカットせず全文を投稿します。
UseImgFlg 必須 画像添付フラグ
「本文使用フラグ」で"1:本文を使用"を設定した場合のみ有効となります。
以下の値を設定します。
0:画像を添付しない 1:画像を添付する
添付できる画像はmixiの制限の都合により3ファイルまでとなります。
TitlePrefix 任意 題名の先頭文字
指定された文字列を題名の前に挿入します。
複数のブログの内容をmixi日記に投稿する場合にどのブログの内容なのか区別したい場合や、mixiに直接書いた日記と区別したい場合に使用すると便利です。

※「設定」が"必須"となっている設定は必ず設定する必要があります。


【アンインストール】

レジストリ等は使用していませんので「RSS52mixi」を解凍したフォルダを削除すればOKです。


【使用方法】

ブログの更新が終了して、エントリーが追加されている(=RSSが更新されている)ことを確認したら、RSS52mixi.vbsをダブルクリックして実行します。

※Ver.2.0.0から「POP before SMTP」に対応できなくなりました。
「POP before SMTP」環境の方はメーラーでメールの受信を行ってから「RSS52mixi」を実行するように運用してください。

実行確認で[はい]をクリックすると、設定されたRSSを取得し、mixi日記へメールで投稿を行います。
※実行中の処理状況は表示されません。
※また、RSS52mixiを二重起動すると誤動作しますので、RSS52mixi.vbsを何度もダブルクリックして実行しないよーにしてください。

mixi日記に投稿が完了すると完了メッセージが表示されます。
また、投稿ログの確認もできます。

初回はRSSに掲載されている全エントリーを投稿します。
次回実行時からは前回実行時以降に追加されたエントリーが投稿されるよーになります。


【再投稿ついて】

手を抜いてたので、投稿メールの送信に失敗した場合に再度「RSS52mixi」を実行しても"すでに投稿済み"と言う事で、投稿メールは再送信されません。

RSS52mixi.vbsと同じフォルダに存在するRSS52mixi.datの内容を過去の日時に変更する事で再投稿は可能となります。
よく分からない方はRSS52mixi.datを削除して全エントリーを再投稿し、mixi側の日記の管理で重複した投稿を削除してください。
(一応、RSS52mixi.dat.bakの名前で前回実行時のRSS52mixi.datをバックアップしています)

RSS52mixi.datについては下記にある【技術情報】を参照してください。


【謝辞】

WSHによるRSSの取得とパースは、SIGNAL-9様のブログの記事を参考にさせて頂きました。
掲載元:http://signal9.exblog.jp/1537443/


【著作権/転載など】

サンプルコードを改造した程度なので著作権を主張する気はありません。
って事で、「RSS52mixi」の転載・配布・改造は自由に行っていただいて結構です。

ただし、本ツールの使用によって生じた損害等については作者は何も保証する義務を負いません。
また、バグ等についての対応は出来る範囲での対応となりますので予めご了承ください。


【バージョン履歴】

○Ver.2.0.0(2008/07/23)
・画像ファイルの添付に対応
・メールの送信をフリーウェアの「SMAIL」から「CDO(Collaboration Data Objects)」を使った自前処理に切り替え
 コレに伴い、「POP before SMTP」に対応できなくなりました。
 「POP before SMTP」環境の方は実行前にメールの受信するなどメールサーバの認証を予め行ってください。
 また、1メールにつき約数秒の時間を要しますので終わるまで気長に待ってやってください。
・題名に先頭文字を挿入できるよーにした。

○Ver.1.5.0(2008/01/28)
・本文対応

○Ver.1.0.0(2008/01/21)
・初回リリース


【技術情報】

◆前回以降に追加されたエントリーの判定方法について

RSSに含まれてる<dc:date>と「前回取得したRSSの中で最新の<dc:date>」とを単純に文字列の大小比較して、前回以降に追加されたエントリーなのかを判定しています。
(単純に文字列比較しているだけなのでタイムゾーンは考慮していません。通常タイムゾーンが変更される事は無いはずなので・・・)

「前回取得したRSSの中で最新の<dc:date>」は、RSS52mixi.datファイルに保存されています。

よって、RSS52mixi.datの内容を過去の日時に変更すれば再投稿も可能になります。
また、RSS52mixi.datを削除すれば、RSSに掲載されている全エントリーが投稿対象となります。
(一応、RSS52mixi.dat.bakの名前で前回実行時のRSS52mixi.datをバックアップしています)

◆投稿する順序について

通常ブログは新しいエントリー順に並んでいますので、RSSの並びも新しいエントリー順に並んでいるはずです。

って事で、投稿メールはRSSの後ろにあるエントリーから順に投稿を行います。

ブログのカスタマイズなどで並び順を古い順にされている方は、RSS52mixi.vbsの「バッチファイル用コマンド生成」の部分を変更してください。

◆本文使用時のHTMLタグの扱いついて

mixi日記はHTMLタグの入力に対応していないので、テキスト化は以下の通りに処理を行っています。
また、mixiプレミアム会員の日記装飾機能には対応していません。

タグ 対応
ul 文頭に"・"を追加してそれっぽくします。
ol 文頭に"1."を追加し、数字を1からカウントアップしてそれっぽくします。
blockquote 文頭に全角スペースを1つ追加してそれっぽくします。
a href属性の値を</a>の箇所に [ ***** ] で表記します。
p </p>を改行×2にします。
br 改行にします。
td・th 申し訳ない程度に"|"でセルの区切りを表記します。
各セルの幅の調整は行っていません。

かなりいい加減に行っていますので期待に添えないかもしれません・・・。

◆投稿できる画像ファイルについて

本文に含まれるimgタグのsrcに指定されている画像ファイルをダウンロードしメールに添付しますが、imgタグのsrcはフルパスで指定されている必要があります。(通常のブログサービスではフルパス指定になってるはずです)

また、mixiの無料会員の制限により投稿時に添付する画像ファイルは最大で3枚までに限定しています。
ダウンロード時に本文の上の方から順に画像ファイル数はカウントされ、3枚に達したら以降の画像ファイルはダウンロードしません。

添付対象となった画像に対応するimgタグには"【写真n枚目】(nは1~3の数字)"と注釈が挿入されます。

※1つのエントリー内に含まれている画像でパスは異なるが画像のファイル名が同じケースには対応していません。
その場合、後からダウンロードされる画像ファイルに上書きされちゃいます。(^^;A
(通常のブログシステムでは画像ファイル名は一意となるよーになってるはずなので、この問題は発生しない・・・はずです)

|

« Baby Care Report ~体重は8kg越え&上の歯が生えてきた編~ | トップページ | 記述ミス? »

日常・雑記」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/26493/10008613

この記事へのトラックバック一覧です: ブログのRSSを取得してmixi日記にメールで投稿するツール「RSS52mixi」:

« Baby Care Report ~体重は8kg越え&上の歯が生えてきた編~ | トップページ | 記述ミス? »