mirror of
https://github.com/mitb-archive/filebot
synced 2025-01-13 23:08:05 -05:00
Make sure TimeStampMetric works the same for all epochs
This commit is contained in:
parent
cd01fe26bf
commit
ecf9cf96dd
source/net/filebot/similarity
@ -512,13 +512,14 @@ public enum EpisodeMetrics implements SimilarityMetric {
|
||||
}),
|
||||
|
||||
// Match by file last modified and episode release dates
|
||||
TimeStamp(new TimeStampMetric() {
|
||||
TimeStamp(new TimeStampMetric(10, ChronoUnit.YEARS) {
|
||||
|
||||
@Override
|
||||
public float getSimilarity(Object o1, Object o2) {
|
||||
// adjust differentiation accuracy to about 3 years
|
||||
// adjust differentiation accuracy to about 2.5 years
|
||||
float f = super.getSimilarity(o1, o2);
|
||||
return f >= 0.9 ? 1 : f >= 0 ? 0 : -1;
|
||||
|
||||
return f >= 0.75 ? 1 : f >= 0 ? 0 : -1;
|
||||
}
|
||||
|
||||
private long getTimeStamp(SimpleDate date) {
|
||||
|
@ -4,21 +4,28 @@ package net.filebot.similarity;
|
||||
import java.io.File;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.attribute.BasicFileAttributes;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
|
||||
public class TimeStampMetric implements SimilarityMetric {
|
||||
|
||||
private long epoch;
|
||||
|
||||
public TimeStampMetric(int i, ChronoUnit unit) {
|
||||
this.epoch = unit.getDuration().multipliedBy(i).toMillis();
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getSimilarity(Object o1, Object o2) {
|
||||
long t1 = getTimeStamp(o1);
|
||||
long t2 = getTimeStamp(o2);
|
||||
|
||||
if (t1 <= 0 || t2 <= 0)
|
||||
return -1;
|
||||
if (t1 > 0 && t2 > 0) {
|
||||
float delta = Math.abs(t1 - t2);
|
||||
|
||||
float min = Math.min(t1, t2);
|
||||
float max = Math.max(t1, t2);
|
||||
return delta > epoch ? 1 : 1 - (delta / epoch);
|
||||
}
|
||||
|
||||
return min / max;
|
||||
return -1;
|
||||
}
|
||||
|
||||
public long getTimeStamp(Object object) {
|
||||
|
Loading…
Reference in New Issue
Block a user