ラベル プログラミング の投稿を表示しています。 すべての投稿を表示

PythonでFlickr APIを利用して、セット(アルバム)に保存した画像の一括ダウンロード

PythonでFlickr APIを利用して、セット(アルバム)に保存した画像の一括ダウンロード、できたらいいな。
そう思って、いざ昨日から開始したが、結局ものにならなかった反省。

Flickr APIとは

Flickrが公式で公開しているAPIのこと。
このプログラムを利用することで、例えばFlickrで検索した結果の画像一覧を表示させたり、今人気の画像一覧を取得したり、様々なことができる。
基本的にFlickr公式ではないアプリやサービスの場合、このAPIを利用してシステムを作っているはず。

このAPIを利用するためには、自身のFlickrアカウントからAPI Keyなどを取得する必要がある。
The App Garden on Flickr



上のリンクからアクセスすると、①Get your API Keyと②Put your app in the Gardenが並んでいる。
①Get your API KeyのRequest an API Keyをクリックし、先に進む。


商用なのか、非商用なのかを尋ねられるので、好きな方を選ぶ。
商用では審査があるが、非商用では無審査ですぐ使える様子。
今回は非商用を選んだ。

情報を入力する。
アプリの名前とその説明を入力し、送信をする。

するとした画像のようにAPI KeyとAPI Secretが手に入る。

このKeyとSecretを利用し、自身が作成するアプリなりサービスを認証する。

PythonでFlickr APIを利用する

PythonでFlickr APIを利用する際に、便利なモジュールが3つあった。
1つ目のAPIは現在も開発が行われているようで、利用するにはこれがいいかもしれない。
2つ目のflickr.pyは更新がほぼされていない。
開発が終わってしまったのかもしれない。
3つ目のpython-flickr-apiは最近開発が始まったようである。

参考サイト

Flickr Services
FlickrAPI
Flickr API の認証とAPI を使った画像アップロードの簡単なまとめ - 肉とビールとパンケーキ by @sotarok
flickrapiを使って画像をUploadしてみた - cloverrose's blog
Flickr APIで自動更新するギャラリーサイトを作る | miyuk1.com

やりたかったこと

・プログラムを認証させる。
・ユーザ(ここでは自身)のプライベート設定になっているセット(アルバム)一覧を取得する。
・一覧の中から、ダウンロードしたいセット(アルバム)を選択する。
・選択されたセット(アルバム)に入っている画像一覧を取得する。
・取得した画像のオリジナルサイズをダウンロードし、セット(アルバム)名でサブフォルダを作り、その中に保存する。

今回できたのは、プラグラムを認証させ、ユーザのプライベートコンテンツへのアクセスである。
そこからユーザのセット(アルバム)一覧の取得は出来たのだが、それ以降は進まなかった。

反省

・Flickr APIを利用して取得したユーザのセット(アルバム)一覧がxml形式だったのだが、これをPythonで処理するスキルが無かった。
xmlデータからセット(アルバム)のタイトルを取得し、一覧表示させたかった。
上記で作業をやめてしまった。
ここからさらにセット(アルバム)ごとに写真一覧のファイル名を取得し、そのファイルごとのダウンロードリンクを生成し、フォルダへダウンロードしたかった。
反省するべき点としては、Python自体の勉強不足とAPI周りの知識不足だったと思う。

結局

Flickrのセット(アルバム)に保存された画像を一括でダウンロードするという目的は自力では果たせなかった。
そのため、App Storeからアプリを購入し、それで用を済ませることにした。
Mac App Store - Pic togo for Flickr

すごい簡単。
昨日から5時間以上に渡って取り組んでいたことが、ものの数分でできちゃう。
ただし、ダウンロードするにはそれなりの時間がかかるが。

学んだこと

餅は餅屋。

Javascriptを使ってタイピングゲームを作成した。

タイトルの通り、Javascriptを使ってタイピングゲームを作成した。
ゲームは以下のリンクから。(Dropboxの公開リンク)
タイピングゲーム

コンセプトは視力検査も出来るタイピングゲーム。
ただし、ディスプレイの解像度による表示サイズの違いだとか、正確な視力だとかは全く考慮していない。
雰囲気だけ。

基本機能は3つ。
1.キータイピングによる処理。
2.条件による表示サイズの変更。
3.簡易進捗バーの実装。

総製作時間は約5時間。
昼食後から夕飯前まで。
かかりすぎ。

初期画面。
スペースキー入力でタイピングゲーム画面へ遷移。

スペースキーを押すと以下のように。
下部説明文通り、表示されている文字列をタイプしていくだけ。

タイプすると文字の先頭から消えていく形式。
OCCASION→ASIONになっている様子がわかる。

問題を進めると上部進捗バーが進む。
 

さらにコンセプトに沿い、文字列サイズも変わる。
現段階では5段階で変わる。


最後まで終わると結果表示。
 参考サイト。
JavaScriptプログラミング講座【キーボード操作について】
JavaScriptリファレンス - 文字列操作
とことん!英単語!登録英単語リスト
四角を描く ~CSSテクニック~
押されたキーコードを取得する

システム開発では大切な上流工程をほとんどすっ飛ばして、最初からコーディングしていったためか、非効率だった。
上流工程ってすごく大切だと感じる。


個人的に引っかかった点として、キー入力時の処理。

document.onkeydown = inputkey();



function inputkey(){

    コード

}


上記のように記述するとさっぱり動作しなかった。
一方で「window.onload = function(){}」の内部に書くとしっかり動作した。

window.onload  function(){

    コード

    document.onkeydown = inputkey();

    コード

    function inputkey(){ 

        コード

    }

}


ウィンドウをロード処理してあげないとキー入力を受け付けないのだろうか。
このあたり、さっぱりわからないし、全く動かなかった時のコードも残ってないので検証できない。


簡易進捗バーについては、CSSとJavascriptの両方で実装。
DIV要素を2つ入れ子にし、外側DIVの背景色を薄めにし、内側DIVの背景色を濃色にした。
この内側DIVのwidthをJavascriptで動的に徐々に大きくしていっただけ。
すごく簡易的なもの。


来週末も時間があれば何か作ってみようと思う。
ごくたまに、毎日Webサイトを1つ作ってみるとか、ゲームを1つ作ってみるとかあるけど、あれは本当に大変だと思った。
この作業を毎日続けるなんて。