はてなフォトライフへの画像アップロードがHTTPSのみになっていたので対応

はてなブログへの自動投稿がいつからかエラーとなるようになっていた。

気づいてはいたものの、「画像投稿数か容量上限かな」と思い放置していたが、調べて見ると画像は月ごとの容量に制限はあるもののトータルは無制限とのこと。

そこで原因を探って対処する。

 

アップロードするアプリのログ:
画像のアップロードに失敗しました
status_code: 500
message: Bad requestAtom feed body is required.
a.jpg :エラー ( 1 / 2 )
画像のアップロードに失敗しました
status_code: 500
message: Bad requestAtom feed body is required.
b.jpg :エラー ( 2 / 2 )
送信対象の画像がありません.
完了しました

 

はてなサービスへの認証の手順は以下の通り。

http://developer.hatena.ne.jp/ja/documents/auth/apis/wsse

AtomフィードのBodyがない・・・?

パケットキャプチャしレスポンスを覗いてみると、

HTTP/1.1 302 Moved Temporarily
Server: awselb/2.0
Date: Sun, 17 Nov 2019 18:31:30 GMT
Content-Type: text/html
Content-Length: 126
Connection: keep-alive
Location: https://f.hatena.ne.jp:443/atom/post/

<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
</body>
</html>

HTTPSでアクセスしろということかな・・・?

画像送信テスト用のテストコードの、POST先のURLをHTTPSにて再実行→成功

 アプリのコードを変更してテスト→成功

たったこれだけのことだったのか・・・しかしなぜアナウンスもなく?いまさら・・・

普段使い用にpyinstallerでEXE化して実行:

_tkinter.TclError: couldn't open "settings.png": no such file or directory

リソース同梱でビルドできてない模様・・・

調べて見ると使用していたアプリはCUI仕様のものだったようなので、(リソース同梱の方法はいろいろあるようだけど)とりあえずCUI仕様でEXEビルドを行う。

(※後ほど確認したところ、GUI版はリソースをファイルで同梱してリリースしていた!)

 

CUI版の動作を確認したところ、うまく動いてない

→main時の処理に誤りがあったので修正

ーーー

if __name__ == '__main__':

root = HatenaposterUI()
root.mainloop()

ーーー

 

問題なく動作した。

これで今後は自動的に記事がアップされるはず。しばらく様子見。