目次
一括ダウンロードした Google フォトの写真を日付フォルダに移動したい
Googleフォトから写真を一括ダウンロード(例えば: Googleフォトから写真を一括ダウンロードし、容量を回復させる方法 #初心者 – Qiita などを参照のこと)すると、年単位くらいは分類してくれる。
これを撮影日時のフォルダに整理したい。
スマホやデジカメなど写真を撮ると、Exif (Exchangeable Image File Format) という情報が写真データに埋め込まれる。 ここに撮影日時の情報が格納される。これを使って日付ごとのフォルダを作成して移動すれば良い。
Rubyでプログラミング
どのプログラミング言語で書いても良いと思う。自分の場合は慣れたRubyで書く。
今回は Ruby 3.3.0を使う
Debian に rbenv で Ruby 3.1.0をインストールで書いたように3.3.0をインストールして、カレント・フォルダだけを3.3.0を使うようにする。
rbenv install 3.3.0 rbenv local 3.3.0
gem を インストール
RubyでExifにアクセスするには exifr (EXIF Reader)というgemをインストールする。
gem install exifr
Rubyプログラム
下のようなコードでカレント・フォルダにあるjpg, JPG ファイルを日付フォルダに根刮ぎ(ねこそぎ)移動する。 なお、ファイル名で大文字・小文字を区別しているのは実行環境がLinuxだから。
エラー処理は甘いから、使う場合は自己責任だよ。不安であれば、エラー処理などを追加すれば良い。
#!/usr/bin/env ruby
require 'exifr/jpeg'
require 'fileutils'
jpg_list = Dir.glob(["*.JPG", "*.jpg"]).each{|jpg_path|
p jpg_path
# jpg_path = 'IMG_0240.JPG'
if FileTest.exist?(jpg_path)
exif_data = EXIFR::JPEG.new(jpg_path)
if exif_data.exif?
date = exif_data.date_time
p date
if date != nil
dir_name = date.strftime("%Y-%m-%d")
# dir_nameが存在しなければ作成する
if !FileTest.exist?(dir_name)
puts "#{dir_name} does not exsit. Now newly made."
Dir.mkdir(dir_name)
end
FileUtils.mv(jpg_path, dir_name)
end
end
end
}