Dropboxのカメラアップロードの写真を日付ごとに整理するプログラム

Dropboxのカメラアップロードフォルダの写真を日付ごとに整理するプログラムを書いた。

iPhoneDropboxアプリには、カメラアップロードという機能がある。

f:id:posnum:20150118094945p:plain

これはiPhoneで撮った写真を、自動的にDropbox内の「カメラアップロード」という フォルダにアップロードしてくれる機能だ。

iOSデバイスではフォトストリームという機能があって、 WindowsPCとも写真を共有できるのだが、最近うまく動いてくれないので、 Dropboxのカメラアップロード機能を利用している。

カメラアップロードで、アップロードされる写真は 以下のようなフォーマットで自動的にリネームされる。

2015-01-17 11.34.02.jpg

写真がカメラアップロードフォルダに ガンガン突っ込まれていくので、整理する必要がある。

そこで、安直に日付ごとにフォルダを作ることにした。 ただ、手動ではやりたくないのでC#でプログラムを書いてみた。

static void Main(string[] args)
{
    // カレントディレクトリが対象
    var currentDir = Directory.GetCurrentDirectory();
    foreach (var filePath in Directory.GetFiles(currentDir))
    {
        // 自分自身はスキップ
        if (filePath == System.Reflection.Assembly.GetExecutingAssembly().Location)
            continue;
        var fileName = Path.GetFileName(filePath);
        var date = fileName.Substring(0, 10);
        var dateDir = Path.Combine(currentDir, date);
        // 日付のディレクトリが存在しない場合は作成する
        if (!Directory.Exists(dateDir))
            Directory.CreateDirectory(dateDir);
        File.Move(filePath, Path.Combine(dateDir, fileName));
    }
}

GitHubにあげておいた。exeもダウンロードできる。

Release 0.1 · posnum/PhotoOrganizerByDate · GitHub

本当に単純なプログラムで、 実行したフォルダにあるファイルを、日付フォルダをつくってそこに振り分ける。 確認メッセージなども出ずいきなり実行するので注意。

想定する用途としては、Dropboxのカメラアップロードフォルダにexeを置いて 定期的に実行する。

Before

f:id:posnum:20150121095840j:plain

After

f:id:posnum:20150121095901j:plain

この程度だったらバッチファイルでも書けそうだったが、 バッチの書き方をいろいろと調べるのが面倒なので、 C#でさくっと書いた。