+;;;;;; ; ; ;; ; ; ; ; ; ;; ;
+;;
+;; Cover Art Archive API
+;; https://musicbrainz.org/doc/Cover_Art_Archive/API
+;;
+;;;; ; ; ; ; ;
+
+;; /release/{mbid}/
+;; /release/{mbid}/front
+;; /release/{mbid}/back
+;; /release/{mbid}/{id}
+;; /release/{mbid}/({id}|front|back)-(250|500|1200)
+;;
+;; /release-group/{mbid}/
+;; /release-group/{mbid}/front[-(250|500|1200)]
+
+;;;###autoload
+(defun musicbrainz-coverart (mbid &optional release-group)
+ "Search MusicBrainz Cover Art Archive for release MBID.
+When RELEASE-GROUP is non-nil MBID is for a release group, rather than release."
+ (message "MusicBrainz: cover art for %s" mbid)
+ (message "url: %s/release/%s" musicbrainz-coverart-api-url mbid)
+ (let ((response
+ (request-response-data
+ (request
+ (url-encode-url
+ (format "%s/release/%s" musicbrainz-coverart-api-url mbid))
+ :type "GET"
+ :header (list `("User-Agent" . ,musicbrainz-user-agent))
+ :parser 'json-read
+ :sync t
+ :success (cl-function
+ (lambda (&key data &allow-other-keys)
+ (message "ok")))))))
+ response))
+
+(defun musicbrainz-coverart-file-front (mbid)
+ "Get the MusicBrainz Cover Art front cover file for MBID."
+ (message "MusicBrainz: cover art (front) for %s" mbid)
+ (message "url: %s/release/%s/front" musicbrainz-coverart-api-url mbid)
+ (let ((response
+ (request-response-data
+ (request
+ (url-encode-url
+ (format "%s/release/%s/front" musicbrainz-coverart-api-url mbid))
+ :type "GET"
+ :header (list `("User-Agent" . ,musicbrainz-user-agent))
+ :sync t
+ :success (cl-function
+ (lambda (&key data &allow-other-keys)
+ (message "ok")))))))
+ response))
+
+(defun musicbrainz-coverart-file-back (mbid)
+ "Get the MusicBrainz Cover Art back cover file for MBID."
+ (message "MusicBrainz: cover art (back) for %s" mbid)
+ (message "url: %s/release/%s/back" musicbrainz-coverart-api-url mbid)
+ (let ((response
+ (request-response-data
+ (request
+ (url-encode-url
+ (format "%s/release/%s/back" musicbrainz-coverart-api-url mbid))
+ :type "GET"
+ :header (list `("User-Agent" . ,musicbrainz-user-agent))
+ :sync t
+ :success (cl-function
+ (lambda (&key data &allow-other-keys)
+ (message "ok")))))))
+ response))
+
+