Rename host library to master throughout
The two libraries are now "master" and "slave" everywhere: UI text, API JSON fields (master_root, rel_master, master_size, ...), Go identifiers, database columns, quality verdicts, quarantine subfolders and docs. Existing databases are upgraded by a new migration that renames the columns in place and rewrites stored "host" values, so pairs, history, cached verdicts and restorable quarantine entries carry over. Network "host" usages (SplitHostPort, the Origin/Host check) are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d06b6d546d
commit
5b088bb4a6
19 files changed
+339
-326
No files matched your search
+19
-19
@@ -172,48 +172,48 @@ func Score(in Info) float64 {
|
||||
return float64(in.Bitrate) / 1000 * codecEfficiency(in.Codec)
|
||||
}
|
||||
|
||||
// Verdict compares host and slave quality.
|
||||
// Verdict compares master and slave quality.
|
||||
type Verdict struct {
|
||||
// Better is "host", "slave", "equal" or "unknown".
|
||||
// Better is "master", "slave", "equal" or "unknown".
|
||||
Better string `json:"better"`
|
||||
// DurationDelta is |host-slave| in seconds; large deltas suggest a
|
||||
// DurationDelta is |master-slave| in seconds; large deltas suggest a
|
||||
// different edit or version of the song rather than a re-encode.
|
||||
DurationDelta float64 `json:"duration_delta"`
|
||||
Notes []string `json:"notes"`
|
||||
}
|
||||
|
||||
// Compare ranks host against slave. Within 5% is treated as equal.
|
||||
func Compare(host, slave Info) Verdict {
|
||||
// Compare ranks master against slave. Within 5% is treated as equal.
|
||||
func Compare(master, slave Info) Verdict {
|
||||
v := Verdict{Better: "unknown"}
|
||||
if host.Error != "" || slave.Error != "" {
|
||||
if master.Error != "" || slave.Error != "" {
|
||||
v.Notes = append(v.Notes, "could not probe one of the files")
|
||||
return v
|
||||
}
|
||||
if host.Duration > 0 && slave.Duration > 0 {
|
||||
v.DurationDelta = math.Abs(host.Duration - slave.Duration)
|
||||
if master.Duration > 0 && slave.Duration > 0 {
|
||||
v.DurationDelta = math.Abs(master.Duration - slave.Duration)
|
||||
if v.DurationDelta > 2 {
|
||||
v.Notes = append(v.Notes, fmt.Sprintf("durations differ by %.1fs: possibly a different version or edit", v.DurationDelta))
|
||||
}
|
||||
}
|
||||
hs, ss := Score(host), Score(slave)
|
||||
ms, ss := Score(master), Score(slave)
|
||||
switch {
|
||||
case hs <= 0 || ss <= 0:
|
||||
case math.Abs(hs-ss) <= 0.05*math.Max(hs, ss):
|
||||
case ms <= 0 || ss <= 0:
|
||||
case math.Abs(ms-ss) <= 0.05*math.Max(ms, ss):
|
||||
v.Better = "equal"
|
||||
case hs > ss:
|
||||
v.Better = "host"
|
||||
case ms > ss:
|
||||
v.Better = "master"
|
||||
default:
|
||||
v.Better = "slave"
|
||||
}
|
||||
if host.Lossless != slave.Lossless {
|
||||
if host.Lossless {
|
||||
v.Notes = append(v.Notes, "host is lossless, slave is lossy")
|
||||
if master.Lossless != slave.Lossless {
|
||||
if master.Lossless {
|
||||
v.Notes = append(v.Notes, "master is lossless, slave is lossy")
|
||||
} else {
|
||||
v.Notes = append(v.Notes, "slave is lossless but host is lossy: linking would downgrade the slave")
|
||||
v.Notes = append(v.Notes, "slave is lossless but master is lossy: linking would downgrade the slave")
|
||||
}
|
||||
}
|
||||
if host.Channels != slave.Channels && host.Channels > 0 && slave.Channels > 0 {
|
||||
v.Notes = append(v.Notes, fmt.Sprintf("channel count differs (%d vs %d)", host.Channels, slave.Channels))
|
||||
if master.Channels != slave.Channels && master.Channels > 0 && slave.Channels > 0 {
|
||||
v.Notes = append(v.Notes, fmt.Sprintf("channel count differs (%d vs %d)", master.Channels, slave.Channels))
|
||||
}
|
||||
return v
|
||||
}
|
||||
Reference in new issue
Block a user