[python] 画像を右クリック→送るからimgurに画像をアップする

だいぶ時間が空いてしまいましたが、久しぶりにPythonメモ投下。

最近、各種ノートを BoostNote と言うアプリを使用して書くようになりました。
プログラマのためのノートアプリというだけあって、スクリプトの書き方をメモっておいたり
Markdownでメモを残したりがとても扱いやすく、非常におしゃれで素晴らしいツールです。

ツールは、サーバーにデータをアップしているのではなく
ローカルドライブに保存されているため、サーバーに影響されないのもメリットですが
複数の環境で同期するための構造を(Dropboxのようなもので)用意しなければいけないのがデメリットになります。
それは現在開発中のようなのでまったりマツとして、もう一つ問題だったのが「画像の挿入」でした。

ツールに画像をDDすれば…という記事もあるものの上手く動かないし
画像の保存先からの相対パスもなんか上手くいかない。
GooglePhotoに画像をアップするのも考えたのですが、毎度あげるのもめんどくさいなぁ…ということで
割とお手軽に画像をアップすることが出来る+APIも準備されていた imgur を使用して画像を
貼り付けるようにしてみました。

まず下準備。
imgurをPythonから使用出来るモジュールがすでにあったので、それをpipを使用してインストールします。

http://imgur.com/

公式サイトにアカウントを作成して、

右上のユーザー名>settings をクリックします。
applicationでCreate Apps でアプリを作成して、「ClientID」と「Client Secret」を取得します。
匿名アップロードだとこの2つだけあればOKですが、それだとあとで削除するのが面倒だったりするので
アカウントでアップロードできるようにします。

imgurpythonで画像をアップするには、

これでいけるはずなのですが、anon=False(匿名無効)にしてもなぜか匿名でアップされてしまいます。
これは、ClientIDとClientSecretとは別にOAuthを使用して取得するaccess_token, refresh_tokenこの2つが必要なため。
なので、事前に取得をします。

取得するには、下のスクリプトを実行します。

<~>のところは取得したIDやらを入れて実行すると、pin取得用画面が表示されるので
表示されたPINをコピーして

この1行にPINを入れて実行します。

実行するとアクセストークンとリフレッシュトークンを取得できます。

そんでもって最後にスクリプト本体

あとはとても単純で、
upload_from_pathで引数で取得したファイルパスをアップしているだけです。
一応変なファイルをアップしないように拡張子で判定を入れてます。

一応コレでスクリプトはできたのですが、PythonファイルにD&Dするためにはレジストリを弄らないとNGのようなので
今回はレジストリを弄る方法ではなく、別途バッチファイルを作成して、それをWindowsのSendToに置くようにしました。

batはこんな感じ。
%1でpythonに引数を渡しています。

これでアップしたい画像を右クリック→送るでBatを指定すると、imgurにアップしてくれて
クリップボードにimgurのファイルパスが入るようになります。
あとは ![](URL) で挿入してあげればboostnoteで画像が表示出来ます。

imgurのデメリットとしては、URLを知らなければ画像を見られることはないとはいえ
URLが分かってしまえば「だれでも画像が見えてしまう」こと。
なので、人様には見せられない(守秘にかかわるようなもの)には使用できません。
そういうものは、おとなしくローカルパスを揃えるなりして使用するのが安全です。
ただ、手順をメモるのとかそういうのには有用かなぁと思います。

あとおまけで
画面キャプチャするのに SnapCrab というのを使用してるのですが
部分的に切り取るのも、切り取らずに保存するのも超お手軽なのでオススメです。

そんな感じで、最近スクリプト記事なんかも怠けてましたが、CEDECで色々と活力をもらったので
主にUnityとシェーダー周りの勉強なんかを記事に書いていこうかなぁと思います。

コメントを残す

メールアドレスが公開されることはありません。

*