Explorar o código

can deal with jpg jpeg dng ... files

Shenjian %!s(int64=7) %!d(string=hai) anos
pai
achega
cf93a62705
Modificáronse 1 ficheiros con 49 adicións e 50 borrados
  1. 49 50
      PhotoSorter/Program.cs

+ 49 - 50
PhotoSorter/Program.cs

@@ -13,76 +13,75 @@ namespace PhotoSorter
     {
         static void Main(string[] args)
         {
-            string postfix = "Hansi";
-
-            Console.WriteLine("This application can sort photos in CURRENT and sub directory by EXIF shotdate Or it's Filename, move the photos to a NEW sub-Directory which created by date like \"2017-10-01\". Hansi 2017-10-21");
+            Console.WriteLine("This application can sort photos in CURRENT directory by EXIF shotdate Or it's Filename, move the photos to a NEW sub-Directory which created by date like \"2017-10-01\". Hansi 2017-10-21");
             Console.WriteLine("Press any key to DO it...");
             Console.ReadKey();
             string folderIn = AppDomain.CurrentDomain.BaseDirectory;
-            //int hourOffset = 1;
-            //int monthOffset = -1;
-
-            var files = Directory.GetFiles(folderIn, "*.jpg", SearchOption.AllDirectories);
-            int k = 0;
-            Console.WriteLine("Total:" + files.Length.ToString());
-            foreach (var file in files)
+            string[] extArray = new string[] {".jpg",".dng",".nef"};
+            
+            doWork(folderIn, extArray);
+            Console.WriteLine("Done!");
+            Console.ReadKey();
+        }
+        static void doWork(string folderIn,string[] extArr)
+        {
+            for (int exti = 0; exti < extArr.Length; exti++)
             {
-                k++;
-                FileInfo fi = new FileInfo(file);
-                Console.WriteLine(k.ToString() + "/" + files.Length.ToString() + "\t" + fi.Name);
-                string newFileName;
-                if ((fi.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden)
+
+                Console.WriteLine("---------Working with " + extArr[exti] + " files!--------------");
+                var files = Directory.GetFiles(folderIn, "*" + extArr[exti], SearchOption.TopDirectoryOnly);
+                int k = 0;
+                Console.WriteLine("Total:" + files.Length.ToString());
+                foreach (var file in files)
                 {
-                    var dateTaken = GetDateTakenFromImage(file);
-                    if (dateTaken == DateTime.MinValue)
+                    k++;
+                    FileInfo fi = new FileInfo(file);
+                    Console.WriteLine(k.ToString() + "/" + files.Length.ToString() + "\t" + fi.Name);
+                    string newFileName;
+                    if ((fi.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden)
                     {
-                        Console.WriteLine("ignore " + fi.Name + ":Get Exif Fail");
-                        Console.WriteLine("Trying to get Date From filename...");
-                        dateTaken = GetDateFromImageFileName(file);
+                        var dateTaken = GetDateTakenFromImage(file);
                         if (dateTaken == DateTime.MinValue)
                         {
-                            Console.WriteLine("ignore " + fi.Name + ":Get Date By File Name Fail");
-                            continue;
+                            Console.WriteLine("ignore " + fi.Name + ":Get Exif Fail");
+                            Console.WriteLine("Trying to get Date From filename...");
+                            dateTaken = GetDateFromImageFileName(file);
+                            if (dateTaken == DateTime.MinValue)
+                            {
+                                Console.WriteLine("ignore " + fi.Name + ":Get Date By File Name Fail");
+                                continue;
+                            }
                         }
-                    }
 
-                    if (Path.GetExtension(file).ToLower() != ".jpg")
-                    {
-                        Console.WriteLine("ignore " + fi.Name + "NOT jpg File");
-                        continue;
-                    }
-                    //dateTaken = dateTaken.AddHours(hourOffset);
-                    //dateTaken = dateTaken.AddMonths(monthOffset);
+                        //dateTaken = dateTaken.AddHours(hourOffset);
+                        //dateTaken = dateTaken.AddMonths(monthOffset);
 
-                    var newDir = Path.Combine(Path.GetDirectoryName(file), dateTaken.ToString("yyyy-MM-dd"));
+                        var newDir = Path.Combine(Path.GetDirectoryName(file), dateTaken.ToString("yyyy-MM-dd"));
 
-                    newFileName = Path.Combine(newDir, Path.GetFileName(file));
+                        newFileName = Path.Combine(newDir, Path.GetFileName(file));
 
-                    if (!Directory.Exists(Path.GetDirectoryName(newFileName)))
-                    {
-                        Directory.CreateDirectory(Path.GetDirectoryName(newFileName));
-                    }
+                        if (!Directory.Exists(Path.GetDirectoryName(newFileName)))
+                        {
+                            Directory.CreateDirectory(Path.GetDirectoryName(newFileName));
+                        }
 
-                    //newFileName = Path.Combine(Path.GetDirectoryName(file), dateTaken.ToString("yyyy-MM-dd HHmm.ss") + " " + postfix + ".jpg");
+                        //newFileName = Path.Combine(Path.GetDirectoryName(file), dateTaken.ToString("yyyy-MM-dd HHmm.ss") + " " + postfix + ".jpg");
 
-                    if (file != newFileName)
-                    {
-                        int i = 1;
-                        while (File.Exists(newFileName))
+                        if (file != newFileName)
                         {
-                            newFileName = Path.Combine(Path.GetDirectoryName(file), dateTaken.ToString("yyyy-MM-dd HHmm.ss") + " " + i++ + " " + postfix + ".jpg");
+                            int i = 1;
+                            while (File.Exists(newFileName))
+                            {
+                                newFileName = Path.Combine(Path.GetDirectoryName(file), dateTaken.ToString("yyyy-MM-dd HHmm.ss") + " " + i++ + ".jpg");
+                            }
+                            Debug.Assert(!File.Exists(newFileName));
+
+                            File.Move(file, newFileName);
                         }
-                        Debug.Assert(!File.Exists(newFileName));
-
-                        File.Move(file, newFileName);
                     }
-                }
+                } 
             }
-
-            Console.WriteLine("Done!");
-            Console.ReadKey();
         }
-
         /// <summary>
         /// We init this once so that if the function is repeatedly called
         /// It isn't stressing the garbage man