2005年03月26日 (土)

RSS バージョン相互変換コマンド rssconv の使い方

β版を公開している RSS のバージョン間相互の変換コマンド rssconv の使いかたについて説明します。

BlogWaveStudio も RSS 2.0 のファイルを生成するようです。ですからこのエントリは iBlog カテゴリに入れていますが、BlogWaveStudio にも適用できます。つまり BlogWaveStudio のブログも mixi の日記など RSS 1.0 にのみ対応したサービスを利用できるようになります。

基本的な使い方は「標準入力から元の RSS を流して、標準出力で変換後の RSS を取得する」というもので例えば RSS 2.0 のファイル rss.xml から RSS 1.0 のファイル index.rdf を作るときは

rssconv < rss.xml > index.rdf
とします。

しかしながら、元になる RSS ファイルも変換後の RSS ファイルもリモート上のものですから上のような単純な使い方ができません。そこで iDisk 上の RSS ファイルを元に変換した RSS を iDisk 上に作成するコマンドの作り方を説明します。


概要

まず、rssconv をダウンロードしてからそれを使用できるように環境を整備してください。β版のダウンロードはエントリ「RSS の相互変換スクリプトを作ってみた」、必須の整備内容については先のエントリ「RSS バージョン相互変換コマンド rssconv の環境構築」に書きました。Mac ユーザには馴染みが薄いターミナルを使用しますが、コメントにある t0moriさん とのやりとりを参考もしてください。

その上で、エントリ「決まったファイルを iDisk に一発アップロード」とほぼ同様の手順でコマンドを作成します。このコマンドは iDisk 上の rss.xml をダウンロードしてそれを rssconv に渡し、その出力を iDisk にアップロードするという内容になります。

ダウンロード

iDisk などリモートの RSS を変換するためのコマンドのテンプレートを下記のリンクからダウンロードしてください。

リンク先はディスクイメージファイルを圧縮してあります。展開すると RemoteRSSConv.dmg というファイルが作成されるのでこれをダブルクリックしてマウントしてください。マウントされたボリュームには RemoteRSSConv というコマンド(のテンプレートファイル)が入っています。この RemoteRSSConv をお好みのフォルダにコピーしてください。例えばスクリプトメニューから使用できるようにするために Library/Scripts/ の下のどこかに入れるというのもよいアイデアです。コピー先のファルダ名やその上位のフォルダ名に日本語が含まれないところを選ぶことをお薦めします。以後、このコピーしたファイルを操作します。

このサイトは Mac ユーザがターゲットなので dmg ファイルとして提供しましたが、Mac ユーザでない方向けにその RemoteRSSConv の内容を書いておきます。左端の番号は行番号ですので、ファイルには含まれていません。

 1 SrcUri=http://homepage.mac.com/yuji_okamura/iblog/iSawIt/rss.xml
 2 DstUri=http://idisk.mac.com/yuji_okamura/Sites/iblog/iSawIt/index.rdf
 3 DstVersion=1.0
 4 DstUserName=yuji_okamura:himitsu
 5 
 6 TmpFile=/tmp/rss.$$.xml
 7 
 8 curl $SrcUri | rssconv -o $DstVersion > $TmpFile
 9 curl -u $DstUserName -T $TmpFile $DstUri
10 echo
11 rm -f $TmpFile

RemoteRSSConv の書き換え

  1. 変換元の RSS の URI を指定する。

    1 行目の http://homepage.mac.com/yuji_okamura/iblog/iSawIt/rss.xml の部分をあなたの RSS の URI に変更してください。iBlog の場合、多くは iSawIt/ を取り除き yuji_okamura をあなたの .Mac アカウント名に置き換えるだけです。

  2. 変換先の RSS の URI を指定する。

    2 行目の http://idisk.mac.com/yuji_okamura/Sites/iblog/iSawIt/index.rdf の部分をあなたの RSS の URI に変更してください。iBlog の場合、多くは iSawIt/ を取り除き yuji_okamura をあなたの .Mac アカウント名に置き換えるだけです。

    この例では RSS 2.0 を RSS 1.0 に変換するので変換先のファイル名が index.rdf になっています。RSS 1.0 ではファイル名を index.rdf にするのが慣例です。また、iDisk にアップロードするのでサーバ名は idisk.mac.com とし、iDisk 上のパス名を使用するので変換後のファイルを参照してもらうときの URI とは異なる URI になっています。

  3. 変換後の RSS のバージョンを指定する。

    3 行目の 1.0 を書き換えます。iBlog や BlogWaveStudio では RSS 2.0 から RSS 1.0 への変換になるので不要ですが、RSS 0.9, 0.91, 2.0 のどれかに変換するときはそれぞれ 0.9, 0.91, 2.0 と書き換えてください。

  4. アップロード先のユーザ名を指定する。

    4 行目の yuji_okamura:himitsu をあなたの .Mac アカウント名に置き換えてください。RemoteRssConv を実行時にパスワードが訊ねられますが、この入力を省きたいときは .Mac アカウント名:.Mac パスワード と書いてください。ただし、その場合はパスワードがファイルに保存されるので取り扱いには十分注意してください。一応 dmg ファイル作成時にはファイルの所有者以外は参照も書き込みも実行もできないようにパーミッションを付けましたが、コピーするときに変わってしまっているかもしれません。パーミッションについては後述します。

  5. rssconv のパス名を変更する。

    rssconv をパスが通ったディレクトリ(フォルダ)に保存した場合は必要ありません。/usr/local/bin などにパスを通すという操作がわからない場合や面倒な場合は次を行ってください。

    8 行目の rssconv の部分を絶対パスで書き換えます。絶対パスとはディスクのトップから辿るディレクトリ達も含めたファイルの指定です。例えば Mac OS X ではユーザ myname の Documents フォルダの直下の rssconv ファイルでしたら /Users/myname/Documents/rssconv になります。よくわからない場合は次の方法で調べることができます。Finder の表示は例えば Documents フォルダを「書類」と変換しているので信用しないでください。

    1. ターミナルを起動する。
    2. 開いたターミナルのウィンドウに rssconv をドラッグ&ドロップする。
    3. 表示された文字列をコピーする。
    4. 用が済んだのでターミナルを終了する。
    これでクリップボードにコピーされた文字列が rssconv のパス名です。
  6. RemoteRSSConv を保存する。

RemoteRSSConv の実行

保存した RemoteRSSConv をダブルクリックすると実行されます。もしダブルクリックしても実行されないときは次のセクションに進んでください。

スクリプトフォルダ(Library/Scripts/)以下に入れた場合もスクリプトメニューから選択することで実行できます。

パーミッションの変更

一応 dmg ファイル作成時にパーミッションは整備してありますが、コピーの段階で変わってしまうかもしれません。前のセクションで RemoteRSSConv をダブルクリックしても実行できなかった場合は次の手順でパーミッションを修正してください。

  1. ターミナルを起動する。
  2. 開いたターミナルのウィンドウにコマンドの前半を書く。

    次のように書いて最後にスペースを入れます。

    chmod 0700
  3. rssconv ファイルをターミナルのウィンドウにドラッグ&ドロップする。

    もちろんドロップ先は先ほどコマンドの前半を書いたウィンドウです。そうすると続きに rssconv のパス名が書かれます。

  4. 改行して実行する。

    rssconv をドロップしたウィンドウで改行をタイプしてください。パーミッションの変更が行われます。成功すると chmod と書く直前と同じ文字列(シェルプロンプト)が即座に再び表示されます。それ以外のことが表示されたときは何か間違っています。もう一度 2 からよく確かめてやり直してください。

  5. 用が済んだのでターミナルを終了する

Posted: 13:48    | Comment | Trackback


以下、類似エントリです。