【Ruby】ディレクトリからランダムにn枚写真をチョイス【写真整理】

写真を年月ごとに整理

以下の記事で過去の写真を年月フォルダに整理しました。

mhaya18.hatenablog.com

次にやりたいのは、各フォルダからランダムに数枚チョイスすることです。

過去の写真からランダムに抽出

過去の写真から自分の意思とは関係なくチョイスする。

それを見る。

楽しそうでしょ。

ソースコード

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
}