はてなブログライターを試してみる

(以下は「はてなブログライター」で投稿しようとした内容)

以前からときどき「google:はてなブログ はてダラ」を検索していて今回ついにヒットした。

これだ。すばらしい。さっそくダウンロードした。rubyはインストールされているからatomutilをインストール。

gem install atomutil

Macでは「sudo gem install atomutil」→Macのアカウントのパスワードを入力)

これで使えるようになった。このエントリはさっそく「はてなブログライター」を試してみているところ。いったんここでアップしてみよう。

ダメだった。

ruby hbw.rb new」で生成されるテキストファイルがShift_JISだった。UTF-8に変更して保存。

(追記:生成されたテキストファイルに日本語が含まれていなかったためにデフォルトのテキストエンコードで読み込まれたようだ。v0.5で変更された→「fix: Mac, Windows で動作しない #1 · rnanba/HatenaBlogWriter@a98353e」https://github.com/rnanba/HatenaBlogWriter/commit/a98353ee650719faa1bba9a031c4683138bddfa7

またダメだった。

C:\hbw>hbw.rb
新規エントリファイルが 1 件あります。
C:/hbw/HatenaBlogWriter.rb:118:in `match': invalid byte sequence in Windows-31J (ArgumentError)
        from C:/hbw/HatenaBlogWriter.rb:118:in `block in parse_file'
        from C:/hbw/HatenaBlogWriter.rb:115:in `each_line'
        from C:/hbw/HatenaBlogWriter.rb:115:in `parse_file'
        from C:/hbw/HatenaBlogWriter.rb:106:in `initialize'
        from C:/hbw/HatenaBlogWriter.rb:228:in `new'
        from C:/hbw/HatenaBlogWriter.rb:228:in `post'
        from C:/hbw/hbw.rb:109:in `block in<main>'
        from C:/hbw/hbw.rb:105:in `each'
        from C:/hbw/hbw.rb:105:in `<main>'

「invalid byte sequence in Windows-31J (ArgumentError)」は文字コードのエラーみたい。生成されたテキストファイルの文字コードは確かにUTF-8なんだけれど。(複数のテキストエディタで確認)

Macだとエラーメッセージが違う。

mymac:hbw$ ruby hbw.rb
新規エントリファイルが 1 件あります。
/Library/Ruby/Gems/2.0.0/gems/atomutil-0.1.4/lib/atomutil.rb:1523:in `block in get_contents_except_resources': Failed to get contents. 404 (Atompub::RequestError)
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:852:in `start'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:582:in `start'
	from /Library/Ruby/Gems/2.0.0/gems/atomutil-0.1.4/lib/atomutil.rb:1517:in `get_contents_except_resources'
	from /Library/Ruby/Gems/2.0.0/gems/atomutil-0.1.4/lib/atomutil.rb:1350:in `get_service'
	from /Users/hoge/hbw/HatenaBlogWriter.rb:216:in `ensure_get_service'
	from /Users/hoge/hbw/HatenaBlogWriter.rb:236:in `post'
	from hbw.rb:109:in `block in <main>'
	from hbw.rb:105:in `each'
	from hbw.rb:105:in `<main>'

Windows/Macとも「ruby hbw.rb post 2017-06-06_01.txt」でも同じエラーになる。「ruby hbw.rb check」は動作する。

はてなブログライターでの投稿はいったんあきらめ、ブラウザから直接投稿しよう。

ところで「はてなブログライター」は長いので、「はてダラ」のような略称を考えたい。ここはやっぱり「はてブラ」ですよね?

追記

Windowsのほうはすかさず対応していただきました。ありがとうございます。

この追記は更新されたはてブラで投稿できるでしょうか?

→やっぱりダメでした。新しいエラーメッセージは以下です。

C:/Ruby23-x64/lib/ruby/2.3.0/net/http.rb:933:in `connect_nonblock': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)
        from C:/Ruby23-x64/lib/ruby/2.3.0/net/http.rb:933:in `connect'
        from C:/Ruby23-x64/lib/ruby/2.3.0/net/http.rb:863:in `do_start'
        from C:/Ruby23-x64/lib/ruby/2.3.0/net/http.rb:852:in `start'
        from C:/Ruby23-x64/lib/ruby/2.3.0/net/http.rb:584:in `start'
        from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/atomutil-0.1.4/lib/atomutil.rb:1517:in `get_contents_except_resources'
        from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/atomutil-0.1.4/lib/atomutil.rb:1350:in `get_service'
        from C:/hbw/HatenaBlogWriter.rb:222:in `ensure_get_service'
        from C:/hbw/HatenaBlogWriter.rb:242:in `post'
        from C:/hbw/hbw.rb:111:in `block in <main>'
        from C:/hbw/hbw.rb:107:in `each'
        from C:/hbw/hbw.rb:107:in `<main>'

1行目のエラーメッセージを検索して以下を発見。

「システムの詳細設定」から環境変数SSL_CERT_FILE」に「cacert.pem」のフルパスを設定するも変わりませんでした。

なおWindows(8.1)で使っているテキストエディタWZ Editor 5.02Dです。rubyのバージョンは「ruby 2.3.0p0 (2015-12-25 revision 53290) [x64-mingw32]」でした。

Mac(10.11.6)はテキストエディタがmi 2.1.12r5、rubyは「ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]」です。

ここでいったんブラウザから更新します。

追記2

Windows/Macともできました!

Windows

「システムの詳細設定」から「ユーザー環境変数」への環境変数の追加後、コマンドプロンプトを起動し直すのを忘れていました! 失礼しました。

コマンドプロンプトから「set SSL_CERT_FILE=C:\hbw\cacert.pem」といった指定をする方法では、コマンドプロンプトを開き直したら環境変数も指定し直す必要があります。

tips:
コマンドプロンプトから「SET S[Enter]」で、Sで始まる現在の環境変数がアルファベット順に表示されます。

Mac

config.yml で blog_domain の値をあり得ない値に設定すると同じエラーが再現しました。config.yml の設定を(改行コード等も)確認してみてください。

「はてなブログライター」が Mac/Windows で動かない(追記あり) - 児童小銃

「blog_domain: ima.hatenablog.jp」と指定するところを「blog_domain: http://ima.hatenablog.jp/」になっていました。失礼しました。

これでひとまず、テキストファイルからはてなブログを更新できるようになりました。ありがとうございます>id:rnaさん

あとは1つのテキストファイルから更新分を切り出す「はてダラスプリッタ」を使えるようになって、はてなブログ長年日記の閲覧機能が追加されれば、自分としてははてなブログを今のはてなダイアリーと同じように更新/利用できるようになります。(長年日記の要望はフィードバック済み)