From 92530fbd6a792bbcc64a5f207e9c044bedbbb4ed Mon Sep 17 00:00:00 2001
From: Travis Ralston <travpc@gmail.com>
Date: Sun, 16 Aug 2020 11:27:27 -0600
Subject: [PATCH] Add artwork if available to audio thumbnail

---
 assets/default-artwork.png | Bin 0 -> 42839 bytes
 go.mod                     |   1 +
 go.sum                     |   2 +
 thumbnailing/i/flac.go     |   3 +-
 thumbnailing/i/mp3.go      |  86 ++++++++++++++++++++++++++++++++-----
 thumbnailing/i/ogg.go      |   3 +-
 thumbnailing/i/wav.go      |   3 +-
 thumbnailing/u/metadata.go |  12 ++++++
 8 files changed, 97 insertions(+), 13 deletions(-)
 create mode 100644 assets/default-artwork.png
 create mode 100644 thumbnailing/u/metadata.go

diff --git a/assets/default-artwork.png b/assets/default-artwork.png
new file mode 100644
index 0000000000000000000000000000000000000000..8ea3ef740b13c7774fc2720b1535f46567668db8
GIT binary patch
literal 42839
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

literal 0
HcmV?d00001

diff --git a/go.mod b/go.mod
index 8e975d72..0ab2f08e 100644
--- a/go.mod
+++ b/go.mod
@@ -12,6 +12,7 @@ require (
 	github.com/buckket/go-blurhash v1.0.3
 	github.com/cenk/backoff v2.2.1+incompatible // indirect
 	github.com/cupcake/sigil v0.0.0-20131127230922-6bf9722f2ae8
+	github.com/dhowden/tag v0.0.0-20200412032933-5d76b8eaae27
 	github.com/didip/tollbooth v4.0.2+incompatible
 	github.com/disintegration/imaging v1.6.2
 	github.com/djherbis/stream v1.3.0
diff --git a/go.sum b/go.sum
index bb8c70b1..9d3c1f2b 100644
--- a/go.sum
+++ b/go.sum
@@ -103,6 +103,8 @@ github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczC
 github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
 github.com/dgryski/go-rendezvous v0.0.0-20200624174652-8d2f3be8b2d9 h1:h2Ul3Ym2iVZWMQGYmulVUJ4LSkBm1erp9mUkPwtMoLg=
 github.com/dgryski/go-rendezvous v0.0.0-20200624174652-8d2f3be8b2d9/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
+github.com/dhowden/tag v0.0.0-20200412032933-5d76b8eaae27 h1:Z6xaGRBbqfLR797upHuzQ6w4zg33BLKfAKtVCcmMDgg=
+github.com/dhowden/tag v0.0.0-20200412032933-5d76b8eaae27/go.mod h1:SniNVYuaD1jmdEEvi+7ywb1QFR7agjeTdGKyFb0p7Rw=
 github.com/didip/tollbooth v4.0.2+incompatible h1:fVSa33JzSz0hoh2NxpwZtksAzAgd7zjmGO20HCZtF4M=
 github.com/didip/tollbooth v4.0.2+incompatible/go.mod h1:A9b0665CE6l1KmzpDws2++elm/CsuWBMa5Jv4WY0PEY=
 github.com/disintegration/imaging v1.6.2 h1:w1LecBlG2Lnp8B3jk5zSuNqd7b4DXhcjwek1ei82L+c=
diff --git a/thumbnailing/i/flac.go b/thumbnailing/i/flac.go
index 213511cd..17e743b2 100644
--- a/thumbnailing/i/flac.go
+++ b/thumbnailing/i/flac.go
@@ -7,6 +7,7 @@ import (
 	"github.com/faiface/beep/flac"
 	"github.com/turt2live/matrix-media-repo/common/rcontext"
 	"github.com/turt2live/matrix-media-repo/thumbnailing/m"
+	"github.com/turt2live/matrix-media-repo/thumbnailing/u"
 	"github.com/turt2live/matrix-media-repo/util"
 )
 
@@ -40,7 +41,7 @@ func (d flacGenerator) GenerateThumbnail(b []byte, contentType string, width int
 	}
 
 	defer audio.Close()
-	return mp3Generator{}.GenerateFromStream(audio, format, width, height)
+	return mp3Generator{}.GenerateFromStream(audio, format, u.GetID3Tags(b), width, height)
 }
 
 func (d flacGenerator) GetAudioData(b []byte, nKeys int, ctx rcontext.RequestContext) (*m.AudioInfo, error) {
diff --git a/thumbnailing/i/mp3.go b/thumbnailing/i/mp3.go
index 2a9c8eb9..8df89242 100644
--- a/thumbnailing/i/mp3.go
+++ b/thumbnailing/i/mp3.go
@@ -5,15 +5,21 @@ import (
 	"errors"
 	"image"
 	"image/color"
+	"image/draw"
 	"io"
 	"io/ioutil"
 	"math"
+	"path"
 
+	"github.com/dhowden/tag"
 	"github.com/disintegration/imaging"
 	"github.com/faiface/beep"
 	"github.com/faiface/beep/mp3"
+	"github.com/sirupsen/logrus"
+	"github.com/turt2live/matrix-media-repo/common/config"
 	"github.com/turt2live/matrix-media-repo/common/rcontext"
 	"github.com/turt2live/matrix-media-repo/thumbnailing/m"
+	"github.com/turt2live/matrix-media-repo/thumbnailing/u"
 	"github.com/turt2live/matrix-media-repo/util"
 )
 
@@ -45,9 +51,9 @@ func (d mp3Generator) GenerateThumbnail(b []byte, contentType string, width int,
 	if err != nil {
 		return nil, err
 	}
-
 	defer audio.Close()
-	return d.GenerateFromStream(audio, format, width, height)
+
+	return d.GenerateFromStream(audio, format, u.GetID3Tags(b), width, height)
 }
 
 func (d mp3Generator) GetAudioData(b []byte, nKeys int, ctx rcontext.RequestContext) (*m.AudioInfo, error) {
@@ -98,8 +104,60 @@ func (d mp3Generator) GetDataFromStream(audio beep.StreamSeekCloser, format beep
 	}, nil
 }
 
-func (d mp3Generator) GenerateFromStream(audio beep.StreamSeekCloser, format beep.Format, width int, height int) (*m.Thumbnail, error) {
-	info, err := d.GetDataFromStream(audio, format, width)
+func (d mp3Generator) GenerateFromStream(audio beep.StreamSeekCloser, format beep.Format, meta tag.Metadata, width int, height int) (*m.Thumbnail, error) {
+	bgColor := color.RGBA{A: 255, R: 41, G: 57, B: 92}
+	fgColor := color.RGBA{A: 255, R: 240, G: 240, B: 240}
+
+	img := image.NewRGBA(image.Rect(0, 0, width, height))
+	padding := 16
+
+	sq := int(math.Round(float64(height) * 0.66))
+	var artworkImg image.Image
+	if meta != nil && meta.Picture() != nil {
+		artwork, _, _ := image.Decode(bytes.NewBuffer(meta.Picture().Data))
+		if artwork != nil {
+			artworkImg, _ = pngGenerator{}.GenerateThumbnailImageOf(artwork, sq, sq, "crop", rcontext.Initial())
+		}
+	}
+
+	ax := sq
+	ay := sq
+
+	if artworkImg != nil {
+		ax = artworkImg.Bounds().Max.X
+		ay = artworkImg.Bounds().Max.Y
+	}
+
+	dy := (height / 2) - (ay / 2)
+	dx := padding
+	ddy := ay + dy
+	ddx := ax + dx
+	r := image.Rect(dx, dy, ddx, ddy)
+
+	if artworkImg == nil {
+		i, _ := ioutil.ReadFile(path.Join(config.Runtime.AssetsPath, "default-artwork.png"))
+		if i != nil {
+			tmp, _, _ := image.Decode(bytes.NewBuffer(i))
+			if tmp != nil {
+				artworkImg, _ = pngGenerator{}.GenerateThumbnailImageOf(tmp, ax, ay, "crop", rcontext.Initial())
+			}
+		}
+		if artworkImg == nil {
+			logrus.Warn("Falling back to black square for artwork")
+			tmp := image.NewRGBA(image.Rect(0, 0, ax, ay))
+			for x := 0; x < tmp.Bounds().Max.X; x++ {
+				for y := 0; y < tmp.Bounds().Max.Y; y++ {
+					tmp.Set(x, y, color.Black)
+				}
+			}
+			artworkImg = tmp
+		}
+	}
+
+	draw.Draw(img, r, artworkImg, image.Pt(0, 0), draw.Over)
+
+	waveformX := padding + r.Max.X
+	info, err := d.GetDataFromStream(audio, format, width-waveformX-padding)
 	if err != nil {
 		return nil, errors.New("beep-visual: error sampling audio: " + err.Error())
 	}
@@ -114,9 +172,7 @@ func (d mp3Generator) GenerateFromStream(audio beep.StreamSeekCloser, format bee
 		averagedSamples = append(averagedSamples, avg)
 	}
 
-	// Now that we have samples, generate a plot
-	img := image.NewRGBA(image.Rect(0, 0, width, height))
-	padding := 16
+	// Now that we have samples and artwork, generate a plot
 	center := height / 2
 	for x, s := range averagedSamples {
 		distance := int(math.Round(float64((height-padding)/2) * math.Abs(s)))
@@ -127,15 +183,25 @@ func (d mp3Generator) GenerateFromStream(audio beep.StreamSeekCloser, format bee
 			above = false
 		}
 		for y := 0; y < height; y++ {
-			col := color.RGBA{A: 255, R: 41, G: 57, B: 92}
+			col := bgColor
 			isWithin := y <= center && y >= px
 			if !above {
 				isWithin = y >= center && y <= px
 			}
 			if isWithin {
-				col = color.RGBA{A: 255, R: 240, G: 240, B: 240}
+				col = fgColor
+			}
+			img.Set(x+waveformX, y, col)
+		}
+	}
+
+	// Fill in the background
+	for x := 0; x < width; x++ {
+		for y := 0; y < height; y++ {
+			c := img.RGBAAt(x, y)
+			if c.A == 0 {
+				img.Set(x, y, bgColor)
 			}
-			img.Set(x, y, col)
 		}
 	}
 
diff --git a/thumbnailing/i/ogg.go b/thumbnailing/i/ogg.go
index 18c29d0f..ef2eaba2 100644
--- a/thumbnailing/i/ogg.go
+++ b/thumbnailing/i/ogg.go
@@ -7,6 +7,7 @@ import (
 	"github.com/faiface/beep/vorbis"
 	"github.com/turt2live/matrix-media-repo/common/rcontext"
 	"github.com/turt2live/matrix-media-repo/thumbnailing/m"
+	"github.com/turt2live/matrix-media-repo/thumbnailing/u"
 	"github.com/turt2live/matrix-media-repo/util"
 )
 
@@ -40,7 +41,7 @@ func (d oggGenerator) GenerateThumbnail(b []byte, contentType string, width int,
 	}
 
 	defer audio.Close()
-	return mp3Generator{}.GenerateFromStream(audio, format, width, height)
+	return mp3Generator{}.GenerateFromStream(audio, format, u.GetID3Tags(b), width, height)
 }
 
 func (d oggGenerator) GetAudioData(b []byte, nKeys int, ctx rcontext.RequestContext) (*m.AudioInfo, error) {
diff --git a/thumbnailing/i/wav.go b/thumbnailing/i/wav.go
index 677375fb..7d63b5ab 100644
--- a/thumbnailing/i/wav.go
+++ b/thumbnailing/i/wav.go
@@ -7,6 +7,7 @@ import (
 	"github.com/faiface/beep/wav"
 	"github.com/turt2live/matrix-media-repo/common/rcontext"
 	"github.com/turt2live/matrix-media-repo/thumbnailing/m"
+	"github.com/turt2live/matrix-media-repo/thumbnailing/u"
 	"github.com/turt2live/matrix-media-repo/util"
 )
 
@@ -40,7 +41,7 @@ func (d wavGenerator) GenerateThumbnail(b []byte, contentType string, width int,
 	}
 
 	defer audio.Close()
-	return mp3Generator{}.GenerateFromStream(audio, format, width, height)
+	return mp3Generator{}.GenerateFromStream(audio, format, u.GetID3Tags(b), width, height)
 }
 
 func (d wavGenerator) GetAudioData(b []byte, nKeys int, ctx rcontext.RequestContext) (*m.AudioInfo, error) {
diff --git a/thumbnailing/u/metadata.go b/thumbnailing/u/metadata.go
new file mode 100644
index 00000000..e8245adc
--- /dev/null
+++ b/thumbnailing/u/metadata.go
@@ -0,0 +1,12 @@
+package u
+
+import (
+	"bytes"
+
+	"github.com/dhowden/tag"
+)
+
+func GetID3Tags(b []byte) tag.Metadata {
+	meta, _ := tag.ReadFrom(bytes.NewReader(b))
+	return meta
+}
-- 
GitLab