adiary専用簡易投稿スクリプト adiaryWriter
2008/08/17
更新情報
- 2008/09/19 Version 1.11をリリース
- 注意 ver 1.10において記事削除時に致命的なバグが発生することを発見しました。ver1.10を使用している方は必ずver 1.11にアップデートしてください。
アップデート時の注意(ver1.03以前)
デフォルトでロードされる設定ファイルがconfig.yamlになりました。お手数ですが、setting.yamlをconfig.yamlリネームしてください。はじめに
adiaryWriterは結城浩氏が開発した「はてなダイアリーライター」のadiary専用版であり、フリーの簡易投稿Rubyスクリプトです。「簡易投稿スクリプトって何?」という方は次の簡易投稿スクリプトとはを、「導入してみようかな」という方はダウンロード、インストール、設定をそれぞれ参照してください。
簡易投稿スクリプトとは
簡易投稿スクリプトとは、ブログを更新する際に行う定型化した作業を、ユーザの代わりに自動で行ってくれるスクリプトのことです。ここでは、adiaryを例に取って説明します。普通、adiaryに記事を投稿するには、以下のような手順を踏む必要があります。
普通に投稿する場合
- ブラウザを起動する
- サイトにアクセスする
- ログインする
- 投稿ページにアクセスする
- 記事を書く
- 投稿する → 投稿完了!
adiaryWriterを使って投稿する場合
- テキストエディタを起動させる
- 記事を書く
- 記事を保存する
- adiaryWriterを起動する → 投稿完了!
ダウンロード
ダウンロードは以下からどうぞ。(アップデートはaw.rbのスクリプトをそのまま上書きするだけでOKです。)adiarywriter-111.zip (2008/09/19)
インストール
adiaryWriterはRubyスクリプトです。したがって、Rubyをインストールする必要があります。まずはRubyをインストールしてください。次に、adiaryはWWW::Mechanizeを使用しているので、WWW::Mechanizeをインストールする必要があります。Windows上ならコマンドラインで、
gem install mechanizeと入力すればインストールされるはずです。
注意 (追記 2009/01/20)
WWW-Mechanizeの仕様がバージョン0.9.0から大幅に変わりました。WWW-Mechanize-0.9.0ではadiaryWriterを利用出来ません。また、現在adiaryWriterをWWW-Mechanize-0.9.0に対応させる予定はありません。したがって、WWW-Mechanizeをインストールする場合は以下のように古いバージョンを指定してください。gem install mechanize -v 0.8.3これで準備は整いました。上記のファイルをダウンロードして解凍し、以下のファイルがあるか確認してください。
- aw.rb (本体)
- readme.txt
- LICENSE.txt
- data
- config.yaml(旧称:setting.yaml) (設定ファイル)
adiaryの対応バージョンについて (追記 2008/08/21)
adiary1.44~2.003まで対応を確認しています。アップデートについて (追記 2008/08/29)
aw.rbをコピーして古いバージョンに上書きしてください。設定
設定方法は、2種類あります。スクリプトファイルaw.rbに直接記入する方法と、設定ファイルdata/config.yaml(旧称:setting.yaml)に記入する方法です。どちらの方法であっても、必須設定を記入すれば使用出来るようになります。以下にそれぞれの方法を纏めたので、お好きな方を参照してください。
スクリプトファイルに直接記入する場合
必須設定
# 文字コード # 'EUC'、'SJIS'、'UTF8'、'NONE'のいずれかで指定してください。 $kcode = '書き換えが必要です'ファイルの文字コードです。WindowsならSJIS、Linux、UnixならEUCを選択すれば問題ないでしょう。
# adiary側の文字コード # 'EUC'、'UTF8'、のいずれかで指定してください。 $server_code = '書き換えが必要です'adiary側の文字コードです。adiaryはEUC版とUTF版の2種類が配布されています。したがって、文字化け起こしたら、もう片方を選択すれば大丈夫なはずです。それでも文字化けが起こったら、上の文字コードを見直してください。
# ブログURL # adiary.cgiが設置されているURL # 必ず行末に"/"(スラッシュ)を入れてください $url_blog = '書き換えが必要です'ブログのURLです。このブログの場合、http://junthr.blog.abk.nu/になります。URLを改変していなければ、http://www.example.com/adiary/adiary.cgi/のように、adiary.cgiも含めて記入してください。
# ログインID $login_id = '書き換えが必要です'ログイン用のIDです。下はログイン画面ですが、ここのIDの部分に記入するものを入れてください。
# ログインパスワード $password = '書き換えが必要です'ログイン用のパスワードです。上の図でpassの部分に記入するものを入れてください。
# 日記帳ID # URLを改変している場合は空にしてください → $user_id = '' $user_id = '書き換えが必要です'日記帳用のIDです。URLを改変している場合は空にしてください。旧称シングルユーザーモードで使用している場合も同様です。
# アップローダーURL # uploader.cgiが設置されているURL # 必ず行末に/(スラッシュ)を入れてください $url_uploader = '書き換えが必要です'アップローダーのURLです。このサイトの場合、http://junthr.blog.abk.nu/uploader.cgi/になります。*1
任意設定
# アップロード出来る画像の拡張子 # 小文字で入力してください。"."(ドット)は不要です $a_extension_image= ['jpg', 'jpeg', 'gif', 'png']アップロードできる画像ファイルの拡張子です。種類を増やしたい場合は、ここに追加してください。ただし、adiaryの本体側でも許可を与える必要があります、
# アップロード出来るファイルの拡張子 # 小文字で入力してください。"."(ドット)は不要です $a_extension_archive = ['lzh', 'zip', 'mp3', 'm4a', 'wma', 'ogg', 'avi', 'wmv','flv','mp3']アップロードできる書庫ファイルの拡張子です。種類を増やしたい場合は、ここに追加してください。ただし、adiaryの本体側でも許可を与える必要があります。
# アップロード出来るファイルサイズの上限 $sizelimt_uploadfile = 8*1024*1024アップロードできるファイルサイズの上限です。デフォルトでは8MBとなっています。アップロード出来るファイルサイズを増やしたい場合は、ここに記入してください。ただし、adiaryの本体側でも増やす必要があります。
# 設定ファイル $file_config = './data/config.yaml'設定ファイルを指定しなかった場合にロードされる設定ファイルです。yaml形式で記述してください。*2
# 記事番号とタイトルを保存したファイル $file_pkeytitle = './data/pkey_title.dat'記事番号とタイトルを保存したファイルです。必要な場合を除いて改変しないでください。
# adiaryWriterを起動した時刻を記録したファイル $file_touch = './data/touch.dat'adiaryWriterを起動した時刻を記録したファイルです。必要な場合を除いて改変しないでください。
# Cookieを保存したファイル $file_cookie = './data/cookie.dat'ログインして得られたクッキーを記録したファイルです。必要な場合を除いて改変しないでください。
# バックアップファイルを保存するフォルダのパス $path_backupfolder = './backup'投稿した記事が邪魔になった場合に、それらを格納しておけるフォルダのパスです。このフォルダに記事を格納しておくと、もし同じファイル名(タイトル)の記事を投稿した場合、記事を上書きするかどうかの確認を行います。
# バックアップフォルダの使用 # true、falseのいずれかで指定してください。 $f_backupfolder = false上記のバックアップフォルダを使用する場合はtrueを代入してください。
# ImageMagickの使用 # true、falseのいずれかで指定してください。 $f_imagemagick = falseImageMagickを使用して画像を縮小出来る場合はtrueを代入してください。
# 記事ファイル側のタイムスタンプの変換 # true、falseのいずれかで指定してください。 $f_timestamp = falseはてなダイアリーライターでもあった、時刻記法をファイル側にも反映させるかどうかの設定です。使用する場合はtrueを代入してください。
# 記事ファイル側の画像・ファイルのURLの変換 # true、falseのいずれかで指定してください。 $f_img_arc_url = false画像ファイルや書庫ファイルのURLを変換するかどうかの設定です。この設定をtrueにすると、adiaryWriterのアップロードオプションを使用した時、ファイル側に記述された[awup:hogehoge.jpg]などという文字列が、と変換されます。
# 関数実装タグ[ adiary:this]を記事ファイル側にも反映 # true、falseのいずれかで指定してください。 $f_adiarythis = false関数実装タグhttp://junthr.blog.abk.nu/junthr/00を記事側にも反映させる場合はtrueを代入してください。
特殊設定
# 記事用拡張子 $extension_postfile = '.txt'記事ファイルとして扱う拡張子を変更したい場合は変えてください。
# ログインしているかをチェック出来る文字列 $write_links_text = "日記を書く"スケルトンファイルの「日記を書く」という部分を変更している場合は変えてください。
# 特定のフォーマットのタイトルを自動で変換 # YYYY-MM-DDというファイル名を投稿した時に、タイトルがYYYY/MM/DDになります $f_yyyy_mm_dd = falseYYYY-MM-DD.txtというファイルを投稿した時、タイトルを、"YYYY/MM/DD"にします。
# ユーザエージェント $user_agent = "adiaryWriter #{$VERSION}"ユーザエージェントを変更したい場合は変えてください。
# 処理間隔時間 # サーバの処理が遅い場合は数値を上げてください。 $response_time = 0.5連続して記事を投稿した時に処理が遅くなった場合は数値を上げてください。負荷が軽くなります。
設定ファイルを使用する場合
必須設定
Local Encode: 書き換えが必要ですファイル側の文字コードです。SJIS、EUC、UTF8、NONEのうちどれかを記入してください。
Server Encode: 書き換えが必要ですサーバー側の文字コードです。EUCまたはUTF8を選択してください。
adiary URL: 書き換えが必要ですブログのURLです。このブログの場合、http://junthr.blog.abk.nu/になります。URLを改変していなければ、http://www.example.com/adiary/adiary.cgi/のように、adiary.cgi/も含めて記入してください。
Login ID: 書き換えが必要ですログイン用のIDです。下はログイン画面ですが、ここのIDの部分に記入するものを入れてください。
Password: 書き換えが必要ですログイン用のパスワードです。上の図でpassの部分に記入するものを入れてください。
User ID: 書き換えが必要です日記帳用のIDです。URLを改変している場合はUser ID: ''としてください。旧称シングルユーザーモードで使用している場合も同様です。
Uploader URL: 書き換えが必要ですアップローダーのURLです。このサイトの場合、http://junthr.blog.abk.nu/uploader.cgi/になります。*1
任意設定
Enable Image File Type: - jpg - jpeg - gif - pngアップロードできる画像ファイルの拡張子です。種類を増やしたい場合は、ここに追加してください。ただし、adiaryの本体側でも許可を与える必要があります、
Enable Arcive File Type: - lzh - zip - mp3 - m4a - wma - ogg - avi - wmvアップロードできる書庫ファイルの拡張子です。種類を増やしたい場合は、ここに追加してください。ただし、adiaryの本体側でも許可を与える必要があります。
Enable Upload File Size: 100KBアップロードできるファイルサイズの上限です。デフォルトでは100KBとなっています。アップロード出来るファイルサイズを増やしたい場合は、ここに記入してください。記述方法にはKBとMBが使用できます。ただし、adiaryの本体側でも増やす必要があります。
Pkey Title File: ./data/pkey_title.dat記事番号とタイトルを保存したファイルです。必要な場合を除いて改変しないでください。
Touch File: ./data/touch.datadiaryWriterを起動した時刻を記録したファイルです。必要な場合を除いて改変しないでください。
Cookie File: ./data/cookie.datログインして得られたクッキーを記録したファイルです。必要な場合を除いて改変しないでください。
Backup Folder Path: ./backup投稿した記事が邪魔になった場合に、それらを格納しておけるフォルダのパスです。このフォルダに記事を格納しておくと、もし同じファイル名(タイトル)の記事を投稿した場合、記事を上書きするかどうかの確認を行います。
Use Backup Foloder: false上記のバックアップフォルダを使用する場合はtrueを代入してください。(trueが大文字だとエラーになります)
Image Magick: falseImageMagickを使用して画像を縮小出来る場合はtrueを代入してください。(trueが大文字だとエラーになります)
Change Timestamp: falseはてなダイアリーライターでもあった、時刻記法をファイル側にも反映させるかどうかの設定です。使用する場合はtrueを代入してください。(trueが大文字だとエラーになります)
Change Upload Url: false画像ファイルや書庫ファイルのURLを変換するかどうかの設定です。この設定をtrueにすると、adiaryWriterのアップロードオプションを使用した時、ファイル側に記述された[awup:hogehoge.jpg]などという文字列が、[image:user_id:hogehoge.jpg:hogehoge.jpg]と変換されます。(trueが大文字だとエラーになります)
Use adiary this: false関数実装タグ[adiary:this]を記事側にも反映させる場合はtrueを代入してください。
特殊設定
Post File Extension: .txt記事ファイルとして扱う拡張子を変更したい場合は変えてください。
Write Links Text: 日記を書くスケルトンファイルの「日記を書く」という部分を変更している場合は変えてください。
Change YYYY-MM-DD: falseYYYY-MM-DD.txtというファイルを投稿した時、タイトルを、"YYYY/MM/DD"にします。
User Agent: Mechanizeユーザエージェントを変更したい場合は変えてください。
Response Time: 0.5連続して記事を投稿した時に処理が遅くなった場合は数値を上げてください。負荷が軽くなります。
使い方 (追記 2008/09/12)
1つのファイルを投稿/更新/削除したい場合
コマンドライン上でruby aw.rb hoge.txtと入力すれば、hoge.txtが投稿/更新/削除されます。ファイル名に空白がある場合は、"(ダブルクオート)で括ってください。
2つ以上のファイルを投稿/更新/削除したい場合
コマンドライン上でruby aw.rb *.txtと入力すれば、aw.rbと同じフォルダの中にあるtxtファイルが投稿/更新/削除されます。
設定ファイルを使用して投稿したい場合
コマンドライン上でruby aw.rb -sf (configfile)と入力すれば、dataフォルダ内にあるconfig.yamlの設定をロードして、aw.rbと同じフォルダの中にある全ての投稿用拡張子のファイルが投稿されます。
configfileに設定ファイルを指定すると、その設定ファイルをロードして投稿します。指定しなかった場合は、./data/config.yamlが使用されます。
設定/設定ファイルを確認したい場合
コマンドライン上でruby aw.rb -csと入力すれば、aw.rbの設定が表示されます。また、
ruby aw.rb -csf (configfile)と入力すれば、設定ファイルの設定が表示されます。(configfile)に設定ファイルを指定すると、同様にconfigfileの設定が表示されます。
使用上の注意
ライセンスついて
adiaryWriterはGPLのもとによって配布されているライブラリWWW::Mechanizeを使用しています。したがって、このスクリプトもGPLが適用されます。ファイルの上書きとファイル名使用禁止文字について
adiaryWriterはファイル名によって記事が投稿されたかどうかを判断しています。したがって、同一ファイル名の記事が既に投稿されていた場合、adiary側の記事が上書きされてしまいます。同じタイトルで投稿したい場合は、一行目に[TITLE:hoge2]などと記入すれば、adiary側のタイトルはhoge2になります。また、OSに依存したファイル名使用禁止文字(Windowsなら/ \ : ; "など)についても同様に[TITLE]オプションを使用してください。
[adiary:this ]が反映されない件について (追記 2008/08/21)
[adiary:this ]をファイル側にも反映する場合は、一度投稿し、再度ファイル側を編集し、もう一度投稿すれば反映されるようになります。1つも日記が無い日記帳に記事を投稿するとログイン出来ない件について (追記 2008/08/21)
原因不明のバグです。今の所解決の目処が立たないので仕様だと思ってください。対処法
adiary側で1つでも記事を投稿すれば、adiaryWriter側でもログイン出来るようになります。自己責任でご利用ください
ライセンス上、そうなります。バグかな?と思ったら (追記 2008/08/21)
お手数ですが、件名を「adiaryWriterのバグ」として下記のメールアドレスにメールをお送りください。解ってるバグ
[adiary:this ]がスケルトンファイルやシステムによって反映されないことがある。→ 勘違いでした (訂正 2008/08/21)- 二度目にアップロードされた同一名のファイルがエラーとして処理されない。
- 日記が無い状態で投稿するとログイン出来ない (追記 2008/08/21)