From f6a2ba36742bd0acdab084e3946d851fb99c4835 Mon Sep 17 00:00:00 2001 From: Bene Date: Mon, 3 Jul 2023 15:46:15 +0200 Subject: [PATCH] initial commit --- .idea/.gitignore | 3 + .idea/misc.xml | 6 ++ .idea/modules.xml | 8 +++ .idea/vcs.xml | 6 ++ Main.java | 165 ++++++++++++++++++++++++++++++++++++++++++++++ PhotoMemories.iml | 11 ++++ 6 files changed, 199 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 Main.java create mode 100644 PhotoMemories.iml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..7464918 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..b3b6d0b --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Main.java b/Main.java new file mode 100644 index 0000000..bd6a781 --- /dev/null +++ b/Main.java @@ -0,0 +1,165 @@ +import java.awt.*; +import java.io.*; +import java.util.ArrayList; +import java.util.Map; +import java.util.Random; +import java.util.TreeMap; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class Main { + + ArrayList dirs = new ArrayList<>(); + static TreeMap> cal = new TreeMap<>(); + public static void main(String[] args) throws InterruptedException { + //\\schatzkammer\homes\bene\Photos\MobileBackup\A52s von Benedikt\DCIM\Camera + //P:\Android Xcover2 + + //findDirsFrom2009(); + readFile("cal_2009-2023.txt"); + readFile("cal_androidXcover2.txt"); + readFile("cal_A52s.txt"); + //createFile(); + //traverse(new File("\\\\schatzkammer\\homes\\bene\\Photos\\MobileBackup\\A52s von Benedikt\\DCIM\\Camera"), true, "([0-9]{4})([0-9]{2})([0-9]{2})"); + //createFile(); + while(true) { + showRandomImageOfDay("07-03"); + Thread.sleep(2000); + } + } + + static void showRandomImageOfDay(String date) + { + ArrayList temp = cal.get(date); + showImage(getRandomFile(temp)); + } + + static File getRandomFile(ArrayList list) + { + Random rand = new Random(); + int randomIndex = rand.nextInt(list.size()); + File f = list.get(randomIndex); + if(f.isDirectory()) + { + File[] children = f.listFiles(); + if(children.length == 0) + return getRandomFile(list); + randomIndex = rand.nextInt(children.length); + return children[randomIndex]; + } + return f; + } + + static void showImage(File file) + { + System.out.println(file.getAbsolutePath()); + if (Desktop.isDesktopSupported()) { + try { + Desktop desktop = Desktop.getDesktop(); + desktop.open(file); + } catch (IOException ex) {} + } + } + + static void readFile(String filename) + { + try (BufferedReader reader = new BufferedReader(new FileReader(filename))) { + String line; + while ((line = reader.readLine()) != null) { + String[] lineS = line.split("_:_"); + String key = lineS[0]; + if(!cal.containsKey(key)) + cal.put(key, new ArrayList<>()); + lineS = lineS[1].split(","); + for(String s: lineS) + { + File f = new File(s); + if(!f.exists()) + { + System.out.print("ERROR "+f+" existiert nicht!"); + + } + else{ + cal.get(key).add(f); + } + } + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + static void findDirsFrom2009() + { + for (int i = 2009; i < 2100; i++) { + File temp = new File(i+""); + if(temp.exists()) + traverse(temp, false, "([0-9]{4})[-_]([0-9]{2})[-_]([0-9]{2})"); + } + } + + static void createFile() + { + Map.Entry> entry = cal.pollFirstEntry(); + try { + FileWriter fw = new FileWriter("output.txt"); + while(entry != null) + { + fw.append(entry.getKey()).append("_:_"); + for(File file: entry.getValue()) + { + fw.append(file.getAbsolutePath()).append(","); + } + fw.append("\n"); + entry = cal.pollFirstEntry(); + + } + + System.out.println("Der FileWriter hat die Datei erfolgreich beschrieben!"); + fw.close(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + public static void traverse(File directory, Boolean findFiles, String pattern) + { + File[] files = directory.listFiles(); + for (File file : files) { + if(file.isDirectory() ) + { + //File is a file + Pattern pPattern = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE); + String filename = file.getName(); + Matcher matcher = pPattern.matcher(filename); + if(matcher.find()){ + String key = matcher.group(2)+"-"+matcher.group(3); + if(!cal.containsKey(key)) + { + cal.put(key, new ArrayList<>()); + } + cal.get(key).add(file); + } + traverse(file, findFiles, pattern); + + } + else if(findFiles) + { + //File ist ein Directory + Pattern pPattern = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE); + String filename = file.getName(); + Matcher matcher = pPattern.matcher(filename); + if(matcher.find()){ + String key = matcher.group(2)+"-"+matcher.group(3); + if(!cal.containsKey(key)) + { + cal.put(key, new ArrayList<>()); + } + cal.get(key).add(file); + } + + + } + + } + } +} diff --git a/PhotoMemories.iml b/PhotoMemories.iml new file mode 100644 index 0000000..8b2ade9 --- /dev/null +++ b/PhotoMemories.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file