1
0
mirror of https://github.com/mitb-archive/filebot synced 2024-11-13 12:55:00 -05:00

+ Add {history} binding to access the original historic path of {f} (e.g. useful for -exec post-processing calls)

This commit is contained in:
Reinhard Pointner 2019-04-30 19:50:58 +07:00
parent c9876e093e
commit 672c015696
2 changed files with 25 additions and 1 deletions

View File

@ -14,6 +14,7 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.logging.Level;
import java.util.stream.Stream;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
@ -181,7 +182,7 @@ public class History {
public Map<File, File> getRenameMap() {
Map<File, File> map = new LinkedHashMap<File, File>();
for (History.Sequence seq : this.sequences()) {
for (History.Sequence seq : sequences) {
for (History.Element elem : seq.elements()) {
File to = new File(elem.to());
if (!to.isAbsolute()) {
@ -194,6 +195,16 @@ public class History {
return map;
}
public Stream<File> getOriginalPath(File destination) {
return sequences.stream().flatMap(s -> s.elements().stream()).filter(e -> {
File to = new File(e.to());
if (!to.isAbsolute()) {
to = new File(e.dir(), e.to());
}
return destination.equals(to);
}).map(e -> new File(e.dir(), e.from()));
}
public static void exportHistory(History history, OutputStream output) {
try {
Marshaller marshaller = JAXBContext.newInstance(History.class).createMarshaller();

View File

@ -46,6 +46,7 @@ import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import net.filebot.ApplicationFolder;
import net.filebot.HistorySpooler;
import net.filebot.Language;
import net.filebot.MediaTypes;
import net.filebot.Resource;
@ -488,6 +489,18 @@ public class MediaBindingBean {
return name != null ? getNameWithoutExtension(name) : null;
}
@Define("history")
public File getOriginalFilePath() throws Exception {
// check in-memory history first
Optional<File> path = HistorySpooler.getInstance().getSessionHistory().getOriginalPath(getMediaFile()).findFirst();
if (path.isPresent()) {
return path.get();
}
// check persistent history file as well
return HistorySpooler.getInstance().getCompleteHistory().getOriginalPath(getMediaFile()).findFirst().orElse(null);
}
@Define("xattr")
public Object getMetaAttributesObject() throws Exception {
return xattr.getMetaInfo(getMediaFile());