Fix OFF for subtitles

This commit is contained in:
2023-04-19 21:44:49 +02:00
parent 1963d1cc5c
commit cafb12f22a
3 changed files with 22 additions and 7 deletions

View File

@@ -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,7 +170,9 @@ public class MkvFileProcessor implements FileProcessor {
sb.append(format(DISABLE_DEFAULT_TRACK, track.getId())); 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()) { if (fileInfo.areForcedTracksDifferent()) {
@@ -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);

View File

@@ -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

View File

@@ -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() {