From 03619dd7f9ab7719406a355bfda0a0611a46ccb1 Mon Sep 17 00:00:00 2001
From: Christian Pointner <equinox@helsinki.at>
Date: Sun, 2 Sep 2018 00:41:05 +0200
Subject: [PATCH] fixed progress reporting

---
 importer/fetch.go               | 3 +++
 importer/normalize.go           | 2 +-
 importer/normalize_converter.go | 2 ++
 importer/types.go               | 6 ++++++
 4 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/importer/fetch.go b/importer/fetch.go
index 61d5aa4..b8589bc 100644
--- a/importer/fetch.go
+++ b/importer/fetch.go
@@ -129,6 +129,9 @@ func (job *Job) fetch() (interface{}, error) {
 		err = res.err
 	}
 
+	for _, l := range convLog {
+		job.im.dbgLog.Println(l.Line)
+	}
 	job.Progress.set(StepFetching, 1)
 	job.source.done <- &JobSourceResult{err, res.hash, convLog}
 	return loudness, err
diff --git a/importer/normalize.go b/importer/normalize.go
index d8d404a..8e53443 100644
--- a/importer/normalize.go
+++ b/importer/normalize.go
@@ -55,7 +55,7 @@ func (job *Job) normalize(loudness interface{}) error {
 			return
 		}
 
-		written, err := io.Copy(&progressWriter{job, StepNormalizing, 0, uint64(srcStat.Size()), conv}, src)
+		written, err := io.Copy(&progressWriter{job, StepNormalizing, uint64(srcStat.Size()), 0, conv}, src)
 		if err != nil {
 			done <- err
 			return
diff --git a/importer/normalize_converter.go b/importer/normalize_converter.go
index edc601b..fda7741 100644
--- a/importer/normalize_converter.go
+++ b/importer/normalize_converter.go
@@ -40,6 +40,8 @@ type normalizeConverter interface {
 func (job *Job) newNormalizeConverter(loudness interface{}) (normalizeConverter, error) {
 	if loudness == nil {
 		// make default converter configurable?
+		// mind that there is no nullNormalizeConverter because we need something to
+		// convert incoming files to the format the store uses.
 		return newFFmpegNormalizeConverter(job, nil)
 	}
 
diff --git a/importer/types.go b/importer/types.go
index 0817814..2b78d46 100644
--- a/importer/types.go
+++ b/importer/types.go
@@ -203,6 +203,12 @@ func (p *JobProgress) get() (step JobProgressStep, progress float32) {
 
 func (p *JobProgress) MarshalJSON() ([]byte, error) {
 	step, progress := p.get()
+	if math.IsNaN(float64(progress)) || math.IsInf(float64(progress), 0) || progress < 0.0 {
+		progress = -1.0
+	} else if progress > 1.0 {
+		progress = 1.0
+	}
+
 	return json.Marshal(struct {
 		Step     JobProgressStep `json:"step"`
 		Progress float32         `json:"progress"`
-- 
GitLab