]> git.vanrenterghem.biz Git - musicbrainz.git/blobdiff - README.org
See the windows in your hand
[musicbrainz.git] / README.org
index 6cefd7ceb6914b4e44366555c744ce04421f55d9..686475f8481f396c1a501ad9b90a601c3b1eec7e 100644 (file)
@@ -1,7 +1,9 @@
 # -*- mode: org; coding: utf-8; -*-
 #+OPTIONS: toc:2 num:nil html-style:nil
 #+author:
-#+title:  MusicBrainz & ListenBrainz & other
+#+title:  MusicBrainz & ListenBrainz & others
+
+* MusicBrainz
 
 [[file:img/musicbrainz-logo.svg]]
 
@@ -9,57 +11,94 @@ MusicBrainz is a community-maintained open source encyclopedia of [[https://musi
 
 This code provides a simple, incomplete yet possibly useful interface to some of the MusicBrainz and ListenBrainz APIs from emacs for exploratory  use in =org-mode= or behind the scenes sending listening metadata.
 
+** MusicBrainz API
+
+- Recording documentation: https://musicbrainz.org/doc/Recording
+- Release documentation: https://musicbrainz.org/doc/Release
+- Artist documentation: https://musicbrainz.org/doc/Artist
+
+** searching & browsing
+
+Search supports the full  [[https://lucene.apache.org/core/7_7_2/queryparser/org/apache/lucene/queryparser/classic/package-summary.html#package.description][Lucene search syntax]].
+
 ** some examples
 
+The API docs provide an example search for “Autechre albums & eps” using the URL https://musicbrainz.org/ws/2/release-group?artist=410c9baf-5469-44f6-9852-826524b80c61&type=album|ep
+
+The equivalent function (which returns a raw response as an alist) would be…
+#+BEGIN_SRC emacs-lisp
+(musicbrainz-browse "release-group" "artist" "410c9baf-5469-44f6-9852-826524b80c61" "album|ep")
+#+END_SRC
+
+For slightly more legible output wrap with =musicbrainz-format=
 #+BEGIN_SRC emacs-lisp
-(musicbrainz-search "recording" "taema")
+(musicbrainz-format
+ (musicbrainz-browse "release-group"
+                     "artist"
+                     "410c9baf-5469-44f6-9852-826524b80c61"
+                     "album|ep"))
 #+END_SRC
 
-Autechre albums & eps
+A more interactive approach could start with  =(musicbrainz-search "artist" "Autechre")= or =(musicbrainz-search-artist "Autechre")= Which returns an MBID required for the lookup  =410c9baf-5469-44f6-9852-826524b80c61=
 
-docs provide the example URL https://musicbrainz.org/ws/2/release-group?artist=410c9baf-5469-44f6-9852-826524b80c61&type=album|ep
+The MBID can be used for specific lookups (and checked if needed using =musicbrainz-mbid-p= )
 
 #+BEGIN_SRC emacs-lisp
-(musicbrainz-browse "release-group" "artist" "410c9baf-5469-44f6-9852-826524b80c61" "album|ep")
+(musicbrainz-lookup "artist" "410c9baf-5469-44f6-9852-826524b80c61" "releases")
+#+END_SRC
+
+#+BEGIN_SRC emacs-lisp
+(musicbrainz-lookup-artist "410c9baf-5469-44f6-9852-826524b80c61")
+#+END_SRC
+
+| Autechre | electronic music duo | Group | [[https://musicbrainz.org/artist/410c9baf-5469-44f6-9852-826524b80c61][410c9baf-5469-44f6-9852-826524b80c61]] |
+
+#+BEGIN_SRC emacs-lisp
+(musicbrainz-lookup-artist-releases "410c9baf-5469-44f6-9852-826524b80c61")
 #+END_SRC
 
 #+BEGIN_SRC emacs-lisp
-(musicbrainz-search-artist "Autechre")
+(musicbrainz-lookup-artist-recordings "410c9baf-5469-44f6-9852-826524b80c61")
 #+END_SRC
 
-#+RESULTS:
-| Autechre | 410c9baf-5469-44f6-9852-826524b80c61 |
+#+BEGIN_SRC emacs-lisp
+(musicbrainz-lookup-release "ec1ecfcc-f529-43d1-8aa6-2c7051ede00c")
+#+END_SRC
 
+| 1990 | Autechre / Saw You | Cassette Case | [[https://musicbrainz.org/release/ec1ecfcc-f529-43d1-8aa6-2c7051ede00c][ec1ecfcc-f529-43d1-8aa6-2c7051ede00c]] |
+
+#+BEGIN_SRC emacs-lisp
+(musicbrainz-lookup-recording "83730176-89ec-41a5-a4b6-476998f6291c")
+#+END_SRC
+
+| [untitled] | [[https://musicbrainz.org/recording/83730176-89ec-41a5-a4b6-476998f6291c][83730176-89ec-41a5-a4b6-476998f6291c]] |
 
 #+BEGIN_SRC emacs-lisp
 (musicbrainz-search-label "Warp")
 #+END_SRC
 
-#+RESULTS:
-| Warp | 46f0f4cd-8aab-4b33-b698-f459faf64190 |
+| Warp | [[https://musicbrainz.org/label/46f0f4cd-8aab-4b33-b698-f459faf64190][46f0f4cd-8aab-4b33-b698-f459faf64190]] |
 
 #+BEGIN_SRC emacs-lisp
 (musicbrainz-search-label "Music" 5)
 #+END_SRC
 
-#+RESULTS:
-| 100 | Sony Music      | global brand, excluding JP, owned by Sony Music Entertainment (1991 ongoing)                          | 9e6b4d7f-4958-4db7-8504-d89e315836af |
-|  96 | [no label]      | Special purpose label – white labels, self-published releases and other “no label” releases (ongoing) | 157afde4-4bf5-4039-8ad2-5a15acc85176 |
-|  91 | Polydor         | worldwide imprint, see annotation (1913-04-02 ongoing)                                                | ce24ab18-1bd6-4293-a486-546d13d6a5e2 |
-|  91 | Universal Music | plain logo: “Universal Music” (ongoing)                                                               | 13a464dc-b9fd-4d16-a4f4-d4316f6a46c7 |
-|  90 | ZYX Music       | (1992 ongoing)                                                                                        | 6844efda-a451-431e-8cc1-48ab111b4711 |
+| 100 | Sony Music      | global brand, excluding JP, owned by Sony Music Entertainment (1991 ongoing)                          | [[https://musicbrainz.org/label/9e6b4d7f-4958-4db7-8504-d89e315836af][9e6b4d7f-4958-4db7-8504-d89e315836af]] |
+|  96 | [no label]      | Special purpose label – white labels, self-published releases and other “no label” releases (ongoing) | [[https://musicbrainz.org/label/157afde4-4bf5-4039-8ad2-5a15acc85176][157afde4-4bf5-4039-8ad2-5a15acc85176]] |
+|  91 | Polydor         | worldwide imprint, see annotation (1913-04-02 ongoing)                                                | [[https://musicbrainz.org/label/ce24ab18-1bd6-4293-a486-546d13d6a5e2][ce24ab18-1bd6-4293-a486-546d13d6a5e2]] |
+|  91 | Universal Music | plain logo: “Universal Music” (ongoing)                                                               | [[https://musicbrainz.org/label/13a464dc-b9fd-4d16-a4f4-d4316f6a46c7][13a464dc-b9fd-4d16-a4f4-d4316f6a46c7]] |
+|  90 | ZYX Music       | (1992 ongoing)                                                                                        | [[https://musicbrainz.org/label/6844efda-a451-431e-8cc1-48ab111b4711][6844efda-a451-431e-8cc1-48ab111b4711]] |
 
-** MBID
 
-“One of MusicBrainz' aims is to be the universal lingua franca for music by providing a reliable and unambiguous form of music identification; this music identification is performed through the use of MusicBrainz Identifiers  (MBIDs). An MBID is a 36 character Universally Unique Identifier that is permanently assigned to each entity in the database, i.e. artists, release groups, releases, recordings, works, labels, areas, places and URLs. MBIDs are also assigned to Tracks, though tracks do not share many other properties of entities.”
+** MBID
 
-https://musicbrainz.org/doc/MusicBrainz_Identifier
+“One of MusicBrainz' aims is to be the universal lingua franca for music by providing a reliable and unambiguous form of music identification; this music identification is performed through the use of MusicBrainz Identifiers  (MBIDs). An MBID is a 36 character Universally Unique Identifier that is permanently assigned to each entity in the database, i.e. artists, release groups, releases, recordings, works, labels, areas, places and URLs. MBIDs are also assigned to Tracks, though tracks do not share many other properties of entities.” https://musicbrainz.org/doc/MusicBrainz_Identifier
 
 #+BEGIN_SRC emacs-lisp
 (musicbrainz-artist-to-mbid "Autechre")
 #+END_SRC
 
-=410c9baf-5469-44f6-9852-826524b80c61=
+returns =410c9baf-5469-44f6-9852-826524b80c61=
 
 #+BEGIN_SRC emacs-lisp
 (musicbrainz-mbid-p "410c9baf-5469-44f6-9852-826524b80c61")
@@ -67,7 +106,7 @@ https://musicbrainz.org/doc/MusicBrainz_Identifier
 
 ** ambiguity
 
-from the docs…
+From the docs…
 
 #+BEGIN_SRC text
 John Williams, the soundtrack composer and conductor, has an artist MBID of 53b106e7-0cc6-42cc-ac95-ed8d30a3a98e
@@ -75,20 +114,26 @@ John Williams, the classical guitar player, has an artist MBID of 8b8a38a9-a290-
 #+END_SRC
 
 #+BEGIN_SRC emacs-lisp
-(musicbrainz-disambiguate-artist "John Williams")
+(musicbrainz-disambiguate-artist "John Williams" 3)
 #+END_SRC
 
+|     | Artist: John Williams                                         | MBID                                 |
+| 100 | John Williams, American score composer                        | [[https://musicbrainz.org/artist/53b106e7-0cc6-42cc-ac95-ed8d30a3a98e][53b106e7-0cc6-42cc-ac95-ed8d30a3a98e]] |
+|  94 | John Williams, classical guitarist                            | [[https://musicbrainz.org/artist/8b8a38a9-a290-4560-84f6-3d4466e8d791][8b8a38a9-a290-4560-84f6-3d4466e8d791]] |
+|  92 | John Williams, English A&R executive, producer, songwriter... | [[https://musicbrainz.org/artist/eb5d7680-0c00-4b0c-b6eb-9605ff77723d][eb5d7680-0c00-4b0c-b6eb-9605ff77723d]] |
+
+There are several “Bad Seeds”
+
 #+BEGIN_SRC emacs-lisp
 (musicbrainz-artist-to-mbid "Bad Seeds")
 #+END_SRC
 
-=7feb02f2-51fa-422d-838e-2c14ecb4c7b8= →  Tomorrows Bad Seeds
+Which returns the MBID =7feb02f2-51fa-422d-838e-2c14ecb4c7b8= for “Tomorrows Bad Seeds”, however…
 
 #+BEGIN_SRC emacs-lisp
-(musicbrainz-disambiguate-artist "Bad Seeds")
+(musicbrainz-disambiguate-artist "Bad Seeds" 7)
 #+END_SRC
 
-#+RESULTS:
 |     | Artist: Bad Seeds                                         | MBID                                 |
 | 100 | Tomorrows Bad Seeds, nil                                  | [[https://musicbrainz.org/artist/7feb02f2-51fa-422d-838e-2c14ecb4c7b8][7feb02f2-51fa-422d-838e-2c14ecb4c7b8]] |
 |  98 | The Bad Seeds, 60s Texas rock band                        | [[https://musicbrainz.org/artist/3e593712-9f70-4b7a-b21b-466016998a3d][3e593712-9f70-4b7a-b21b-466016998a3d]] |
@@ -96,17 +141,79 @@ John Williams, the classical guitar player, has an artist MBID of 8b8a38a9-a290-
 |  98 | The Bad Seeds, backing band for Nick Cave                 | [[https://musicbrainz.org/artist/eb2a8edc-5670-4896-82be-87db38de9583][eb2a8edc-5670-4896-82be-87db38de9583]] |
 |  86 | Nick Cave & the Bad Seeds, nil                            | [[https://musicbrainz.org/artist/172e1f1a-504d-4488-b053-6344ba63e6d0][172e1f1a-504d-4488-b053-6344ba63e6d0]] |
 |  50 | The Lightning Seeds, nil                                  | [[https://musicbrainz.org/artist/1ba601a0-3401-4b28-8ddd-9af8203661e8][1ba601a0-3401-4b28-8ddd-9af8203661e8]] |
+|  49 | Seeds, UK dancehall                                       | [[https://musicbrainz.org/artist/a03cf587-a3d3-4847-ac41-e488f779a313][a03cf587-a3d3-4847-ac41-e488f779a313]] |
 
+#+BEGIN_SRC emacs-lisp
+(musicbrainz-lookup-artist "172e1f1a-504d-4488-b053-6344ba63e6d0")
+#+END_SRC
 
+** incompleteness
+
+general, specific and partial API coverage
+
+*** Searching & browsing
+
+Search supports the full  [[https://lucene.apache.org/core/7_7_2/queryparser/org/apache/lucene/queryparser/classic/package-summary.html#package.description][Lucene search syntax]] in queries.
+
+| (musicbrainz-search /type/ /query/ &optional /limit/ /offset/) | see =musicbrainz-search-types= |
+| (musicbrainz-browse /entity/ /link/ /query/ &optional /type/)  | and =musicbrainz-entities-*=   |
+
+| (musicbrainz-search-artist /artist/ &optional /limit/)       |   |
+| (musicbrainz-artist-to-mbid /artist/)                      |   |
+| (musicbrainz-disambiguate-artist /artist/ &optional /limit/) |   |
+| (musicbrainz-search-label /label/ &optional /limit/)         |   |
+| (musicbrainz-search-recording /query/ &optional /limit/)     |   |
+| (musicbrainz-search-release /query/ &optional /limit/)       |   |
+
+*** Lookup queries & subqueries
+
+| (musicbrainz-lookup /entity/ /MBID/ &optional /inc/) | valid entities listed in =musicbrainz-entities-core= |
+
+| *Functions & formatted output*                          | example MBID                         |
+| (musicbrainz-lookup-area /MBID/)                        | [[https://musicbrainz.org/area/c9ac1239-e832-41bc-9930-e252a1fd1105][c9ac1239-e832-41bc-9930-e252a1fd1105]] |
+| (musicbrainz-lookup-artist /MBID/)                      | [[https://musicbrainz.org/artist/410c9baf-5469-44f6-9852-826524b80c61][410c9baf-5469-44f6-9852-826524b80c61]] |
+| (musicbrainz-lookup-artist-recordings /MBID/)           | …                                    |
+| (musicbrainz-lookup-artist-releases /MBID/)             | …                                    |
+| (musicbrainz-lookup-artist-release-groups /MBID/)       | …                                    |
+| (musicbrainz-lookup-artist-works /MBID/)                | …                                    |
+| (musicbrainz-lookup-collection /MBID/)                  | …                                    |
+| (musicbrainz-lookup-collection-user-collections /MBID/) | …                                    |
+| (musicbrainz-lookup-event /MBID/)                       | [[https://musicbrainz.org/event/7c132556-e902-4481-b9cb-ec76a175628a][7c132556-e902-4481-b9cb-ec76a175628a]] |
+| (musicbrainz-lookup-genre /MBID/)                       | [[https://musicbrainz.org/genre/68c81274-5770-4e7b-a4bf-ab0d7d425d99][68c81274-5770-4e7b-a4bf-ab0d7d425d99]] |
+| (musicbrainz-lookup-instrument /MBID/)                  | [[https://musicbrainz.org/instrument/303d4f1a-f799-4c42-9bac-dbedd9139e91][303d4f1a-f799-4c42-9bac-dbedd9139e91]] |
+| (musicbrainz-lookup-label /MBID/)                       | [[https://musicbrainz.org/label/8943d408-940c-403b-a01d-9036c227d50f][8943d408-940c-403b-a01d-9036c227d50f]] |
+| (musicbrainz-lookup-label-releases /MBID/)              | …                                    |
+| (musicbrainz-lookup-place /MBID/)                       | [[https://musicbrainz.org/place/73cba8a4-cacb-45b9-8e02-654f716e2e7a][73cba8a4-cacb-45b9-8e02-654f716e2e7a]] |
+| (musicbrainz-lookup-recording /MBID/)                   | [[https://musicbrainz.org/recording/ef8b34c1-8548-472c-872f-03e0d8d3bb37][ef8b34c1-8548-472c-872f-03e0d8d3bb37]] |
+| (musicbrainz-lookup-recording-artists /MBID/)           | …                                    |
+| (musicbrainz-lookup-recording-releases /MBID/)          | …                                    |
+| (musicbrainz-lookup-recording-isrcs /MBID/)             | …                                    |
+| (musicbrainz-lookup-recording-url-rels /MBID/)          | …                                    |
+| (musicbrainz-lookup-release /MBID/)                     | …                                    |
+| (musicbrainz-lookup-release-artists /MBID/)             | …                                    |
+| (musicbrainz-lookup-release-collections /MBID/)         | …                                    |
+| (musicbrainz-lookup-release-labels /MBID/)              | …                                    |
+| (musicbrainz-lookup-release-recordings /MBID/)          | …                                    |
+| (musicbrainz-lookup-release-release-groups /MBID/)      | …                                    |
+| (musicbrainz-lookup-release-group /MBID/)               | [[https://musicbrainz.org/release-group/fe4acfe9-6d1e-3565-8857-fb16ddc492ab][fe4acfe9-6d1e-3565-8857-fb16ddc492ab]] |
+| (musicbrainz-lookup-release-group-artists /MBID/)       | …                                    |
+| (musicbrainz-lookup-release-group-releases /MBID/)      | …                                    |
+| (musicbrainz-lookup-series /MBID/)                      | …                                    |
+| (musicbrainz-lookup-work /MBID/)                        | …                                    |
+| (musicbrainz-lookup-url /MBID/)                         | …                                    |
+
+
+* ListenBrainz
 
 
 [[file:img/listenbrainz-logo.svg]]
-* listening
+
+** listening
 
 - https://listenbrainz.org
 - https://listenbrainz.readthedocs.io/
 
-* examples
+** examples
 
 #+BEGIN_SRC emacs-lisp
 (setq listenbrainz-api-token "000-000-000")
@@ -125,11 +232,11 @@ John Williams, the classical guitar player, has an artist MBID of 8b8a38a9-a290-
 #+END_SRC
 
 #+BEGIN_SRC emacs-lisp
-(listenbrainz-submit-single-listen "farmersmanual" "808808008088 (11)")
+(listenbrainz-submit-single-listen "Matthew Thomas" "Taema" "Architecture")
 #+END_SRC
 
 #+BEGIN_SRC emacs-lisp
-(listenbrainz-submit-single-listen "Matthew Thomas" "Taema" "Architecture")
+(listenbrainz-submit-single-listen "farmersmanual" "808808008088 (11)")
 #+END_SRC
 
 #+BEGIN_SRC emacs-lisp
@@ -141,7 +248,7 @@ John Williams, the classical guitar player, has an artist MBID of 8b8a38a9-a290-
 #+END_SRC
 
 #+BEGIN_SRC emacs-lisp
-(listenbrainz-stats-artists "zzzkt") ;; defaults to ’all time’
+(listenbrainz-stats-artists "zzzkt")
 #+END_SRC
 
 #+BEGIN_SRC emacs-lisp
@@ -152,9 +259,8 @@ John Williams, the classical guitar player, has an artist MBID of 8b8a38a9-a290-
 (listenbrainz-stats-recordings "zzzkt" 13 "month")
 #+END_SRC
 
-* incompleteness
-
-** Core API endpoints
+** incompleteness
+*** Core API endpoints
 
 https://listenbrainz.readthedocs.io/en/production/dev/api/#core-api-endpoints
 
@@ -175,7 +281,7 @@ https://listenbrainz.readthedocs.io/en/production/dev/api/#core-api-endpoints
 | GET /1/latest-import                                    | -                                 |
 | POST /1/latest-import                                   | -                                 |
 
-** Feedback API Endpoints
+*** Feedback API Endpoints
 
 https://listenbrainz.readthedocs.io/en/production/dev/api/#feedback-api-endpoints
 
@@ -184,13 +290,13 @@ https://listenbrainz.readthedocs.io/en/production/dev/api/#feedback-api-endpoint
 | GET /1/feedback/user/(user_name)/get-feedback-for-recordings | – |
 | GET /1/feedback/user/(user_name)/get-feedback                | - |
 
-** Recording Recommendation API Endpoints
+*** Recording Recommendation API Endpoints
 
 https://listenbrainz.readthedocs.io/en/production/dev/api/#core-api-endpoints
 
 | GET /1/cf/recommendation/user/(user_name)/recording        | - |
 
-** Recording Recommendation Feedback API Endpoints
+*** Recording Recommendation Feedback API Endpoints
 
 https://listenbrainz.readthedocs.io/en/production/dev/api/#recording-recommendation-feedback-api-endpoints
 
@@ -199,7 +305,7 @@ https://listenbrainz.readthedocs.io/en/production/dev/api/#recording-recommendat
 | GET /1/recommendation/feedback/user/(user_name)/recordings | - |
 | GET /1/recommendation/feedback/user/(user_name)            | - |
 
-** Statistics API Endpoints
+*** Statistics API Endpoints
 
 https://listenbrainz.readthedocs.io/en/production/dev/api/#statistics-api-endpoints
 
@@ -211,13 +317,13 @@ https://listenbrainz.readthedocs.io/en/production/dev/api/#statistics-api-endpoi
 | GET /1/stats/user/(user_name)/releases           | listenbrainz-stats-releases   |
 | GET /1/stats/user/(user_name)/artists            | listenbrainz-stats-artists    |
 
-** Status API Endpoints
+*** Status API Endpoints
 
 https://listenbrainz.readthedocs.io/en/production/dev/api/#status-api-endpoints
 
 | GET /1/status/get-dump-info | - |
 
-** User Timeline API Endpoints
+*** User Timeline API Endpoints
 
 https://listenbrainz.readthedocs.io/en/production/dev/api/#user-timeline-api-endpoints
 
@@ -226,7 +332,7 @@ https://listenbrainz.readthedocs.io/en/production/dev/api/#user-timeline-api-end
 | POST /1/user/(user_name)/feed/events/delete                 | - |
 | GET /1/user/(user_name)/feed/events                         | - |
 
-** Social API Endpoints
+*** Social API Endpoints
 
 https://listenbrainz.readthedocs.io/en/production/dev/api/#social-api-endpoints
 
@@ -235,7 +341,7 @@ https://listenbrainz.readthedocs.io/en/production/dev/api/#social-api-endpoints
 | POST /1/user/(user_name)/unfollow | -                      |
 | POST /1/user/(user_name)/follow   | -                      |
 
-** Pinned Recording API Endpoints
+*** Pinned Recording API Endpoints
 
 https://listenbrainz.readthedocs.io/en/production/dev/api/#pinned-recording-api-endpoints
 
@@ -246,7 +352,14 @@ https://listenbrainz.readthedocs.io/en/production/dev/api/#pinned-recording-api-
 | GET /1/(user_name)/pins           | - |
 
 
+* otherBrainz
+ - [[https://critiquebrainz.org/][CritiqueBrainz]]
+ - [[https://bookbrainz.org/][BookBrainz]] → https://api.test.bookbrainz.org/1/docs/
+ - [[https://listenbrainz.org/messybrainz/][MessyBrainz]]
+ - [[https://coverartarchive.org/][Cover art archive]]
 
 * further
+- https://labs.api.listenbrainz.org/
+- https://troi.readthedocs.io/en/latest/
 - https://listenbrainz.org/user/troi-bot/playlists/
 - https://github.com/metabrainz/bono-data-sets/blob/main/top_discoveries.py