summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--server/cmd/listend/main.go25
1 files changed, 19 insertions, 6 deletions
diff --git a/server/cmd/listend/main.go b/server/cmd/listend/main.go
index d93325d..c21d65a 100644
--- a/server/cmd/listend/main.go
+++ b/server/cmd/listend/main.go
@@ -564,8 +564,14 @@ func giveBackAttempts(episodes []*store.Episode) {
adAccounting describes what was found against what the lengths say is there.
The declared-versus-served gap comes from the feed and the file rather than from any detector,
-which makes it the one number able to contradict one. Every other readout in this project that
-reported only what it found turned out to be hiding something.
+which makes it the one number able to contradict one.
+
+It bounds only the advertising a CDN *inserted* into this copy, which is not all the advertising
+in it. A show that bakes its sponsor reads into the file it publishes has no gap at all and can
+still be a third advertisements -- The 404 Media Podcast declares within 11 seconds of what it
+serves and carries Mack Weldon, Incogni and Warby Parker reads in the middle of it. So finding
+more than the gap implies is not over-reporting, and saying so in the readout matters: the first
+reading of a "728%" line was that the detector had gone wrong, and it had not.
*/
func adAccounting(e *store.Episode, found []transcript.Candidate) string {
var total int64
@@ -577,12 +583,19 @@ func adAccounting(e *store.Episode, found []transcript.Candidate) string {
how = "by subtracting the publisher's master"
}
gap := e.DurationMs - e.DeclaredDurationMs
- if gap <= 0 {
- return fmt.Sprintf("%d ad candidate(s) %s, %s; nothing was inserted into this copy",
+ switch {
+ case gap <= 0:
+ return fmt.Sprintf("%d ad candidate(s) %s, %s; nothing was inserted into this copy, "+
+ "so anything found is baked into what the publisher serves",
len(found), how, clock(total))
+ case total > gap:
+ return fmt.Sprintf("%d ad candidate(s) %s, %s against %s inserted -- the excess is "+
+ "advertising baked in rather than inserted, which the length gap cannot see",
+ len(found), how, clock(total), clock(gap))
+ default:
+ return fmt.Sprintf("%d ad candidate(s) %s, %s of the %s inserted (%d%%)",
+ len(found), how, clock(total), clock(gap), total*100/gap)
}
- return fmt.Sprintf("%d ad candidate(s) %s, %s of the %s inserted (%d%%)",
- len(found), how, clock(total), clock(gap), total*100/gap)
}
// pendingRecognition is every mirrored episode still without words, newest first.