ファイルの場所を探す
$ find ./ -name *.cbl
>where /r . *.cbl
アルバムってみるの楽しいですよね。
適量ならね!
そう。
デジカメなので、撮るのは簡単。
でも、選ぶの大変。
過去10年撮りためたデータは500GBくらいになってます。
そんなわけで、過去の写真をYYMMフォルダに整理し、そこからランダムにn枚チョイスするプログラムを作ったりしていました。
こうすると、過去をざーっと見返すことが出来て楽しいわけです。
YYMMごとにn枚なので、年月のバランスは良いんですけど、
完全にランダムにチョイスしているので、ちょっと偏ったりもします。
なので、場所の要素も追加して、チョイスするバランスを取ったらどうかと考えました。
exifrというgemをインストールします。
使い方の詳細はこちらを参照。
require 'exifr/jpeg' Dir.glob('*.jpg').each do |f| ex = EXIFR::JPEG.new(f) p ex.exif? p ex.gps_latitude p ex.gps_longitude end
>ruby test.rb true [(35/1), (38/1), (897/100)] [(139/1), (52/1), (4331/100)]
たしかこの辺で撮ったはず。
以下の記事で過去の写真を年月フォルダに整理しました。
次にやりたいのは、各フォルダからランダムに数枚チョイスすることです。
過去の写真から自分の意思とは関係なくチョイスする。
それを見る。
楽しそうでしょ。
require 'fileutils' #------------------------------------------------- # フォルダごとにn枚選ぶ #------------------------------------------------- cur = Dir.pwd + '/' dir_arr = Array.new file_arr = Array.new # フォルダを作成 if !Dir.exist?('select') Dir.mkdir('select') end # フォルダごとに取得するファイル数 if ARGV[0] == nil n = 3 else n = ARGV[0].to_i end # ディレクトリ一覧を作成 # カレント以下を再帰的に処理 Dir.glob('./**/*').each do |f| if FileTest.directory? f if f == './select' else dir_arr << f end end end # ディレクトリ分ループ dir_arr.each { |d| file_arr.clear # ディレクトリごとの画像ファイル一覧作成 Dir.glob(d + '/*').each do |f| ext = File.extname(f) # 拡張子取得 if ext == '.JPG' || ext == '.jpg' || ext == '.JPEG' || ext == '.jpeg' file_arr << f end end ln = file_arr.length if ln == 0 else file_arr.sample(n).each do |f| new_name = cur + '/select/' + File.basename(f) FileUtils.cp(f, new_name) end end }