Rubyでどう書く?特別編:Matzからのお題
高倉利明(KBMJ)
2008/08/06 20:59
まつもとゆきひろ氏と食事をした時に頂いたお題にKBMJの高倉利明氏が答える。テーマは「Rubyでメモリカード上の写真を指定フォルダに振り分ける」だ。
問題
まつもとゆきひろ氏
第6回のテーマは「Rubyでメモリカード上の写真を指定フォルダに振り分ける」です。
デジカメで撮りためたデータをPCにバックアップする際、大量の撮影データの振り分けが面倒です。
そこで今回はRubyスクリプトを使用してファイルを自動的に振り分けてみることにしました。
仕様
- 格納元フォルダ以下から画像データを抽出し、格納先フォルダに日付「yymmdd」ごとに振り分ける
- 画像データかどうかは拡張子「jpg, JPG, jpeg, JPEG」で判定
- 日付はEXIFの「MetadataDate」の日付を利用
回答例
require 'parsedate'
require 'fileutils'
require 'find'
require 'rubygems'
require 'extexif'
# フォルダ指定
src = "/mnt/card/DCIM/100NECDT/"
dst = "/var/image/"
# ファイルリスト作成
list = []
Find.find(File.expand_path(src)) { |path|
if /.*(jpg|JPG|jpeg|JPG)\z/ =~ path
list << path
end
}
# 振り分け
list.sort.each { |path|
image = ExtExif.new(path)
foldername = image["MetadataDate"][0,10].split(/:/).join
folderpath = dst + foldername
Dir.mkdir(folderpath) unless File.exist?(folderpath)
FileUtils.cp(path, folderpath)
}
解説
本処理は以下の流れで行っています。
- 対象フォルダ内から再帰的にファイルを検索してパスのリストを作成
- 各ファイルのEXIFデータから日付取得
- 日付のフォルダを作成
- 日付フォルダにファイルコピー
今回はEXIFフォーマット取得のためにExtEXIFライブラリを使用しました。
最後に
今回は簡略化のため以下の処理を省いてあります。
- 画像ファイルのバイナリファイル形式確認
- EXIFから取り出した日付フォーマット確認
実用に利するためには、このような点に注意すると良いと思います。
なお、今回のお題はbuilder編集部の昼食会で、Matzにお会いしたときにもらったお題です。ご協力ありがとうございました!
- 特集: Rubyでどう書く? (7件)
- 今日のトップ記事
- 昨日
- 5日前
- 6日前
- 7日前
- ホワイトペーパー
- 話題のタグ
インストール
開発環境
Windows 7
UI
ソフトウェア開発
クラウド
Google
Off Topic
Webデザイン
小技
Windows
CSS
脆弱性
HTML
Apple
WebKit
Chrome
オープンソース
リファレンス
仮想化
Windows Vista
OS
Safari
Java
Webサービス
モバイル
ブラウザ
プログラミング言語
Microsoft
Internet Explorer
Windows XP
Mozilla
アプリケーション
Database
Ajax
セキュリティ
Flash
iPhone 3G
Tips
Firefox
JavaScript
iPod touch
Firefox 3
マイクロソフト
RIA
Linux
データベース
Opera
Mac OS X
iPhone
話題のタグを見る »
「Google Chrome」の拡張機能、開発者からのアップロード受付を開始
IMAPでGmailを受信、最も手っ取り早いのは?Windows 7、Ubuntu 9.10、Snow Leopardのメーラー比較
Snow LeopardではNTFSをサポート--その源流を訪ねる(2)
MS運営のオープンソース開発プロジェクト支援サイト「CodePlex」を探検する(2)
Snow LeopardではNTFSをサポート--その源流を訪ねる(1)
フォトレポート:「Windows Server 2008 R2」--あまり知られていない有用な機能10選
【最終警告】パンデミック対策特集
大丈夫?あなたの会社のセキュリティ対策
高まるiSCSIストレージへの注目度
電力に"ふた"をする独自の省エネ機能とは!?
100万円で実現!中小企業の情報漏えい対策
―エン・ジャパン厳選求人☆毎週更新―
企業ITシステムの企画、構築、運用のイロハ