From a28acb8353fee596dcd26a5b162c61a17e2bdc68 Mon Sep 17 00:00:00 2001
From: Ciaran Ainsworth <ciaranainsworth@posteo.net>
Date: Sun, 16 Jun 2019 16:23:12 +0100
Subject: [PATCH] Added buttons to search for objects on Discogs

---
 changes/changelog.d/368.enhancement         |  1 +
 front/src/components/library/AlbumBase.vue  | 13 ++++++++++++-
 front/src/components/library/ArtistBase.vue | 10 ++++++++++
 front/src/components/library/TrackBase.vue  | 12 ++++++++++++
 4 files changed, 35 insertions(+), 1 deletion(-)
 create mode 100644 changes/changelog.d/368.enhancement

diff --git a/changes/changelog.d/368.enhancement b/changes/changelog.d/368.enhancement
new file mode 100644
index 000000000..7e8f78c0a
--- /dev/null
+++ b/changes/changelog.d/368.enhancement
@@ -0,0 +1 @@
+Added button to search for objects on Discogs (#368)
diff --git a/front/src/components/library/AlbumBase.vue b/front/src/components/library/AlbumBase.vue
index 1f89bef88..2b3c978bc 100644
--- a/front/src/components/library/AlbumBase.vue
+++ b/front/src/components/library/AlbumBase.vue
@@ -61,7 +61,11 @@
                     <i class="external icon"></i>
                     <translate translate-context="Content/*/*/Clickable, Verb">View on MusicBrainz</translate>
                   </a>
-                  <router-link
+		  <a :href="discogsUrl" target="_blank" rel="noreferrer noopener" class="basic item">
+		    <i class="external icon"></i>
+		    <translate translate-context="Content/*/Button.Label/Verb">Search on Discogs</translate>
+                  </a>
+		  <router-link
                     v-if="object.is_local"
                     :to="{name: 'library.albums.edit', params: {id: object.id }}"
                     class="basic item">
@@ -168,6 +172,13 @@ export default {
         return "https://musicbrainz.org/release/" + this.object.mbid
       }
     },
+    discogsUrl() {
+      return (
+        "https://discogs.com/search/?type=release&title=" +
+	encodeURI(this.object.title) + "&artist=" +
+	encodeURI(this.object.artist.name)
+	)
+    },
     headerStyle() {
       if (!this.object.cover.original) {
         return ""
diff --git a/front/src/components/library/ArtistBase.vue b/front/src/components/library/ArtistBase.vue
index 5da7370ba..3c21f603f 100644
--- a/front/src/components/library/ArtistBase.vue
+++ b/front/src/components/library/ArtistBase.vue
@@ -72,6 +72,10 @@
                     <i class="external icon"></i>
                     <translate translate-context="Content/*/*/Clickable, Verb">View on MusicBrainz</translate>
                   </a>
+		  <a :href="discogsUrl" target="_blank" rel="noreferrer noopener" class="basic item">
+		    <i class="external icon"></i>
+		    <translate translate-context="Content/*/Button.Label/Verb">Search on Discogs</translate>
+		  </a>
                   <router-link
                     v-if="object.is_local"
                     :to="{name: 'library.artists.edit', params: {id: object.id }}"
@@ -205,6 +209,12 @@ export default {
         return "https://musicbrainz.org/artist/" + this.object.mbid
       }
     },
+    discogsUrl() {
+      return (
+        "https://discogs.com/search/?type=artist&title=" +
+	encodeURI(this.object.name)
+      )
+    },
     cover() {
       return this.object.albums
         .filter(album => {
diff --git a/front/src/components/library/TrackBase.vue b/front/src/components/library/TrackBase.vue
index 639c8f51b..a968f8b0c 100644
--- a/front/src/components/library/TrackBase.vue
+++ b/front/src/components/library/TrackBase.vue
@@ -80,6 +80,10 @@
                     <i class="external icon"></i>
                     <translate translate-context="Content/*/*/Clickable, Verb">View on MusicBrainz</translate>
                   </a>
+		  <a :href="discogsUrl" target="_blank" rel="noreferrer noopener" class="basic item">
+		    <i class="external icon"></i>
+		    <translate translate-context="Content/*/Button.Label/Verb">Search on Discogs</translate>
+		  </a>
                   <router-link
                     v-if="track.is_local"
                     :to="{name: 'library.tracks.edit', params: {id: track.id }}"
@@ -184,6 +188,14 @@ export default {
         return "https://musicbrainz.org/recording/" + this.track.mbid
       }
     },
+    discogsUrl() {
+      return (
+        "https://discogs.com/search/?type=release&title=" +
+	encodeURI(this.track.album.title) + "&artist=" +
+	encodeURI(this.track.artist.name) + "&track=" +
+	encodeURI(this.track.title)
+      )
+    },
     downloadUrl() {
       let u = this.$store.getters["instance/absoluteUrl"](
         this.upload.listen_url
-- 
GitLab