Flickrの写真を一括でダウンロードできるアプリを作った
Flickr Fast DownloaderというFlickrから写真やビデオをまとめてダウンロードできるツールを作りました。
http://flickrdownloader.laboone.net/
元々は、Flickrにあげている自分の写真のバックアップを取っておきたいという理由から自分用のツールとして作っていましたが、どうせなら公開しようと思いたち、2月ぐらいから今まで約6ヶ月もかかりましたが、なんとか公開することができました。
ここでは、その作業ログを残しておこうと思います。
=== 追記(2014/8/17) ===
窓の杜さんがFlickr Fast Downloaderの記事を書いてくれました。
機能については、窓の杜さんの以下の記事を参照してください。
シンプルな“Flickr”のバックアップ・ダウンロードツール「Flickr Fast Downloader」
==================
使用した技術について
開発に使った言語はC#です。
GUIはWPFを使って作成しました。
mahapps.metroというWPF用のフレームワークがあり、これを使うと良い感じのデザインにできるのでお薦めです。
FlickrのOAuth認証回りとGoolge Walletでのライセンス購入回りはASP.NET MVC、Web APIを使いました。
開発についての諸々
スクロールに応じて画像を遅延ロード
写真は画面のスクロールに応じて遅延ロードするようにしています。
これは、WPF Data Virtualizaitonを参考に実装しました。
このキモになるところは、以下のとおりです。
写真やビデオのダウンロード
写真やビデオのダウンロードにはProducer-Consumerパターンを使ってマルチスレッドでダウンロードしています。
Producer-Consumerパターンを実装するにはBlockingCollectionがとても便利です。
これを知らなくて最初はオレオレ実装していましたが、BlockingCollectionで書き直したらコードがすっきりしました。
FlickrのOAuth認証
デスクトップアプリでFlickrの認証を行う場合、Flickrの認証ページを開く→ユーザがFlickrにログインする→表示されるコードをアプリに貼り付けるという手順が一番実装が簡単ですが、コードを貼り付ける手順が省けるようにコードをWebサイト上で記録して、アプリケーション側からWeb APIを叩いてコードを取得するという実装にしています。
Goolge Walletの決済サービス
今回のアプリケーションでは、オリジナル写真のダウンロードにライセンスの購入が必要としています。
この決済回りにはGoogle Wallet、WebPay、Stripe、FastPay、SPIKE、PayPalなどの決済サービスを調べてみて、国内外ともに使えるGoogle Walletにしました。
色々なサイトでよく見かけるのはPayPalなので、PayPalを使おうかとも思いましたが、最終的にはチュートリアルやマニュアルがわかりやすいGoogle Walletにしました。
Googleはドキュメントがわかりやすくてよいですね。
はじめてのWordpress
アプリを公開しているサイトはWordPressで作りました。
WordPressはさわったことがなく最初は結構とまどいました(汗
WordPressについては、以下の本がとてもわかりやすかったです。
総括
いざ公開するアプリケーションを作るとなると細かい作業が多く、且つ、今回はアプリケーションの言語を英語にしたので地味にそこも大変でした。
おかしな英語もあると思いますので、なにかおかしなところがあれば教えてくださいm(_ _)m
ということで、Flickr Fast Downloaderをぜひ使ってみてください!