Hatena::ブログ(Diary)

児童小銃 RSSフィード

みえない自由が欲しくて
みえない銃を撃ちまくる
THE BLUE HEARTS 「TRAIN-TRAIN」

なんばりょうすけの仮住まいです

連絡先: rna◎cyber●email●ne●jp


プライバシーポリシー


2004-08-20

[][] はてダライター

結城浩さんが「はてなダイアリーライター」なるはてダアップロードツールを開発中。

http://www.hyuki.com/techinfo/hatena_diary_writer.html

id:hyuki:20040819 id:hyuki:20040820

ひょっとしてこれは僕の求めているものなのでは。。。と思い早速お試し中。ちゃんとアップできるかな?

via: id:nisike:20040820

→ちょっと失敗。。。

  • その日の日記タイトルを空欄にしたい場合は一行目を空行に。* で始まる行だからといってよきにはからってはくれません。

(追記)

  • なんかよさげなのでバックアップの CVSはてダラ形式に変換するスクリプト書こうかな。
  • あれっ? 一度はてダラからアップするとブラウザ側はログアウトしちゃうのね。。。Webからトラバ送ろうとして気付いた。
  • それにしてもラク過ぎて何度でも更新できるなぁ。あはははは。ちょっと中毒になりそう。

[][] csv2hw.pl (CSV形式→はてダラ形式 変換スクリプト)

はてなの設定画面から落とせるCSV形式のバックアップファイルからはてなダイアリーライター(略称:はてダラ)*1形式への変換スクリプトを書いてみたのでテスト中。。。

一応動いたので公開します。求む人柱。バグ報告はコメント欄でお願いします。

http://www.horobi.com/xml/XHatenaML/scripts/csv2hw.pl

(追記)

  • hw.pl 未使用の作業ディレクトリに変換して、そこから初めて hw.pl を起動すると全部アップロードされてしまうので注意
  • ↑v.0.2.0 にて修正。touch.txt がなければ作るようにしました。

[][] はてダラ: no login patch

はてダラは起動時に毎回ログイン操作を行いますが、これをやるとブラウザなど他のエージェントがログアウト状態になってしまうことがあるようです。ならないこともあるのですが詳細は不明。。。

「もうはてダラ使うからブラウザ側では編集はしない!」と決めたとしてもログアウト状態では他人の日記にコメントする際など不便です。そこでクッキーをファイルに保存して、保存済みのクッキーがある場合はログインを実行せず保存したクッキーを使うように hw.pl を改造してみました。バージョン 0.2.0 へのパッチです。

http://www.horobi.com/tmp/hw-0.2.0-nologin.patch

そもそもログアウト状態になってしまう原因がよくわからないのでこれでほんとに大丈夫なのか不明。なにか情報がありましたらコメントお願いします。

BUGS: 以下の手順を実行した場合問題が発生します。

  • hw.pl でアップロード
  • ブラウザでログアウト
  • hw.pl でアップロード

こうすると最後のアップロードに失敗します(正常終了するけど更新されてない)。その場合は cookie.txt を削除して hw.pl を再実行するとログインが実行され正常にアップロードが完了します。

[] 町内夏祭り

夕食を買いに外に出たら夏祭りだかなんかで家の前の道に夜店が並んでてものすごい混雑。人大杉。セブンイレブンまで辿り着くのも困難なので手近な夜店でたこやきと焼きそばを買って夕食にする。あと、「祭は危ないっ…! 何が起こるかわからんっ…!」とだけ言っておく。

*1:結城氏公認w id:hyuki:20040820#p4

hidex7777hidex7777 2004/08/26 22:19 すみません、教えて君です……
csv2hw.plですが、これと同じディレクトリにcsvファイルを入れて動かせばよいのでしょうか?
いまコマンドプロンプトが
C:¥hatena>perl csv2hw.pl
input CSV: (stdin)
output directory: .
mode: safe
となって、プロンプト点滅状態なのですが…
すみません厨で^^;

rnarna 2004/08/27 00:18 引数にファイル名を渡すのが簡単です。
> perl csv2hw.pl hogehoge.csv
その他の応用は csv2hw.pl の冒頭のコメント内に書いてあるのでチェキラゥ!

hidex7777hidex7777 2004/08/27 00:32 あ、できた。
ぐわあああものすごい数のファイルだ!
まりがとうございました。

hidex7777hidex7777 2004/08/28 19:21 再現性あるかどうか、これから出かけるのでチェックしてないんですけど、いちよーバグ(?)報告です。
・ぼくの日記は1900-00-00からはじまっており、csvファイルをエクセルで開くと255行ある。
・csv2hwを使うと、1900-04-07以降の日記のみがテキスト生成される。
・これは237行目にあたる。
・つまりcsvファイルの238行目以降はテキストが生成されない。
・これが「日数」に関係するのか「テキスト量」に関係するのかは不明。
・また再現性があるかもまだチェックしてない。
とりあえず以上です。

hidex7777hidex7777 2004/08/29 01:33 再現性確認しました。
・CSVファイルに、なぜか”,,”というように日付けがない日記がある。それもダブって。(”1900,03,05”の下に、”,,”の日付けの、”1900,03,05”とまったく同じエントリがある。謎)
・コマンドプロンプトには次のように表示されて終了する。
/1974-03-05.txt: OK.
Cannot handle date (0, 0, 0, 07, 3, 1900) at C:¥temp¥csv2hw.pl line 108
./1900-04-07.txt:
・1900-04-07.txtは生成されているけれども、それ以降はされない。
以上です。

rnarna 2004/08/29 09:17 ご報告ありがとうございます。横浜に帰ったら調査します。

rnarna 2004/09/01 00:24 うーん、日付がないレコードはスキップされて、次のレコードの処理にいくはずなんですが。レコードのパース処理にバグがあって1900-04-07以降が丸ごと1レコードとして解釈されてしまってるのかなぁ…

rnarna 2004/09/03 01:17 うわ、おおぼけ。ファイル更新日付に1970年以前の日付は設定できません。それでエラーになってるんですね。とりあえず1970年元旦に設定するように変更しました。

jishihajishiha 2004/09/23 05:04 こんにちは。csv2hw.pl ありがたく利用させてもらっています。
わたしの日記には例えば1年間の目標をメモしておく 2004-00-00 のようなはてなでは入力可能だが、無効な日付があります。このため、この部分で csv2hw.pl がエラーを吐いて止まってしまいました。

そこで、122 行目を

my $ut = !(&date_exists($year, $mon, $mday)) ? 0 : timelocal(0, 0, 0, $mday, $mon-1, $year);

のように修正し、関数 date_exists を追加したところうまく動きました。

sub date_exists() {
my($year, $mon, $day) = @_;
eval {timelocal(0, 0, 0, $day, $mon-1, $year-1900);};
if($@) {return ”0”;}
return 1;
}

私のように特殊な日付をつけている人がどのくらいいるかわかりませんが、私にとってはバグだったので報告しておきます。

rnarna 2004/09/23 18:25 ご報告感謝です。はてダの日付は日付のようで日付じゃなんいですね…
テストしたところ1970以前の日付でtimelocal()がエラーにならず変な日付(2000年の日付とか)を返すことがあったので、一部修正の上 ver.0.2.4 に反映させました。

jishihajishiha 2004/09/24 04:21 素早い対応ありがとうございます。新バージョンをテストしてちゃんと動いております。