initial commit

This commit is contained in:
Bene 2023-07-03 15:46:15 +02:00
commit f6a2ba3674
6 changed files with 199 additions and 0 deletions

3
.idea/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

6
.idea/misc.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_19" default="true" project-jdk-name="openjdk-19" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

8
.idea/modules.xml Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/PhotoMemories.iml" filepath="$PROJECT_DIR$/PhotoMemories.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

165
Main.java Normal file
View File

@ -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<File> dirs = new ArrayList<>();
static TreeMap<String, ArrayList<File>> 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<File> temp = cal.get(date);
showImage(getRandomFile(temp));
}
static File getRandomFile(ArrayList<File> 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<String, ArrayList<File>> 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);
}
}
}
}
}

11
PhotoMemories.iml Normal file
View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="GENERAL_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>