2014年11月1日土曜日

シェルスクリプトでFlickrに写真をアップロードしてみる

Raspberry Piで自動で写真をとってFlickrにアップロードし続けてみたいなー
ということでとりあえずFlickrに写真をアップロードするところからやってみた。

まぁこういったシェルスクリプトは誰かが作ってるだろうと探してみた。

Githubにflickr-shell-uploaderというのがあったので試しに使ってみた。

wget -O flickr-shell-uploader.sh https://raw.githubusercontent.com/stengland/flickr-shell-uploader/master/flickr-shell-uploader

でダウンロードして(長いけど1行)

chmod a+x flickr-shell-uploader.sh

で実行可能権限を与えて

./flickr-shell-uploader.sh -i test.jpg

でtest.jpgのアップロードを試みた。
しかし
"The Flickr API returned an error while retrieving the frob. Please try again."
というエラーが出てOAuthまで進まない…

このスクリプトの更新日時みると4年前だしAPIの仕様かわったのかな?
何か仕様変更ないかなーと探してみると今年の6月27日からAPIがSSL通信しか受け付けなくなったらしい。

たしかにスクリプトを覗いてみるとAPIにはhttpでアクセスしてるじゃん!
というわけで修正した

119行目
FROBINFO=$(curl -s -F method=flickr.auth.getFrob -F api_key=${APIKEY} -F api_sig=${SIG} "https://flickr.com/services/rest")
147行目
TOKENINFO=$(curl -s -F method=flickr.auth.getToken -F api_key=${APIKEY} -F frob=${FROB} -F api_sig=${SIG} "https://flickr.com/services/rest")
164行目
TOKENINFO=$(curl -s -F method=flickr.auth.checkToken -F api_key=${APIKEY} -F auth_token=${TOKEN} -F api_sig=${SIG} "https://flickr.com/services/rest")
201行目
printf %b " -F api_sig=${SIG} -F photo=@\"${FILE}\" https://api.flickr.com/services/upload/)" >> $TMPFILE

この4行を上の用に書き換えてもう一度写真をアップロードしてみた。
すると初回アップロード時はTOKENを取得するためのURLが表示されるのでそのURLをコピーしてブラウザで開いてFlickrでログオンする。
そしてこのアプリを承認し、シェルスクリプトに戻ってエンターを押す

すると画像がアップロードされてるはず!
とりあえずこれでシェルスクリプトから画像をアップロードできるようになった。

0 件のコメント:

コメントを投稿

Related Post

Fire TV Stick (New モデル)でUSBデバイスを使ってみた

昨日届いた新型のFire TV Stickなんだけど、USBホスト機能がついてるようでOTGケーブルを使うとUSBデバイスが使える模様。 というわけで早速試してみた。 何かに使えるかなと思って買っておいた給電対応OTGケーブルが役に立つ時が来た。 eBayで1ドルぐらいだ...