Change track selection

This commit is contained in:
2022-03-28 22:35:02 +02:00
parent 68e5b9e988
commit c11431d85b
15 changed files with 266 additions and 136 deletions

View File

@@ -1,10 +1,12 @@
package at.pcgamingfreaks.mkvaudiosubtitlechanger;
import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.FileCollector;
import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.FileProcessor;
import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.AttributeConfig;
import at.pcgamingfreaks.mkvaudiosubtitlechanger.intimpl.ConfigProcessor;
import at.pcgamingfreaks.mkvaudiosubtitlechanger.intimpl.MkvFileCollector;
import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.ConfigProcessorOld;
import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.FileAttribute;
import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.Config;
import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.FileInfoDto;
import lombok.SneakyThrows;
import lombok.extern.log4j.Log4j2;
@@ -16,19 +18,30 @@ import java.util.concurrent.*;
public class AttributeUpdaterKernel {
ExecutorService executor = Executors.newFixedThreadPool(Config.getInstance().getThreadCount());
MkvFileCollector collector = new MkvFileCollector();
FileCollector collector;
FileProcessor processor;
int filesChangedAmount = 0;
int filesNotChangedAmount = 0;
long runtime = 0;
public AttributeUpdaterKernel(FileCollector collector, FileProcessor processor) {
this.collector = collector;
this.processor = processor;
}
@SneakyThrows
public void execute() {
long beforeTimer = System.currentTimeMillis();
collector.loadFiles(Config.getInstance().getLibraryPath())
.forEach(file -> executor.submit(() -> process(file)));
List<File> files = collector.loadFiles(Config.getInstance().getLibraryPath());
files.forEach(file -> executor.submit(() -> process(file)));
executor.shutdown();
executor.awaitTermination(1, TimeUnit.DAYS);
runtime = System.currentTimeMillis() - beforeTimer;
System.out.printf("%nFiles %schanged: %s%n",
@@ -40,13 +53,13 @@ public class AttributeUpdaterKernel {
System.out.printf("Runtime: %ss%n", runtime / 1000);
}
private void process(File file) {
List<FileAttribute> attributes = collector.loadAttributes(file);
private void processOld(File file) {
List<FileAttribute> attributes = processor.loadAttributes(file);
boolean fileHasChanged = false;
if (attributes.isEmpty()) return;
for(AttributeConfig config : Config.getInstance().getAttributeConfig()){
fileHasChanged = new ConfigProcessor(config).processConfig(file, attributes);
fileHasChanged = new ConfigProcessorOld(config).processConfig(file, attributes);
if(fileHasChanged) break;
}
if(!fileHasChanged){
@@ -57,4 +70,12 @@ public class AttributeUpdaterKernel {
}
System.out.print(".");
}
private void process(File file) {
List<FileAttribute> attributes = processor.loadAttributes(file);
FileInfoDto fileInfo = processor.filterAttributes(attributes);
if (fileInfo.isChangeNecessary() && !Config.getInstance().isSafeMode()) {
processor.update(file, fileInfo);
}
}
}