mirror of
https://github.com/RatzzFatzz/MKVAudioSubtitleChanger.git
synced 2026-02-10 17:55:57 +01:00
@@ -111,9 +111,10 @@ public class MkvFileProcessor implements FileProcessor {
|
||||
Optional<FileAttribute> desiredAudio = detectDesiredTrack(config.getAudioLanguage(), audioTracks).findFirst();
|
||||
Optional<FileAttribute> desiredSubtitle = detectDesiredSubtitleTrack(config.getSubtitleLanguage(), subtitleTracks).findFirst();
|
||||
|
||||
if (desiredAudio.isPresent() && desiredSubtitle.isPresent()) {
|
||||
if (desiredAudio.isPresent() && ("OFF".equals(config.getSubtitleLanguage()) || desiredSubtitle.isPresent())) {
|
||||
info.setMatchedConfig(config);
|
||||
info.setDesiredAudioLane(desiredAudio.get());
|
||||
info.setDesiredSubtitleLane(desiredSubtitle.get());
|
||||
info.setDesiredSubtitleLane(desiredSubtitle.orElse(null));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -169,7 +170,9 @@ public class MkvFileProcessor implements FileProcessor {
|
||||
sb.append(format(DISABLE_DEFAULT_TRACK, track.getId()));
|
||||
}
|
||||
}
|
||||
sb.append(format(ENABLE_DEFAULT_TRACK, fileInfo.getDesiredSubtitleLane().getId()));
|
||||
if (fileInfo.getDesiredSubtitleLane() != null) {
|
||||
sb.append(format(ENABLE_DEFAULT_TRACK, fileInfo.getDesiredSubtitleLane().getId()));
|
||||
}
|
||||
}
|
||||
|
||||
if (fileInfo.areForcedTracksDifferent()) {
|
||||
@@ -178,6 +181,7 @@ public class MkvFileProcessor implements FileProcessor {
|
||||
}
|
||||
}
|
||||
|
||||
log.info(sb.toString());
|
||||
InputStream inputstream = Runtime.getRuntime().exec(sb.toString()).getInputStream();
|
||||
String output = IOUtils.toString(new InputStreamReader(inputstream));
|
||||
log.debug(output);
|
||||
|
||||
@@ -85,7 +85,8 @@ public class CoherentAttributeUpdaterKernel extends AttributeUpdaterKernel {
|
||||
processor.detectDesiredTracks(fileInfo, nonForcedTracks, nonCommentaryTracks, config);
|
||||
}
|
||||
|
||||
if (fileInfos.stream().allMatch(elem -> elem.getDesiredSubtitleLane() != null && elem.getDesiredAudioLane() != null)) {
|
||||
if (fileInfos.stream().allMatch(elem -> ("OFF".equals(config.getSubtitleLanguage()) || elem.getDesiredSubtitleLane() != null)
|
||||
&& elem.getDesiredAudioLane() != null)) {
|
||||
log.info("Found {}/{} match for {}", config.getAudioLanguage(), config.getSubtitleLanguage(), file.getAbsolutePath());
|
||||
fileInfos.forEach(this::updateFile);
|
||||
return; // match found, end process here
|
||||
|
||||
@@ -18,15 +18,25 @@ public class FileInfoDto {
|
||||
private Set<FileAttribute> desiredForcedSubtitleLanes;
|
||||
private FileAttribute desiredAudioLane;
|
||||
private FileAttribute desiredSubtitleLane;
|
||||
private AttributeConfig matchedConfig;
|
||||
|
||||
public boolean isAudioDifferent() {
|
||||
return desiredAudioLane != null &&
|
||||
(defaultAudioLanes == null || !defaultAudioLanes.contains(desiredAudioLane));
|
||||
(defaultAudioLanes == null || !defaultAudioLanes.contains(desiredAudioLane) || defaultAudioLanes.size() > 1);
|
||||
}
|
||||
|
||||
public boolean isSubtitleDifferent() {
|
||||
return desiredSubtitleLane != null &&
|
||||
(defaultSubtitleLanes == null || !defaultSubtitleLanes.contains(desiredSubtitleLane));
|
||||
return isSubtitleMatchDifferent() || isSubtitleOFF();
|
||||
}
|
||||
|
||||
private boolean isSubtitleMatchDifferent() {
|
||||
return desiredSubtitleLane != null
|
||||
&& (defaultSubtitleLanes == null || !defaultSubtitleLanes.contains(desiredSubtitleLane) || defaultAudioLanes.size() > 1);
|
||||
}
|
||||
|
||||
private boolean isSubtitleOFF() {
|
||||
return desiredSubtitleLane == null && "OFF".equals(matchedConfig.getSubtitleLanguage()) &&
|
||||
(defaultAudioLanes != null || !defaultAudioLanes.isEmpty());
|
||||
}
|
||||
|
||||
public boolean areForcedTracksDifferent() {
|
||||
|
||||
Reference in New Issue
Block a user