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