https://wiki.musicbrainz.org/api.php?action=feedcontributions&user=JonnyJD&feedformat=atomMusicBrainz Wiki - User contributions [en]2024-03-19T12:08:43ZUser contributionsMediaWiki 1.35.6https://wiki.musicbrainz.org/index.php?title=libdiscid&diff=71594libdiscid2017-01-29T14:19:43Z<p>JonnyJD: /* Download */ link 0.6.2 source package</p>
<hr />
<div><small>[[Products]] > libdiscid </small> <br />
<br />
'''libdiscid''' is a C library for creating MusicBrainz and freedb [[Disc ID|disc ID]]s from audio CDs.<br />
It reads a CD's table of contents (TOC) and generates an identifier which can be used to lookup the CD at MusicBrainz.<br />
Additionally, it provides a submission URL for adding the disc ID to the database and gathers [[ISRC]]s and the MCN (=UPC/EAN) from disc.<br />
<br />
The interface of this library is new, but the disc ID algorithm and the operating system dependent CD-ROM/DVD-ROM access code have been ported from libmusicbrainz version 2.<br />
<br />
For more info about the interface read the [http://jonnyjd.github.io/libdiscid/ API documentation].<br />
The repository is at [https://github.com/metabrainz/libdiscid GitHub] and bugs should be reported at the [http://tickets.musicbrainz.org/browse/LIB MusicBrainz bug tracker].<br />
<br />
libdiscid is licensed under the [http://www.gnu.org/copyleft/lgpl.html GNU Lesser General Public License 2.1 or later].<br />
<br />
==Download==<br />
<br />
Source code:<br />
<br />
* [http://ftp.musicbrainz.org/pub/musicbrainz/libdiscid/libdiscid-0.6.2.tar.gz libdiscid-0.6.2.tar.gz] (358K)<br />
<br />
Compiled packages:<br />
<br />
* [http://ftp.musicbrainz.org/pub/musicbrainz/libdiscid/libdiscid-0.6.1-win32.zip libdiscid-0.6.1-win32.zip] (413K)<br />
* [http://ftp.musicbrainz.org/pub/musicbrainz/libdiscid/libdiscid-0.6.1-mac.zip libdiscid-0.6.1-mac.zip] (409K)<br />
<br />
Changes:<br />
<br />
* [https://raw.github.com/metabrainz/libdiscid/master/ChangeLog ChangeLog] (GitHub)<br />
<br />
===Feature Matrix===<br />
<br />
{| class="wikitable"<br />
|rowspan=2| ||colspan=3|Linux||colspan=3|Windows||colspan=3|Mac||colspan=3|(k)FreeBSD||colspan=3|Open/NetBSD||Solaris||generic<br />
|-<br />
| read ||mcn ||isrc ||read ||mcn ||isrc ||read ||mcn ||isrc ||read ||mcn ||isrc ||read ||mcn ||isrc ||read ||put<br />
|-<br />
|libdiscid 0.1.0||&bull;|| || ||&bull;|| || ||&bull;|| || || || || || || || || ||<br />
|-<br />
|libdiscid 0.2.0||&bull;|| || ||&bull;|| || ||&bull;|| || ||&bull;|| || || || || || ||<br />
|-<br />
|libdiscid 0.3.0||&bull;|| || ||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;|| || ||&bull;|| || ||&bull;||<br />
|-<br />
|libdiscid 0.3.1||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;|| || ||&bull;|| || ||&bull;||<br />
|-<br />
|libdiscid 0.4.0||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;|| || ||&bull;|| || ||&bull;||&bull;<br />
|-<br />
|libdiscid 0.6.2||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;<br />
<br />
|}<br />
The "read" feature can create an ID from a disc in the drive.<br />
Generic platform support was added in 0.4.0 and can only generate disc IDs with put() (without drive access).<br />
Put is also available for every platform where read is available.<br />
Only versions where new feature/platform support is implemented are listed.<br />
<br />
==Language bindings==<br />
<br />
* Ruby - [https://github.com/phw/ruby-discid ruby-discid]<br />
* Perl - [http://search.cpan.org/dist/MusicBrainz-DiscID/ http://search.cpan.org/dist/MusicBrainz-DiscID/] ([https://github.com/njh/perl-musicbrainz-discid GitHub])<br />
* Java:<br />
** [https://github.com/dietmar-steiner/JMBDiscId JMBDiscId]<br />
** [http://benow.ca/projects/libdiscid-java/ http://benow.ca/projects/libdiscid-java/]<br />
* Python:<br />
** [https://python-discid.readthedocs.org python-discid], using ctypes (no compilation), Python 2 and 3<br />
** [http://pythonhosted.org/python-libdiscid/ python-libdiscid], using cython (compiled), Python 2 and 3<br />
** ''[[python-musicbrainz2]], deprecated, contains functions to access libdiscid using its own API, Python 2 only, no ISRCs''<br />
* Haskell - [http://hackage.haskell.org/package/MusicBrainz-libdiscid Hackage] ([https://github.com/atwupack/MusicBrainz-libdiscid GitHub])<br />
* .NET/Mono - [https://github.com/phw/dotnet-discid dotnet-discid]<br />
<br />
==Tools based on libdiscid==<br />
* [[ISRC#Resources]], many ISRC submit tools are based on libdiscid or one of the bindings and can be used to add disc IDs and ISRCs.<br />
* [[Picard]] uses libdiscid to calculate the disc ID (lookup by CD)<br />
<br />
==See also==<br />
* [[User:PBryan/mbdiscid]], an alternative in Perl<br />
<br />
[[Category:Products]] [[Category:Development]] [[Category:WikiDocs Page]] [[Category:To Be Reviewed]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=libdiscid&diff=71593libdiscid2017-01-29T13:53:21Z<p>JonnyJD: /* Feature Matrix */ amend for 0.6.2 (BSD: ISCR/MCN)</p>
<hr />
<div><small>[[Products]] > libdiscid </small> <br />
<br />
'''libdiscid''' is a C library for creating MusicBrainz and freedb [[Disc ID|disc ID]]s from audio CDs.<br />
It reads a CD's table of contents (TOC) and generates an identifier which can be used to lookup the CD at MusicBrainz.<br />
Additionally, it provides a submission URL for adding the disc ID to the database and gathers [[ISRC]]s and the MCN (=UPC/EAN) from disc.<br />
<br />
The interface of this library is new, but the disc ID algorithm and the operating system dependent CD-ROM/DVD-ROM access code have been ported from libmusicbrainz version 2.<br />
<br />
For more info about the interface read the [http://jonnyjd.github.io/libdiscid/ API documentation].<br />
The repository is at [https://github.com/metabrainz/libdiscid GitHub] and bugs should be reported at the [http://tickets.musicbrainz.org/browse/LIB MusicBrainz bug tracker].<br />
<br />
libdiscid is licensed under the [http://www.gnu.org/copyleft/lgpl.html GNU Lesser General Public License 2.1 or later].<br />
<br />
==Download==<br />
<br />
Source code:<br />
<br />
* [http://ftp.musicbrainz.org/pub/musicbrainz/libdiscid/libdiscid-0.6.1.tar.gz libdiscid-0.6.1.tar.gz] (358K)<br />
<br />
Compiled packages:<br />
<br />
* [http://ftp.musicbrainz.org/pub/musicbrainz/libdiscid/libdiscid-0.6.1-win32.zip libdiscid-0.6.1-win32.zip] (413K)<br />
* [http://ftp.musicbrainz.org/pub/musicbrainz/libdiscid/libdiscid-0.6.1-mac.zip libdiscid-0.6.1-mac.zip] (409K)<br />
<br />
Changes:<br />
<br />
* [https://raw.github.com/metabrainz/libdiscid/master/ChangeLog ChangeLog] (GitHub)<br />
<br />
===Feature Matrix===<br />
<br />
{| class="wikitable"<br />
|rowspan=2| ||colspan=3|Linux||colspan=3|Windows||colspan=3|Mac||colspan=3|(k)FreeBSD||colspan=3|Open/NetBSD||Solaris||generic<br />
|-<br />
| read ||mcn ||isrc ||read ||mcn ||isrc ||read ||mcn ||isrc ||read ||mcn ||isrc ||read ||mcn ||isrc ||read ||put<br />
|-<br />
|libdiscid 0.1.0||&bull;|| || ||&bull;|| || ||&bull;|| || || || || || || || || ||<br />
|-<br />
|libdiscid 0.2.0||&bull;|| || ||&bull;|| || ||&bull;|| || ||&bull;|| || || || || || ||<br />
|-<br />
|libdiscid 0.3.0||&bull;|| || ||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;|| || ||&bull;|| || ||&bull;||<br />
|-<br />
|libdiscid 0.3.1||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;|| || ||&bull;|| || ||&bull;||<br />
|-<br />
|libdiscid 0.4.0||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;|| || ||&bull;|| || ||&bull;||&bull;<br />
|-<br />
|libdiscid 0.6.2||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;<br />
<br />
|}<br />
The "read" feature can create an ID from a disc in the drive.<br />
Generic platform support was added in 0.4.0 and can only generate disc IDs with put() (without drive access).<br />
Put is also available for every platform where read is available.<br />
Only versions where new feature/platform support is implemented are listed.<br />
<br />
==Language bindings==<br />
<br />
* Ruby - [https://github.com/phw/ruby-discid ruby-discid]<br />
* Perl - [http://search.cpan.org/dist/MusicBrainz-DiscID/ http://search.cpan.org/dist/MusicBrainz-DiscID/] ([https://github.com/njh/perl-musicbrainz-discid GitHub])<br />
* Java:<br />
** [https://github.com/dietmar-steiner/JMBDiscId JMBDiscId]<br />
** [http://benow.ca/projects/libdiscid-java/ http://benow.ca/projects/libdiscid-java/]<br />
* Python:<br />
** [https://python-discid.readthedocs.org python-discid], using ctypes (no compilation), Python 2 and 3<br />
** [http://pythonhosted.org/python-libdiscid/ python-libdiscid], using cython (compiled), Python 2 and 3<br />
** ''[[python-musicbrainz2]], deprecated, contains functions to access libdiscid using its own API, Python 2 only, no ISRCs''<br />
* Haskell - [http://hackage.haskell.org/package/MusicBrainz-libdiscid Hackage] ([https://github.com/atwupack/MusicBrainz-libdiscid GitHub])<br />
* .NET/Mono - [https://github.com/phw/dotnet-discid dotnet-discid]<br />
<br />
==Tools based on libdiscid==<br />
* [[ISRC#Resources]], many ISRC submit tools are based on libdiscid or one of the bindings and can be used to add disc IDs and ISRCs.<br />
* [[Picard]] uses libdiscid to calculate the disc ID (lookup by CD)<br />
<br />
==See also==<br />
* [[User:PBryan/mbdiscid]], an alternative in Perl<br />
<br />
[[Category:Products]] [[Category:Development]] [[Category:WikiDocs Page]] [[Category:To Be Reviewed]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=python-musicbrainz2&diff=69203python-musicbrainz22015-06-06T13:42:41Z<p>JonnyJD: /* Next Version */ also link python-discid as Disc IDs were also part of musicbrainz2.</p>
<hr />
<div>{{Status|Deprecated as of May 2011. This library is not compatible with the current [[MusicBrainz_Database/Schema|MusicBrainz schema]], but will still work with older versions and with the [[XML_Web_Service/Version_1|ws/1]] legacy web service.}}<br />
<small>[[Products]] > python-musicbrainz2 </small> <br />
<br />
The '''python-musicbrainz2''' package is a client library written in [http://python.org python] that provides easy object oriented access to the [[MusicBrainz Database]] using the [[XML Web Service]]. It has been written from scratch and uses a different model than its predecessor, python-musicbrainz.<br />
<br />
API documentation can be created from the source code using [http://epydoc.sf.net epydoc] and is also [http://musicbrainz.org/~matt/python-musicbrainz2/html/ available online]. The source distribution comes with [http://bugs.musicbrainz.org/browser/python-musicbrainz2/trunk/examples example code] which demonstrates some of the most important features. <br />
<br />
Questions about python-musicbrainz2 can be asked on the MusicBrainz [[Mailing_List#Developers.27_Mailing_List|developers mailing list]]. <br />
<br />
== Download ==<br />
<br />
{|<br />
| [[Image:download.gif]] || [http://ftp.musicbrainz.org/pub/musicbrainz/python-musicbrainz2/python-musicbrainz2-0.7.4.tar.gz python-musicbrainz2-0.7.4.tar.gz] (current release) <br/><small>MD5: 40ac802d832deca737cce57235cb23a5</small> <br />
|}<br />
<br />
=== License ===<br />
<br />
The python-musicbrainz2 library is licensed under a [http://opensource.org/licenses/bsd-license.php BSD style license]. <br />
<br />
=== Source Code ===<br />
<br />
The source code of python-musicbrainz2 is available using anonymous Subversion access. Read the [[Subversion]] document for instructions on how to use Subversion and checkout the python-musicbrainz2 source code. Alternatively, you can browse the python-musicbrainz2 Subversion repository directly using the [http://bugs.musicbrainz.org/browser/python-musicbrainz2/ source browser]. <br />
<br />
svn checkout http://svn.musicbrainz.org/python-musicbrainz2/trunk python-musicbrainz2<br />
<br />
== Troubleshooting ==<br />
<br />
If you find a bug, please report it on the [http://bugs.musicbrainz.org/ bug tracker] (use python-musicbrainz2 as the component) after checking to make sure it hasn't been listed yet. Also make sure you have read the relevant documentation (README.txt, INSTALL.txt, API documentation, FAQs) before doing so. Bugs regarding the [[XML Web Service]] itself should be filed under the ''XML Webservice'' component. <br />
<br />
=== FAQs ===<br />
<br />
; ctypes 0.9.6 doesn't compile using gcc-4.0 on Mac OS X <br />
According to [[Ticket:1157|1157]], you have to patch ctypes to make it compile. There is [http://oubiwann.blogspot.com/2006/01/ctypes-on-mac-os-x-104-with-gcc-40.html a patch] against ctypes-0.9.6. You may also use ctypes-0.9.9.3 or later which seems to compile, but this version doesn't work with the old python-tunepimp package, so picard-0.6 won't work. picard-0.7 doesn't require the old python-tunepimp anymore and will work. <br />
<br />
== Previous Version ==<br />
<br />
'''python-musicbrainz''' was a python wrapper for [[libmusicbrainz]] that used the [[RDF]] [[Web Service|web service]], it was a straight python to c binding, and used [http://starship.python.net/crew/theller/ctypes/ ctypes] to avoid having to write c code. It has been deprecated and replaced with python-musicbrainz2.<br />
<br />
== Next Version ==<br />
Planning for the next version of the library, supporting the NGS schema was at [[python-musicbrainz3]].<br />
However that was never finished and [http://python-musicbrainzngs.readthedocs.org/ python-musicbrainzngs] is a working binding for the NGS schema.<br />
You can use [http://python-discid.readthedocs.org/ python-discid] if you need support for reading [[Disc ID]]s.<br />
<br />
[[Category:WikiDocs Page]] [[Category:Products]] [[Category:Development]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=MusicBrainz_Picard/Plugins&diff=67475MusicBrainz Picard/Plugins2014-10-26T11:56:22Z<p>JonnyJD: add status info and link to new repository</p>
<hr />
<div>{{Status|This page is '''deprecated'''. Starting with Picard 1.3 this repository is preferred and linked: http://picard.musicbrainz.org/plugins/}}<br />
<br />
There are many plugins available for Picard. A number of these are written by the Picard developers, however many are written by users and enthusiasts. If you are having issues with a plugin, please check the [http://forums.musicbrainz.org/viewforum.php?id=2 forums] for answers and ask any questions.<br />
<br />
==Installation==<br />
===Simple method===<br />
This method works for any plugin that consist of a single .py file, unless special installation instructions are given. In that case refer to those and/or to the advanced method below.<br />
<br />
Though this tutorial has only been tested with the Windows version of Picard, procedure should be very similar with other operating systems.<br />
<br />
To install a plugin: <br />
# First of all, download the plugin (.py file) you want to install<br />
# Open Picard<br />
# Click ''Options'' in menu bar<br />
# Choose ''Options...'' to open preferences menu<br />
# Go to ''Plugins'' in the left pane<br />
# Click ''Install plugin...''<br />
# Locate the downloaded .py file and click ''Open''<br />
That's it, your plugin is now ready for use. The file has been copied by Picard to it's plugins folder (using Windows specifically <code><nowiki>%APPDATA%\MusicBrainz\Picard\plugins</nowiki></code>), it's safe to delete the plugin in your download folder.<br />
<br />
===Advanced method===<br />
To install a plugin: <br />
# download .py file(s)<br />
# create a 'plugins' directory (if not existing already) under <br />
## Windows: either <code><nowiki>C:\Program Files\Musicbrainz Picard\plugins</nowiki></code> (for default Picard application folder) or <code><nowiki>%APPDATA%\MusicBrainz\Picard\plugins</nowiki></code> <br />
## *Nix: either Picard application directory/plugins or <code><nowiki>~/.config/MusicBrainz/Picard/plugins</nowiki></code> <br />
## OSX: Follow These Steps:<br />
### Open a Terminal (can be found in: <code><nowiki>Applications/Utilities/Terminal</nowiki></code>)<br />
### type <code><nowiki>mkdir -p $HOME/.config/MusicBrainz/Picard/plugins</nowiki></code> (needs to be done only once)<br />
### type <code><nowiki>open $HOME/.config/MusicBrainz/Picard/plugins</nowiki></code> to display the folder in finder. Now move the plugins there.<br />
## Please note that some plugins need to be placed inside a separate subdirectory specific to the plugin. See the 'Notes' column below to see if this is required for the particular plugin you are installing.<br />
# Move downloaded .py file(s) to 'plugins' directory <br />
# Enable the plugin. Check the box beside the individual plugin in the plugins menu, which can be found at<br />
## Windows/*Nix: Options Menu >> Options... >> Plugins<br />
## OSX: MusicBrainz Picard >> Preferences >> Plugins<br />
<br />
==Creating Plugins==<br />
Please refer to the [[MusicBrainz Picard/Plugins/API|Picard plugin API]] documentation.<br />
<br />
==Plugins==<br />
<br />
{| border="1"<br />
|-<br />
| '''Name''' || '''Description''' || '''Author''' || '''Adds Context Menu Item?''' || '''Download / Compatibility''' || '''License''' || '''Known issues/Notes'''<br />
|-<br />
| ''' Disc Numbers''' || Moves ''(disc X)'' from releases titles into separate tags (''discnumber'' and ''discsubtitle''). || [[User:LukasLalinsky|Lukáš Lalinský]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/discnumber.py 0.9 - 1.0] || (unspecified) || -<br />
|-<br />
| '''Classic Disc Numbers''' || Reverts to pre-NGS (aka "Classic") behaviour by adding ''(disc X: discTitle)'' to release titles into separate tags (''discnumber'' and ''discsubtitle''). || [[User:LukasLalinsky|Lukáš Lalinský]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/classicdiscnumber.py 0.15 - 1.0] || (unspecified) || Broken in 0.15.1 (OK in later releases); workaround version of plugin available on forum [http://forums.musicbrainz.org/viewtopic.php?pid=14731#p14731 here].<br />
|-<br />
| '''Remove Feat. Artists from Titles''' || Removes ''(feat. Artist)'' parts from track titles. || [[User:LukasLalinsky|Lukáš Lalinský]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/featartist.py 0.9 - 1.0] || (unspecified) || - <br />
|-<br />
| '''Move Feat. Artists to Titles''' || Move "feat." from artist names to album and track titles. e.g. "A feat. B - Song" becomes "A - Song (feat. B)." || [[User:LukasLalinsky|Lukáš Lalinský]], [[User:Bitmap|Michael Wiencek]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/featartistsintitles.py 0.9 - 1.0] || (unspecified) || - <br />
|-<br />
| '''Title Case''' || Converts track and release titles to Title Case (capitalizes first character of every word) || Javier Kohen, [[User:LukasLalinsky|Lukáš Lalinský]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/titlecase.py 0.9 - 1.0] || GPLv2 || - <br />
|-<br />
| '''Cover Art Downloader''' || Downloads cover art for optional tag embedding and/or saving as a separate image file (using standard Options >> Cover Art Picard settings) || [[User:OliverCharles|Oliver Charles]], [[User:OutsideContext|Philipp Wolfer]] || No || [http://web.archive.org/web/20090527084503/http://users.musicbrainz.org/~luks/picard-qt/plugins/coverart.py 0.9 - 0.11] <br/> [http://users.musicbrainz.org/~outsidecontext/picard/plugins/coverart.py 0.12 - 0.14] <br/> [https://raw.github.com/musicbrainz/picard/release-1.1/contrib/plugins/coverart.py 0.15 - 1.1] <br /> Integrated in 1.2 || GPLv2 || -<br />
|-<br />
| '''Last.fm Tags''' || Use Last.fm tags as "genre" || [[User:LukasLalinsky|Lukáš Lalinský]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/lastfm/__init__.py 0.15 - 1.0 (file 1)]<br/>[http://users.musicbrainz.org/~luks/picard-plugins/lastfm/ui_options_lastfm.py 0.15 - 1.0 (file 2)] || (unspecified) || ''(copy both files to directory <code><nowiki>plugins/lastfm/</nowiki></code>)'' <br />
|-<br />
| '''Last.fm Plus''' || Use Last.fm tags as "grouping/genre/moods/occasions/countries/originalyear" and more. Modified version of above plugin. || [[User:RifRaf|RifRaf]], voiceinsideyou || No || [http://www.mediafire.com/?qlso9gc8c75aq5a 0.15 - 1.0] || (unspecified) || Unzip into plugins folder. (so you have plugins/lastfmplus/__init__.py etc) [[MusicBrainz Picard/Documentation/Plugins/Lastfmplus|Documentation]], [http://forums.musicbrainz.org/viewtopic.php?id=2949 forum thread]<br />
|-<br />
| '''Add Cluster As A Release''' || Adds right click option to an unmatched cluster to allow adding releases to MB based on tags. || [[User:LukasLalinsky|Lukáš Lalinský]], [[User:Foolip|Philip Jägenstedt]] || Yes || [https://raw.github.com/foolip/addrelease/master/addrelease.py 0.9 - 0.16] <br/> [http://users.musicbrainz.org/~luks/picard-plugins/addrelease.py 1.0] || GPLv2 or later || -<br />
|-<br />
| '''Generate Cuesheet''' || Generates a cuesheet from a release || [[User:LukasLalinsky|Lukáš Lalinský]] || Yes || [http://users.musicbrainz.org/~luks/picard-plugins/cuesheet.py 0.10 - 1.0] || (unspecified) || - <br />
|-<br />
| '''Release Type''' || Appends information to EPs and Singles such as " EP" or " (single)" (customisable, see file for details). Useful for separating releases with singles/EPs of the same name. || [[User:chancey|Elliot Chance]] || No || [https://bitbucket.org/chancey/musicbrainz-picard-release-type 0.9 - 0.10, 0.15] || (unspecified) || -<br />
|-<br />
| '''No Release''' || Do not store specific release information in releases of unknown origin. || [[User:Hrglgrmpf|hrglgrmpf]] || Yes || [http://users.musicbrainz.org/~luks/picard-plugins/no_release.py 0.15 - 1.0] || (unspecified) || See [http://forums.musicbrainz.org/viewtopic.php?id=2918&p=2 forum post] for details.<br />
|-<br />
| '''Search Plugins''' || Launch searches for clusters or releases to external non-MB websites from Picard || [[User:BrianFreud| Brian Schweitzer]] || Yes || [https://github.com/brianfreud/Picard-plugins 0.9 - 1.0] || (unspecified) || Plugins available for:<ul><br />
<li>All Music Guide<br />
<li>Amazon (supports: .ca, .com, .de, .fr, .jp, and .co.uk)<br />
<li>CastAlbums.org (musicals)<br />
<li>DiscogsFilmMusziek.be (film music)<br />
<li>eBay<br />
<li>Game Music Revolution (game soundtracks)<br />
<li>Google<br />
<li>The Lortel Archives (off-Broadway musicals)<br />
<li>SoundtrackCollector.org (soundtracks)<br />
<li>SoundtrackINFO (soundtracks)<br />
</ul><br />
|-<br />
| '''Change Encoding''' || Converts the tags of individual files or clusters between different character encodings. This is often necessary with files that have only ID3v1 tags in a non-Latin encoding. || [[User:foolip|Philip Jägenstedt]] || Yes || [https://raw.github.com/foolip/encoding/master/encoding.py 0.9 - 0.12] || GPLv2 or later || You will probably only need to change the ''target'' encoding. If the encoding you're looking for isn't in the list, you can type it in yourself and it will hopefully work. <br />
|-<br />
| '''Original Release Date''' || Set the original release date of a release by using the release events and "earliest release" advanced relationships. || [[User:OutsideContext|Philipp Wolfer]] || No || [http://users.musicbrainz.org/~outsidecontext/picard/plugins/originalreleasedate.py 0.12] || GPLv2 or later || Not needed for newer versions of Picard which support the %originaldate% tag directly.<br />
|-<br />
| '''Title sort names''' || Guess sortnames for track and album titles and adds as titlesort and albumsort tags. || [[User:Creap|Creap]] || No || [http://github.com/voiceinsideyou/creaps-picard-plugins/raw/master/titlesort.py 0.12 - 1.0] || (unspecified) || Checks language (English, Spanish, German, French, Italian, Swedish) and moves articles ("The", "Das", etc) to the end of the track/album title in the sort tags. <br />
|-<br />
| '''Title version''' || Moves song metadata such as "demo", "live" from titlesort to version tag. || [[User:Creap|Creap]] || No || [http://github.com/voiceinsideyou/creaps-picard-plugins/raw/master/titleversion.py 0.12 - 1.0] || (unspecified) || Searches titles for keywords like ''live'', ''demo'', ''mix'', etc, and moves it from titles to version tags.<br />
|-<br />
| '''$swapprefix function''' || Adds the $swapprefix(text, *prefixes) script function, which moves the specified prefixes to the end of the text. || [[User:OutsideContext|Philipp Wolfer]] || No || [https://raw.githubusercontent.com/musicbrainz/picard/f387fa742dbdbc47819fcf2a307b8b85605d1c54/contrib/plugins/swapprefix.py 0.9 - 1.0] || GPLv2 or later || Included in Picard 1.3. See this [http://forums.musicbrainz.org/viewtopic.php?id=2220 forum post] for details.<br />
|-<br />
| '''Lookup PUID''' || Adds the ability to lookup the PUID on MusicBrainz (useful in case there are several tracks linked with the same PUID) || WPME Hofland || Yes || [http://www.merijnhofland.info/mb/searchpuid.py 0.12] || (unspecified) || Note: Since October 15, 2013, MusicBrainz no longer stores PUIDs, so this plugin is non-functional.<br />
|-<br />
| '''TSO2''' || Set TSO2 as well as TXXX:ALBUMARTISTSORTORDER in ID3 tags, so album artist sort order works in iTunes and other players || Andrew Barnert || No || [http://picardplugins.googlecode.com/files/tso2-0.1.py 0.12] || (unspecified) || See this [http://forums.musicbrainz.org/viewtopic.php?id=2359 forum post] for details. Note: Included as standard functionality since Picard 0.15.1.<br />
|-<br />
| '''Add to iTunes''' || Mac OS X only! Add an album/track/etc. to iTunes. || Andrew Barnert || Yes || [http://picardplugins.googlecode.com/files/addtoitunes-0.1.py 0.12] || (unspecified) || See this [http://forums.musicbrainz.org/viewtopic.php?id=2361 forum post] for details.<br />
|-<br />
| '''The Sorting Plugin''' || Allows sorting of clusters and releases (i.e. both panes) through the right click "Plugins" menu. (can sort either Clusters or Releases by Artist or Title, and within a cluster by artist or title) || Aaron Lambers || Yes || [http://www.mediafire.com/?16ymlxoik6akmzk 0.12] || (unspecified) || See this [http://forums.musicbrainz.org/viewtopic.php?id=2489 forum post] for details. Note: Included as standard functionality since Picard 0.14.<br />
|-<br />
| '''Discnumber and Bonus disc''' || Combination of the discnumber and bonus disc plugin || WPME Hofland || No || [http://www.merijnhofland.info/mb/bonusdiscnumber.py 0.12] || (unspecified) || <br />
|-<br />
| '''Convert Typographic Punctuation''' || Replace hard-to-type-into-search-boxes fancy punctuation with Latin-1 equivalents || anonymous || No || [http://picardplugins.googlecode.com/files/converttypographicpunctuation-0.1.3.py 0.9 - 0.12] || [http://sam.zoy.org/wtfpl/ WTFPL] || See [http://forums.musicbrainz.org/viewtopic.php?id=2495 forum] and [http://bugs.musicbrainz.org/ticket/5834 bug ticket] for details.<br />
|-<br />
| '''Foobar2000 ReplayGain''' || Analyse your albums using the foobar2000 ReplayGain scanner. || [[User:Hrglgrmpf|hrglgrmpf]] || Yes || [http://github.com/weisslj/picardplugins/raw/master/f2k_rgscan.py 0.10 - 1.0] || (unspecified) || See [http://forums.musicbrainz.org/viewtopic.php?id=2564 forum post] for details.<br />
|-<br />
| '''MetaFlac ReplayGain''' || Analyse your albums using the MetaFlac ReplayGain scanner. || Olivier Kaloudoff || Yes || <!--http://kalou.net/unix/picard/metaflac_rgscan.py//-->[http://kraehen.org/mb/metaflac_rgscan.py 0.10 - 1.0] || (unspecified) || Tested only on Mac OSX / Feedback to kalou at kalou dot net<br />
|-<br />
|-<br />
| '''$eq2, $ne2 functions''' || Each plugin adds a new function to taggerscript, to allow comparison of a variable against more than one string.<br />
Example: set %engineer% to "test" if the artist is equal to "foo", "bar", or "baz":<br />
$if($eq2(%artist%,foo,bar,baz),$set(engineer,test))<br />
|| [[User:BrianFreud| Brian Schweitzer]] || No || [https://github.com/brianfreud/Picard-plugins 0.12 - 1.0] || (unspecified) || See [http://forums.musicbrainz.org/viewtopic.php?id=2631 forum post] for details.<br />
|-<br />
| '''$p function''' || Adds an $p(string, unofficial) function to taggerscript. This works like the inverse of a \p{foo} regex using Unicode properties. In other words, it tells you what script a character belongs to. <br />
Usage:<br />
$p(%something%)<br />
$p(%something%, True)<br />
The second argument is optional. By default, it is set to False. When set to True, unofficial Unicode scripts (i.e. ConScript, etc.) are also checked.<br />
|| [[User:BrianFreud| Brian Schweitzer]] || No ||[https://github.com/brianfreud/Picard-plugins 0.12 - 1.0] || (unspecified) || See [http://forums.musicbrainz.org/viewtopic.php?id=2631 forum post] for details.<br />
|-<br />
| '''Remove Perfect albums''' || Remove "Perfect" matches from album list i.e. all tracks matched and tags saved. || ichneumon || Yes || [https://github.com/voiceinsideyou/picard/raw/plugins/contrib/plugins/removeperfectalbums.py 0.15 - 1.0] || (unspecified) || See [http://forums.musicbrainz.org/viewtopic.php?id=2555 forum post] for details.<br />
|-<br />
| '''Autosave complete albums''' || Save albums with 4+ tracks and 90%+ confidence on all tracks, then remove them from the album list. Useful when importing a big, relatively well-tagged collection. || encukou || Yes || [https://raw.github.com/encukou/picard-plugins/master/autosave.py 1.3] <br /> [https://raw.githubusercontent.com/encukou/picard-plugins/76473d5c5b5f30958f8c1dd41db1e4d998f32494/autosave.py 0.15 - 1.2]|| (unspecified) || See [http://forums.musicbrainz.org/viewtopic.php?pid=17270 forum post] for details.<br />
|-<br />
| '''Sidecars''' || Stores and retrieves metadata in "sidecar" files so that changes can be staged. || [[User:Tony70|Tony Flaks]] || Yes || [http://sites.google.com/site/tonyflaks/sidecar.py 0.14] || (unspecified) || See [[User:Tony70/SidecarPlugin|wiki page]] for details.<br />
|-<br />
| '''View Variables''' || Allows you to view all the script variables associated with a track or file in a dialog box. || Sophist || Yes || [https://github.com/Sophist-UK/Picard-Plugins/raw/master/viewvariables.zip 1.0] || GPLv2 or later || See [http://forums.musicbrainz.org/viewtopic.php?id=4886 forum post] for details and support.<br />
|-<br />
| '''Abbreviate artist-sort''' || Abbreviates artist forenames in the albumartistsort and artistsort tags e.g. "Vivaldi, Antonio" becomes "Vivaldi, A.". This is likely to be of interest for classical albums where the albumartistsort string can be very long. || Sophist || Yes || [https://github.com/Sophist-UK/Picard-Plugins/raw/master/abbreviate_artistsort.py 1.0] || GPLv2 or later || See [http://forums.musicbrainz.org/viewtopic.php?id=4893 forum post] for details and support.<br />
|-<br />
| '''Copy to Comment''' || Some music players are unable to display the standard tags produced by Picard for Composer, Performers etc. This plugin copies this data to the default Comment so that these players can (hopefully) display this information. || d2freak and Sophist || Yes || [https://github.com/Sophist-UK/Picard-Plugins/raw/master/copy_to_comment.py 1.0] || GPLv2 or later || See [http://forums.musicbrainz.org/viewtopic.php?id=4895 forum post] for details and support.<br />
|-<br />
| '''Album Artist Website''' || Unfortunately, MusicBrainz does not supply the Artists Official Homepage url when Picard requests details for an album, and so the 'website variable and id3 WOAR tag cannot be populated. This plugin makes an additional request to MusicBrainz to get this information and loads it into the 'website' variable. || Sophist || Yes || [https://github.com/Sophist-UK/Picard-Plugins/raw/master/albumartist_website.py 1.0] || GPLv2 or later || See [http://forums.musicbrainz.org/viewtopic.php?id=4906 forum post] for details and support.<br />
|-<br />
| '''MusicBee Compatibility''' || This plugin sets some tags to maximise the compatibility of mp3 files tagged by Picard with the MusicBee player. || Volker Zell (and Sophist) || Yes || [https://github.com/Sophist-UK/Picard-Plugins/raw/master/musicbee_compatibility.py 1.0] || GPLv2 or later || See [http://forums.musicbrainz.org/viewtopic.php?id=4903 forum post] for details and support.<br />
|-<br />
| '''Standardise Performers''' || This plugin splits multi-instrument performer tags into single instruments and combines names so that e.g. "Performer [Mouthorgan and Guitar]: Bob Dylan, Performer [Drums and Guitar]: Phil Collins" become "Performer [Drums]: Phil Collins, Performer [Guitar]: Bob Dylan; Phil Collins, Performer [Mouthorgan]: Bob Dylan". || Sophist || Yes || [https://github.com/Sophist-UK/Picard-Plugins/raw/master/standardise_performers.py 1.0] || GPLv2 or later || See [http://forums.musicbrainz.org/viewtopic.php?id=4941 forum post] for details and support.<br />
|-<br />
| '''zh_cn_convert''' || This plugin help convert with Simple Chinese and Traditional Chinese || alswl || No || 0.9 - 0.12 [https://github.com/alswl/musicbrainz_picard_zh_cn_convert_plugin/raw/master/zh_cn_convert.py] [https://github.com/alswl/musicbrainz_picard_zh_cn_convert_plugin/raw/master/zh_wiki.py] [https://github.com/alswl/musicbrainz_picard_zh_cn_convert_plugin/raw/master/langconv.py] || GPLv2 or later || -<br />
|-<br />
| '''padded''' || Provides padded disc- and tracknumbers that have the same length across an album. || [[User:Mineo|Wieland Hoffmann]] || No || [https://raw.githubusercontent.com/mineo/mbstuff/master/picard/plugins/padded.py 0.15-1.3]|| (unspecified) || -<br />
|-<br />
| '''keep''' || Provides a $keep function to build a whitelist of tags you want to keep. || [[User:Mineo|Wieland Hoffmann]] || No || [https://raw.githubusercontent.com/mineo/mbstuff/master/picard/plugins/keep.py 0.15-1.3]|| (unspecified) || -<br />
|}<br />
<br />
=== Context Menu Items ===<br />
Note that not all plugins will add options to the "Plugins" section of the right click context menu you get on tracks, files and clusters. Plugins in the above list that do not add a context menu item should work automatically on all new metadata that is loaded into the right-hand pane, once they are enabled in the options.<br />
<br />
[[Category:MusicBrainz Picard]][[Category:WikiDocs Page]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=MusicBrainz_Picard&diff=67056MusicBrainz Picard2014-08-09T18:47:32Z<p>JonnyJD: /* Linux Distributions */ better AUR link and tell</p>
<hr />
<div><small>[[Products]] > MusicBrainz Picard </small> <br />
<br />
{| class="wikitable" style="float: right; margin: 0 0 10px 10px"<br />
| [[Image:picard_demo_500.png]]<br />
|}<br />
<br />
'''MusicBrainz Picard''' is a cross-platform (Linux/Mac OS X/Windows) application written in Python and is the official MusicBrainz tagger.<br />
<br />
Picard supports the majority of audio file formats, is capable of using audio fingerprints ([[AcoustID]]s), performing CD lookups and [[Disc ID|disc ID]] submissions, and it has excellent Unicode support. Additionally, there are several [[Picard Plugins|plugins]] available that extend Picard's features.<br />
<br />
When tagging files, Picard uses an album-oriented approach. This approach allows it to utilize the MusicBrainz data as effectively as possible and correctly tag your music. For more information, see the [[How To Tag Files With Picard|illustrated quick start guide to tagging]].<br />
<br />
Picard is named after Captain Jean-Luc Picard from the TV series ''Star Trek: The Next Generation''.<br />
<br />
== Download ==<br />
<br />
<br />
<div style="background-color:#FFFAF5; border: 1px solid #FFDAA4; padding:10px 20px; width: 360px; margin: 20px 20px 20px 0"><br />
'''MusicBrainz Picard for Windows <br /><br />
Download: [http://ftp.musicbrainz.org/pub/musicbrainz/picard/picard-setup-1.2.exe picard-setup-1.2.exe]<br /><br />
EU mirror: [http://mirrors.dotsrc.org/MusicBrainz/picard/picard-setup-1.2.exe picard-setup-1.2.exe]<br /><br />
Size: 8.4M installer<br/><br />
Version: 1.2 <br /><br />
MD5: <small>87662658e404e666f8ee506e53771741</small><br />
</div><br />
<br />
<div style="background-color:#FFFAF5; border: 1px solid #FFDAA4; padding: 10px 20px; width: 360px; margin: 0 20px 20px 0;"><br />
'''MusicBrainz Picard for Mac OS X 10.7+ (x86_64)<br /><br />
Download: [ftp://ftp.musicbrainz.org/pub/musicbrainz/picard/MusicBrainz-Picard-1.2-x86_64.dmg MusicBrainz-Picard-1.2-x86_64.dmg]<br /><br />
EU mirror: [http://mirrors.dotsrc.org/MusicBrainz/picard/MusicBrainz-Picard-1.2-x86_64.dmg MusicBrainz-Picard-1.2-x86_64.dmg]<br /><br />
Size: 14M <br /><br />
Version: 1.2 <br /><br />
MD5: <small>605a40e9c168a00c9cb000b913afade3</small><br />
</div><br />
<br />
<div style="background-color:#FFFAF5; border: 1px solid #FFDAA4; padding: 10px 20px; width: 360px; margin: 0 20px 20px 0;"><br />
'''MusicBrainz Picard for Mac OS X 10.4–10.6 (i386)<br /><br />
Download: [ftp://ftp.musicbrainz.org/pub/musicbrainz/picard/MusicBrainz-Picard-1.2.dmg MusicBrainz-Picard-1.2.dmg]<br /><br />
EU mirror: [http://mirrors.dotsrc.org/MusicBrainz/picard/MusicBrainz-Picard-1.2.dmg MusicBrainz-Picard-1.2.dmg]<br /><br />
Size: 13M <b>intel only binary</b> <br /><br />
Version: 1.2 <br /><br />
MD5: <small>db8c5c9f1221b11904305d3e280421bb</small><br />
</div><br />
<br />
<div style="background-color:#FFFAF5; border: 1px solid #FFDAA4; padding: 10px 20px; width: 360px; margin-bottom: 20px;"><br />
'''MusicBrainz Picard source code <br /><br />
Download: [http://ftp.musicbrainz.org/pub/musicbrainz/picard/picard-1.2.tar.gz picard-1.2.tar.gz]<br /><br />
EU mirror: [http://mirrors.dotsrc.org/MusicBrainz/picard/picard-1.2.tar.gz picard-1.2.tar.gz]<br /><br />
Size: 1.7M tarball <br /><br />
Version: 1.2<br /><br />
MD5: <small>d1086687b7f7b0d359a731b1a25e7b66</small><br />
</div><br />
<br />
A list of changes for version 1.2 can be found in the [http://blog.musicbrainz.org/?p=1856 musicbrainz blog].<br />
<br />
For Windows users: If you get an error about being unable to run the program, install the [http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en Microsoft Visual C++ 2008 Redistributable Package (x86)].<br />
<br />
For earlier releases of Picard, [http://ftp.musicbrainz.org/pub/musicbrainz/picard/?C=M;O=D browse the FTP server].<br />
<br />
== Linux Distributions ==<br />
<br />
Picard is also available in many distributions' software repositories. (Using Fedora? [[Picard_FAQ#I_am_using_Fedora.2C_why_doesn.27t_acoustic_fingerprinting_work.3F|See the FAQ]].)<br />
<br />
* Ubuntu: [https://launchpad.net/~musicbrainz-developers/+archive/stable MusicBrainz stable PPA] &middot; [https://launchpad.net/~musicbrainz-developers/+archive/daily MusicBrainz daily PPA]<br />
* Arch Linux: [https://www.archlinux.org/packages/community/x86_64/picard/ community] &middot; [https://aur.archlinux.org/packages/picard-git/ AUR]<br />
* Gentoo: emerge [http://packages.gentoo.org/package/media-sound/picard media-sound/picard]<br />
<br />
== Documentation ==<br />
<br />
'''Getting started''':<br />
* [[How To Tag Files With Picard|Illustrated quick start guide to tagging]]<br />
* [[/Documentation|Picard documentation]]<br />
* [[/FAQ|Picard FAQ]]<br />
* [[MusicBrainz Picard/Troubleshooting|Picard troubleshooting]]<br />
<br />
'''Customization''':<br />
* [[/Plugins|Picard plugins]]<br />
* [[/Plugins/API|Picard plugins API]]<br />
* [[/Documentation/Scripting|Picard scripting]]<br />
* [[/Tags|Picard tags]]<br />
<br />
== Need further help? ==<br />
<br />
If you need help or have any questions about using Picard, you can turn to the [[Users Mailing List|users mailing list]] or the [[MusicBrainz Forum|forum]]. If you think you have found a bug, please see the [[MusicBrainz Picard/Troubleshooting|troubleshooting]] page. In other cases you can [[Contact Us|contact us]].<br />
<br />
== Development ==<br />
<br />
The source code of Picard is maintained in Git and you can get it with all its history using: <br />
<br />
git clone git://github.com/musicbrainz/picard.git<br />
<br />
or you can fork or clone the mirrored [https://github.com/musicbrainz/picard repo from GitHub] in the normal GitHub way. Pull requests and discussion on GitHub is generally preferred and all such requests will be considered.<br />
<br />
If you are interested in providing development assistance, contact us by either posting on the [[Developers Mailing List|developers mailing list]] or joining the #musicbrainz-devel IRC channel on irc.freenode.net.<br />
<br />
If you want to install Picard from source on Windows, there is [[How to Build Picard for Windows]].<br />
Lukáš Lalinský provides [http://build.oxygene.sk/job/package-picard-win-daily/ daily Picard builds for Windows], if you want to test the latest development version of Picard on Windows.<br />
<br />
For Mac there is [[User:Bitmap/Building Picard on OS X|Bitmap/Building Picard on OS X]] and also [http://build.oxygene.sk/job/package-picard-osx-daily/ daily builds for OS X].<br />
<br />
== License ==<br />
<br />
Picard is licensed under the [http://www.gnu.org/copyleft/gpl.html GPL 2.0 or later].<br />
<br />
__NOTOC__<br />
[[Category:MusicBrainz Picard]] [[Category:Products]] [[Category:Download]] [[Category:WikiDocs Page]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=External_Resources&diff=66751External Resources2014-06-03T08:39:47Z<p>JonnyJD: /* User scripts / GreaseMonkey / User javascripts / UserJS */ add highlighting version of chatlog script</p>
<hr />
<div>''Note: this page needs more flesh and to be linked to.'' <br />
<br />
This page tries to list all external (to [[MusicBrainz]]) programs, scripts, reports, etc. that deal with [[MusicBrainz]]. <br />
<br />
==Possible incorrect data==<br />
<br />
* [http://faux.uwcs.co.uk/mprep.html Releases in a set with differing events, language, script, etc.]<br />
<br />
==Making editing easier==<br />
<br />
* [http://davesmey.com/programs/autoit/emutomb.htm eMusic-to-Musicbrainz import tool] <br />
* [http://www.greycat.ru/musicbrainz/ Advanced MusicBrainz interface]<br />
<br />
==Access MusicBrainz using external APIs==<br />
=== Web Service Version 2 (current) ===<br />
* [http://python-musicbrainzngs.readthedocs.org/ python-musicbrainzngs]<br />
* [https://github.com/dwo/musicbrainz-ruby musicbrainz-ruby]<br />
* [http://code.google.com/p/musicbrainzws2-java/ musicbrainzws2-java]<br />
<br />
=== Web Service Version 1 (deprecated) ===<br />
* [http://rbrainz.rubyforge.org/ RBrainz - Ruby MusicBrainz library] <br />
* [https://github.com/olds/phpbrainz phpBrainz]<br />
<br />
== User scripts / GreaseMonkey / User javascripts / UserJS ==<br />
<br />
User scripts are javascripts that a user installs in one’s browser and that changes the behaviour of visited website (MusicBrainz).<br />
Those scripts will add some functionalities to MusicBrainz or let users do many repetitive things in only one click, etc.<br />
<br />
Almost all those user scripts are stored at userscripts.org under the ''musicbrainz'' tag.<br />
Unfortunately userscripts.org is dying. Alternatives are listed at the [http://wiki.greasespot.net/User_Script_Hosting GreaseSpot wiki].<br />
Some scripts can still be accessed here: [http://userscripts.org:8080/scripts/search?q=musicbrainz&submit=Search userscripts.org:8080]. If you are logged in, then the [http://userscripts.org:8080/tags/musicbrainz musicbrainz tag] also works.<br />
<br />
There is a [https://openuserjs.org/group/musicbrainz musicbrainz group] at openuserJS.org and [https://greasyfork.org/scripts/by-site/musicbrainz.org scripts for musicbrainz.org] at greasyfork.org.<br />
<br />
Other known places with userscripts:<br />
* [https://github.com/murdos/musicbrainz-userscripts Murdos' import scripts] (Bandcamp, Discogs, Encyclopedisque)<br />
* [https://github.com/dufferzafar/Userscripts Dufferzafar's import scripts] (Amazon, TSeries)<br />
* [http://rassie.org/mb_chatlogs.user.js Rassie's Chatlog improvements] and an updated version [https://gist.github.com/JonnyJD/facc9fc144d9b7e85532/revisions including highlighting]<br />
* [https://github.com/jesus2099/konami-command jesus2099 scripts] ([http://userscripts.org:8080/users/31010/scripts older scripts])<br />
<br />
==Valuable online databases==<br />
<br />
See [[Other Databases]].<br />
<br />
{| border="1"<br />
|-<br />
| '''URI''' || '''Description''' || '''Comments''' (on reliability etc...) <br />
|-<br />
| [http://www.discogs.com/ http://www.discogs.com/] || [[WikiPedia:Discogs|Discogs]] || <br />
|-<br />
| [http://allmusic.com/ http://allmusic.com/] || [[WikiPedia:Allmusic|Allmusic]] || <br />
|-<br />
| [http://en.wikipedia.org/ http://en.wikipedia.org/] || [[WikiPedia:Wikipedia|Wikipedia]] || <br />
|-<br />
| [http://amazon.com http://amazon.com] || || <br />
|-<br />
| [http://amazon.co.uk http://amazon.co.uk] || || <br />
|-<br />
| [http://amazon.fr http://amazon.fr] || || Releases dates often wrong <br />
|-<br />
| [http://amazon.de http://amazon.de] || || Often omits to mark imports as "[Import]" <br />
|-<br />
| [http://www.metal-archives.com http://www.metal-archives.com] || [[WikiPedia:Encyclopaedia_Metallum|Encyclopaedia_Metallum]] || <br />
|-<br />
| [http://www.encyclopedisque.fr http://www.encyclopedisque.fr] || || For French vinyls <br />
|-<br />
| [http://www.lpdiscography.com/ http://www.lpdiscography.com/] || || Has dates, labels, and catalog numbers <br />
|}<br />
<br />
About amazon's [Import] label not trustworthy, here is the smoke-proof to check whether the IMPORT is bogus or not on .fr Switch the tld to .de: [http://www.amazon.de/gp/product/B00004UH7R http://www.amazon.de/gp/product/B00004UH7R] Check what they have as a label, in this case: Label: France (Megaphon Importservice) => it comes from france, and the [Import] is on .fr is bogus.<br />
<br />
==Other==<br />
<br />
* [http://www.mbmysql.com/ MusicBrainzMySQL] <br />
* [http://musicbrainz.homeip.net/ Development server] <br />
* [http://test.musicbrainz.org/ Test server] <br />
* [[Virtual MusicBrainz Server|VirtualMusicBrainzServer]] <br />
* [http://www.jthink.net/jaikoz/ Jaikoz Audio Tagger] <br />
* DQSD (Dave's Quick Search Taskbar Toolbar Deskbar): [http://www.dqsd.net/ http://www.dqsd.net/] <br />
* There are many ISRC submit tools in [[ISRC#Resources]]<br />
<br />
[[Category:To Be Reviewed]] [[Category:Editing]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=External_Resources&diff=66750External Resources2014-06-03T08:27:51Z<p>JonnyJD: /* User scripts / GreaseMonkey / User javascripts / UserJS */ add dufferzafar import scripts</p>
<hr />
<div>''Note: this page needs more flesh and to be linked to.'' <br />
<br />
This page tries to list all external (to [[MusicBrainz]]) programs, scripts, reports, etc. that deal with [[MusicBrainz]]. <br />
<br />
==Possible incorrect data==<br />
<br />
* [http://faux.uwcs.co.uk/mprep.html Releases in a set with differing events, language, script, etc.]<br />
<br />
==Making editing easier==<br />
<br />
* [http://davesmey.com/programs/autoit/emutomb.htm eMusic-to-Musicbrainz import tool] <br />
* [http://www.greycat.ru/musicbrainz/ Advanced MusicBrainz interface]<br />
<br />
==Access MusicBrainz using external APIs==<br />
=== Web Service Version 2 (current) ===<br />
* [http://python-musicbrainzngs.readthedocs.org/ python-musicbrainzngs]<br />
* [https://github.com/dwo/musicbrainz-ruby musicbrainz-ruby]<br />
* [http://code.google.com/p/musicbrainzws2-java/ musicbrainzws2-java]<br />
<br />
=== Web Service Version 1 (deprecated) ===<br />
* [http://rbrainz.rubyforge.org/ RBrainz - Ruby MusicBrainz library] <br />
* [https://github.com/olds/phpbrainz phpBrainz]<br />
<br />
== User scripts / GreaseMonkey / User javascripts / UserJS ==<br />
<br />
User scripts are javascripts that a user installs in one’s browser and that changes the behaviour of visited website (MusicBrainz).<br />
Those scripts will add some functionalities to MusicBrainz or let users do many repetitive things in only one click, etc.<br />
<br />
Almost all those user scripts are stored at userscripts.org under the ''musicbrainz'' tag.<br />
Unfortunately userscripts.org is dying. Alternatives are listed at the [http://wiki.greasespot.net/User_Script_Hosting GreaseSpot wiki].<br />
Some scripts can still be accessed here: [http://userscripts.org:8080/scripts/search?q=musicbrainz&submit=Search userscripts.org:8080]. If you are logged in, then the [http://userscripts.org:8080/tags/musicbrainz musicbrainz tag] also works.<br />
<br />
There is a [https://openuserjs.org/group/musicbrainz musicbrainz group] at openuserJS.org and [https://greasyfork.org/scripts/by-site/musicbrainz.org scripts for musicbrainz.org] at greasyfork.org.<br />
<br />
Other known places with userscripts:<br />
* [https://github.com/murdos/musicbrainz-userscripts Murdos' import scripts] (Bandcamp, Discogs, Encyclopedisque)<br />
* [https://github.com/dufferzafar/Userscripts Dufferzafar's import scripts] (Amazon, TSeries)<br />
* [http://rassie.org/mb_chatlogs.user.js Rassie's Chatlog improvements]<br />
* [https://github.com/jesus2099/konami-command jesus2099 scripts] ([http://userscripts.org:8080/users/31010/scripts older scripts])<br />
<br />
==Valuable online databases==<br />
<br />
See [[Other Databases]].<br />
<br />
{| border="1"<br />
|-<br />
| '''URI''' || '''Description''' || '''Comments''' (on reliability etc...) <br />
|-<br />
| [http://www.discogs.com/ http://www.discogs.com/] || [[WikiPedia:Discogs|Discogs]] || <br />
|-<br />
| [http://allmusic.com/ http://allmusic.com/] || [[WikiPedia:Allmusic|Allmusic]] || <br />
|-<br />
| [http://en.wikipedia.org/ http://en.wikipedia.org/] || [[WikiPedia:Wikipedia|Wikipedia]] || <br />
|-<br />
| [http://amazon.com http://amazon.com] || || <br />
|-<br />
| [http://amazon.co.uk http://amazon.co.uk] || || <br />
|-<br />
| [http://amazon.fr http://amazon.fr] || || Releases dates often wrong <br />
|-<br />
| [http://amazon.de http://amazon.de] || || Often omits to mark imports as "[Import]" <br />
|-<br />
| [http://www.metal-archives.com http://www.metal-archives.com] || [[WikiPedia:Encyclopaedia_Metallum|Encyclopaedia_Metallum]] || <br />
|-<br />
| [http://www.encyclopedisque.fr http://www.encyclopedisque.fr] || || For French vinyls <br />
|-<br />
| [http://www.lpdiscography.com/ http://www.lpdiscography.com/] || || Has dates, labels, and catalog numbers <br />
|}<br />
<br />
About amazon's [Import] label not trustworthy, here is the smoke-proof to check whether the IMPORT is bogus or not on .fr Switch the tld to .de: [http://www.amazon.de/gp/product/B00004UH7R http://www.amazon.de/gp/product/B00004UH7R] Check what they have as a label, in this case: Label: France (Megaphon Importservice) => it comes from france, and the [Import] is on .fr is bogus.<br />
<br />
==Other==<br />
<br />
* [http://www.mbmysql.com/ MusicBrainzMySQL] <br />
* [http://musicbrainz.homeip.net/ Development server] <br />
* [http://test.musicbrainz.org/ Test server] <br />
* [[Virtual MusicBrainz Server|VirtualMusicBrainzServer]] <br />
* [http://www.jthink.net/jaikoz/ Jaikoz Audio Tagger] <br />
* DQSD (Dave's Quick Search Taskbar Toolbar Deskbar): [http://www.dqsd.net/ http://www.dqsd.net/] <br />
* There are many ISRC submit tools in [[ISRC#Resources]]<br />
<br />
[[Category:To Be Reviewed]] [[Category:Editing]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=MusicBrainz_API/Examples&diff=66723MusicBrainz API/Examples2014-05-24T22:20:27Z<p>JonnyJD: mention XML web service</p>
<hr />
<div>The main web service is the [[Development/XML Web Service/Version_2|XML Web Service]]. This page is about the (beta) '''JSON''' format of that web service.<br />
<br />
This document describes the proposed JSON output, using example queries and the responses I am proposing. To get a JSON response you can either set the Accept header to "application/json" or add fmt=json to the query string (if both are set, fmt= takes precedence).<br />
<br />
Some notable differences compared to the JSON response currently used internally by the search server:<br />
# all "-list" elements are replaced with javascript arrays, using an english plural as the key. So { "tag-list": { "tag": [ ... ] } } becomes { "tags": [ ... ] }.<br />
# the "name-credit" key inside an "artist-credit" is removed.<br />
<br />
Some of the responses below have some fields omitted to keep the examples shorter, in the actual webservice obviously this data will be included.<br />
<br />
==Beta==<br />
<br />
WARNING: This web service is available on the production server (musicbrainz.org/ws/2/), but should be not be considered stable. There are still some [http://tickets.musicbrainz.org/browse/MBS-3072 known bugs], and we may decide to make some small changes to the API as documented below. If you have any feedback comment on the [http://tickets.musicbrainz.org/browse/MBS-3072 ticket] or contact warp through e-mail or irc. When we mark the API as stable we will be very reluctant to make any changes, so now is the time if you have any feedback or suggestions.<br />
<br />
==Lookup requests==<br />
===Artist===<br />
<br />
Request: http://musicbrainz.org/ws/2/artist/5b11f4ce-a62d-471e-81fc-a69a8278c7da?inc=aliases&fmt=json<br /><br />
Response:<br />
<br />
<code><br />
{<br />
"id": "5b11f4ce-a62d-471e-81fc-a69a8278c7da",<br />
"name": "Nirvana",<br />
"sort-name": "Nirvana"<br />
"type": "Group",<br />
"country": "US",<br />
"disambiguation": "90s US grunge band",<br />
"life-span": {<br />
"ended": true,<br />
"begin": "1988-02",<br />
"end": "1994-04-05"<br />
},<br />
"aliases": [ { "name": "Nirvana US", "sort-name": "Nirvana US" } ]]<br />
}<br />
</code><br />
<br />
Request: http://musicbrainz.org/ws/2/artist/05cbaf37-6dc2-4f71-a0ce-d633447d90c3?inc=aliases+tags+ratings&fmt=json<br /><br />
Response:<br />
<br />
<code><br />
{<br />
"id": "05cbaf37-6dc2-4f71-a0ce-d633447d90c3",<br />
"name": "東方神起",<br />
"sort-name": "TVXQ",<br />
"country": null,<br />
"disambiguation": null,<br />
"type": "Group",<br />
"life-span": { "ended": false, "begin": "2003" },<br />
"aliases": [<br />
{ "name": "DBSK", "sort-name": "DBSK" },<br />
{ "name": "Tohoshinki", "sort-name": "Tohoshinki", "locale": "ja", "primary": false },<br />
{ "name": "동방신기", "sort-name": "동방신기", "locale": "ko_KR", "primary": true }<br />
],<br />
"tags": [<br />
{ "count": 1, "name": "kpop" },<br />
{ "count": 1, "name": "jpop" },<br />
{ "count": 1, "name": "cpop" }<br />
],<br />
"rating": { "votes-count": 8, "value": 3.9 }<br />
}<br />
</code><br />
<br />
===Label===<br />
<br />
Request: http://musicbrainz.org/ws/2/label/46f0f4cd-8aab-4b33-b698-f459faf64190?inc=aliases&fmt=json<br /><br />
Response:<br />
<br />
<code><br />
{<br />
"id": "46f0f4cd-8aab-4b33-b698-f459faf64190",<br />
"name": "Warp Records",<br />
"sort-name": "Warp Records",<br />
"label-code": 2070,<br />
"type": "Original Production",<br />
"country": "GB",<br />
"life-span": { "ended": false, "begin": "1989" },<br />
"tags": [ { "count": 2, "name": "electronic" } ],<br />
"disambiguation": null,<br />
}<br />
</code><br />
<br />
Request: http://musicbrainz.org/ws/2/label/f49e877d-df8d-4a28-bbe1-689d12fc7d91?inc=aliases&fmt=json<br /><br />
Response:<br />
<br />
<code><br />
{<br />
"id": "f49e877d-df8d-4a28-bbe1-689d12fc7d91"<br />
"name": "AVEX ENTERTAINMENT INC.",<br />
"sort-name": "AVEX ENTERTAINMENT INC.",<br />
"type": "Production",<br />
"country": "JP",<br />
"disambiguation": "avex's Japanese music production",<br />
"life-span": { "ended": false },<br />
"aliases": [<br />
{ "name": "AVEX MARKETING", "sort-name": "AVEX MARKETING" },<br />
{ "name": "avex marketing", "sort-name": "avex marketing" },<br />
{<br />
"name": "エイベックス・エンタテインメント",<br />
"sort-name": "エイベックス・エンタテインメント"<br />
}<br />
]<br />
}<br />
</code><br />
<br />
===Recording===<br />
<br />
Request: http://musicbrainz.org/ws/2/recording/fcbcdc39-8851-4efc-a02a-ab0e13be224f?inc=artist-credits+isrcs+releases&fmt=json<br /><br />
Response:<br />
<br />
<code><br />
{<br />
"id": "fcbcdc39-8851-4efc-a02a-ab0e13be224f",<br />
"title": "LAST ANGEL",<br />
"disambiguation": "video",<br />
"artist-credit": [<br />
{<br />
"name": "倖田來未",<br />
"joinphrase": " feat. ",<br />
"artist": {<br />
"id": "455641ea-fff4-49f6-8fb4-49f961d8f1ac",<br />
"name": "倖田來未",<br />
"sort-name": "Koda, Kumi",<br />
"disambiguation": null<br />
}<br />
},<br />
{<br />
"name": "東方神起",<br />
"artist": {<br />
"id": "05cbaf37-6dc2-4f71-a0ce-d633447d90c3",<br />
"name": "東方神起",<br />
"sort-name": "TVXQ",<br />
"disambiguation": null<br />
},<br />
"joinphrase": ""<br />
}<br />
],<br />
"isrcs": [ "JPB600760301" ],<br />
"length": 228106,<br />
"releases": [<br />
{<br />
"id": "abcd76db-7d5f-3eb7-b386-051c97bfe2e4",<br />
"title": "Kingdom",<br />
/* some properties omitted to keep this example shorter. */<br />
}<br />
]<br />
}<br />
</code><br />
<br />
===Release===<br />
<br />
Request: http://musicbrainz.org/ws/2/release/59211ea4-ffd2-4ad9-9a4e-941d3148024a?inc=artist-credits+labels+discids+recordings&fmt=json<br/><br />
Response:<br />
<br />
<code><br />
{<br />
"id": "59211ea4-ffd2-4ad9-9a4e-941d3148024a",<br />
"title": "æ³o & h³æ",<br />
"date": "2003-12-04",<br />
"text-representation": { "language": "eng", "script": "Latn" },<br />
"country": "GB",<br />
"status": "Official",<br />
"quality": "normal",<br />
"release-group": {<br />
"id": "bb5622c1-65b2-3bc4-83e6-0dcaa56abaf2",<br />
"primary-type": "EP"<br />
},<br />
"artist-credit": [<br />
{<br />
"joinphrase": " & ",<br />
"name": "Autechre",<br />
"artist": {<br />
"id": "410c9baf-5469-44f6-9852-826524b80c61",<br />
"name": "Autechre",<br />
"sort-name": "Autechre",<br />
"disambiguation": null<br />
}<br />
},<br />
{<br />
"name": "The Hafler Trio",<br />
"joinphrase": "",<br />
"artist": {<br />
"id": "146c01d0-d3a2-44c3-acb5-9208bce75e14",<br />
"sort-name": "Hafler Trio, The",<br />
"name": "The Hafler Trio",<br />
"disambiguation": null<br />
}<br />
}<br />
],<br />
"label-info": [<br />
{<br />
"label": {<br />
"id": "a0759efa-f583-49ea-9a8d-d5bbce55541c",<br />
"name": "Phonometrography",<br />
"sort-name": "Phonometrography",<br />
"label-code": null,<br />
"disambiguation": null<br />
},<br />
"catalog-number": "pgram002"<br />
}<br />
],<br />
"media": [<br />
{<br />
"track-offset": 0,<br />
"track-count": 1,<br />
"title": "æ³o",<br />
"format": "CD",<br />
"discids": [<br />
{ "id": "nN2g3a0ZSjovyIgK3bJl6_.j8C4-", "sectors": 73241 }<br />
],<br />
"tracks": [<br />
{<br />
"number": "1",<br />
"length": 974546,<br />
"title": "æ³o",<br />
"recording": { /* recording data omitted for this example. */ },<br />
"artist-credit": [ /* as on release, not repeated in this example. */ ]<br />
}<br />
]<br />
},<br />
{<br />
"track-offset": 0,<br />
"track-count": 1,<br />
"title": "h³æ",<br />
"format": "CD",<br />
"discids": [<br />
{ "id": "aSHvkMnq2jZVFEK.DmSPbvN_f54-", "sectors": 69341 }<br />
],<br />
"tracks": [<br />
{<br />
"number": "1",<br />
"length": 922546,<br />
"title": "h³æ",<br />
"recording": { /* recording data omitted for this example. */ },<br />
"artist-credit": [ /* as on release, not repeated in this example. */ ]<br />
}<br />
]<br />
}<br />
],<br />
"barcode": null,<br />
"disambiguation": null,<br />
"packaging": null,<br />
"asin": null<br />
}<br />
</code><br />
<br />
===Release Group===<br />
<br />
Request: http://musicbrainz.org/ws/2/release-group/c9fdb94c-4975-4ed6-a96f-ef6d80bb7738?inc=artist-credits+releases&fmt=json<br /><br />
Response:<br />
<br />
<code><br />
{<br />
"id": "c9fdb94c-4975-4ed6-a96f-ef6d80bb7738",<br />
"first-release-date": "2012-05-22",<br />
"title": "The Lost Tape",<br />
"artist-credit": [<br />
"name": "50 Cent",<br />
"joinphrase": "",<br />
"artist": {<br />
"id": "8e68819d-71be-4e7d-b41d-f1df81b01d3f",<br />
"name": "50 Cent",<br />
"sort-name": "50 Cent",<br />
"disambiguation": null<br />
}<br />
],<br />
"primary-type": "Album",<br />
"disambiguation": null,<br />
"secondary-types": [ "Mixtape/Street" ],<br />
"releases": [<br />
{<br />
"id": "2ec84eb6-ab92-4ac3-9720-32ad84c34f11",<br />
"title": "The Lost Tape",<br />
/* some properties omitted to keep this example shorter. */<br />
}<br />
]<br />
}<br />
</code><br />
<br />
===Work===<br />
<br />
Request: http://musicbrainz.org/ws/2/work/b1df2cf3-69a9-3bc0-be44-f71e79b27a22?fmt=json<br /><br />
Response:<br />
<br />
<code><br />
{<br />
"id": "b1df2cf3-69a9-3bc0-be44-f71e79b27a22",<br />
"title": "HELLO! また会おうね",<br />
"language": "jpn",<br />
"iswcs": [ "T-101.690.320-9" ]<br />
}<br />
</code><br />
<br />
==Browse Requests==<br />
<br />
Browse requests return a toplevel object with offset and count properties to<br />
help with paging, and a property for the requested entity.<br />
The key for this property will be the english plural of the entity, so:<br />
artists, labels, recordings, releases, release-groups or works.<br />
<br />
Request: http://musicbrainz.org/ws/2/release?label=47e718e1-7ee4-460c-b1cc-1192a841c6e5&offset=12&limit=2&fmt=json<br /><br />
Response:<br />
<br />
<code><br />
{<br />
"releases": [<br />
{<br />
"id": "0b405ea7-8785-402f-bcf7-d55f5000dc3e",<br />
"title": "Wintertunes"<br />
/* some properties omitted to keep this example shorter. */<br />
},<br />
{<br />
"id": "7eb37a3a-646d-4501-a373-e9071186b88d",<br />
"title": "Adventure Magic Supreme Journey Music"<br />
/* some properties omitted to keep this example shorter. */<br />
}<br />
],<br />
"release-offset": 12,<br />
"release-count": 48<br />
}<br />
</code><br />
<br />
==Relationships==<br />
<br />
Request: http://musicbrainz.org/ws/2/release/275b01eb-8551-47ff-bd6b-2d142b4bf422?inc=url-rels&fmt=json<br /><br />
Response:<br />
<br />
<code><br />
{<br />
"id": "275b01eb-8551-47ff-bd6b-2d142b4bf422",<br />
"title": "Kraftwerk Kover Kollection, Volume 1",<br />
"quality": "normal",<br />
"text-representation": { "language": "eng", "script": "Latn" },<br />
"date": "2012",<br />
"relations": [<br />
{<br />
"direction": "backward",<br />
"type": "download for free",<br />
"url": "http://soundcloud.com/strictly/kraftwerk-kover-kollection-vol"<br />
}<br />
],<br />
"country": null,<br />
"status": null,<br />
"barcode": null,<br />
"disambiguation": null,<br />
"packaging": null,<br />
"asin": null<br />
}<br />
</code><br />
<br />
Request: http://musicbrainz.org/ws/2/work/b1df2cf3-69a9-3bc0-be44-f71e79b27a22?inc=artist-rels+recording-rels&fmt=json<br /><br />
Response:<br />
<br />
<code><br />
{<br />
"id": "b1df2cf3-69a9-3bc0-be44-f71e79b27a22",<br />
"title": "HELLO! また会おうね",<br />
"language": "jpn",<br />
"iswcs": [ "T-101.690.320-9" ],<br />
"relations": [<br />
{<br />
"direction": "backward",<br />
"type": "composer",<br />
"artist": {<br />
"id": "d997d399-355e-4c49-9c7b-75a93d76bc0e",<br />
"name": "つんく♂",<br />
"sort-name": "Tsunku",<br />
"disambiguation": null<br />
}<br />
},<br />
{<br />
"direction": "backward",<br />
"type": "lyricist",<br />
"artist": {<br />
"id": "d997d399-355e-4c49-9c7b-75a93d76bc0e",<br />
"name": "つんく♂",<br />
"sort-name": "Tsunku",<br />
"disambiguation": null<br />
}<br />
},<br />
{<br />
"direction": "backward",<br />
"type": "performance",<br />
"recording": {<br />
"id": "487cac92-eed5-4efa-8563-c9a818079b9a",<br />
"title": "HELLO! また会おうね (7人祭 version)",<br />
"length": 283600,<br />
"disambiguation": null<br />
}<br />
},<br />
{<br />
"type": "performance",<br />
"direction": "backward",<br />
"recording": {<br />
"id": "fd3061c1-cb9a-4698-bc5f-f6e0e6a36272",<br />
"title": "HELLO! また会おうね (20人祭 version)",<br />
"length": 283600,<br />
"disambiguation": "PV"<br />
}<br />
}<br />
]<br />
}</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=MusicBrainz_API/XML&diff=66722MusicBrainz API/XML2014-05-24T22:11:09Z<p>JonnyJD: mention json format</p>
<hr />
<div><small>[[Products]] > XML Web Service Version 2</small> <br />
<br />
The web service discussed in this document is an interface to the [[MusicBrainz Database]]. It is aimed at developers of media players, CD rippers, taggers, and other applications requiring music metadata. The service's architecture follows the REST design principles. Interaction with the web service is done using HTTP and all content is served in a simple but flexible '''XML''' format.<br />
The same web service is also available in [[Development/JSON_Web_Service|JSON format]].<br />
<br />
The web service root URL is <code><nowiki>http://musicbrainz.org/ws/2/</nowiki></code>.<br />
<br />
This page documents version 2 of our XML web service. Version 1 has been deprecated, but its documentation [[XML_Web_Service/Version_1|can still be referenced]]. [[Live_Data_Feed|Non-commercial]] use of this web service is free; please [[Contact_Us|contact us]] if you would like to use this service commercially.<br />
<br />
==Introduction==<br />
<br />
We have eight resources on our web service which represent core entities in our database:<br />
<br />
artist, label, recording, release, release-group, work, area, url<br />
<br />
We also provide a web service interface for the following non-core resources:<br />
<br />
rating, tag, collection<br />
<br />
And we allow you to perform lookups based on other unique identifiers with these resources:<br />
<br />
discid, isrc, iswc<br />
<br />
On each entity resource, you can perform three different GET requests:<br />
<br />
lookup: /<ENTITY>/<MBID>?inc=<INC><br />
browse: /<ENTITY>?<ENTITY>=<MBID>&limit=<LIMIT>&offset=<OFFSET>&inc=<INC><br />
search: /<ENTITY>?query=<QUERY>&limit=<LIMIT>&offset=<OFFSET><br />
<br />
... except that search is not implemented for URL entities at this time.<br />
<br />
Of these:<br />
<br />
* Lookups, Non-MBID lookups and Browse requests are documented in following sections.<br />
<br />
==Searches==<br />
Searches are documented at [[/Search|Web Service Search]].<br />
<br />
==Relax NG Schema==<br />
<br />
The file [https://github.com/metabrainz/mmd-schema/blob/master/schema/musicbrainz_mmd-2.0.rng musicbrainz_mmd-2.0.rng] is a Relax NG Schema for this web service. It can also be used to validate [[#Submitting data|submissions]] you're trying to make through it.<br />
<br />
==Lookups==<br />
<br />
You can perform a lookup of an entity when you have the MBID for that entity:<br />
<br />
lookup: /<ENTITY>/<MBID>?inc=<INC><br />
<br />
Note that unless you have provided an MBID in exactly the format listed, you are not performing a lookup request. If your URL includes something like artist=<MBID>, then please see the [[#Browse|Browse]] section. If it includes query=<QUERY>, please see the [[/Search|Web Service Search]] page.<br />
<br />
===Subqueries===<br />
<br />
The inc= is parameter allows you to request more information to be included about<br />
the entity. Any of the entities directly linked to the entity can be included.<br />
<br />
/ws/2/artist recordings, releases, release-groups, works<br />
/ws/2/label releases<br />
/ws/2/recording artists, releases<br />
/ws/2/release artists, labels, recordings, release-groups<br />
/ws/2/release-group artists, releases<br />
/ws/2/work<br />
/ws/2/area<br />
/ws/2/url<br />
<br />
In addition, [[#Relationships|Relationships]] are available for all entity types via inc parameters.<br />
<br />
To include more than one subquery in a single request, separate the arguments to <code>inc=</code> with a + (plus sign), like <code>inc=recordings+labels</code>.<br />
<br />
All lookups which include release-groups allow a type= argument to narrow down the release-groups.<br />
All lookups which include releases also allow the type= argument, and a status= argument is allowed.<br />
<br />
Note that the number of linked entities returned is always limited to 25,<br />
if you need the remaining results, you will have to perform a browse request.<br />
<br />
Linked entities are always ordered alphabetically by gid.<br />
<br />
=== inc= arguments which affect subqueries ===<br />
<br />
Some additional inc= parameters are supported to specify how much of the data about<br />
the linked entities should be included:<br />
<br />
- discids include discids for all media in the releases<br />
- media include media for all releases, this includes the # of tracks on each medium and its format.<br />
- isrcs include isrcs for all recordings<br />
- artist-credits include artists credits for all releases and recordings<br />
- various-artists include only those releases where the artist appears on one of the tracks, <br />
but not in the artist credit for the release itself (this is only valid on a<br />
/ws/2/artist?inc=releases request).<br />
<br />
=== Misc inc= arguments ===<br />
<br />
- aliases include artist, label, area or work aliases; treat these as a set, as they are not deliberately ordered<br />
- annotation include annotation<br />
- tags, ratings include tags and/or ratings for the entity (not valid on releases)<br />
- user-tags, user-ratings same as above, but only return the tags and/or ratings submitted by the specified user<br />
<br />
Requests with user-tags or user-ratings require authentication. You can authenticate using HTTP Digest, use the same username and password used to access the main http://musicbrainz.org website.<br />
<br />
=== Relationships ===<br />
<br />
- artist-rels<br />
- label-rels<br />
- recording-rels<br />
- release-rels<br />
- release-group-rels<br />
- url-rels<br />
- work-rels<br />
<br />
By default, these 'inc=' arguments will only load relationship for the requested entity. When you are loading a release, you might want to load relationships for all its recordings and also works linked to the recordings. This is useful to get full release credits. There are additional arguments that can be used only on release requests and allow you to specify for which entities to load relationships:<br />
<br />
- recording-level-rels<br />
- work-level-rels<br />
<br />
==Non-MBID Lookups==<br />
<br />
Instead of MBIDs, you can also perform lookups using several other unique identifiers. However, because clashes sometimes occur, each of these lookups return a list of entities (there is no limit, all linked entities will be returned, paging is not supported).<br />
<br />
=== discid ===<br />
<br />
lookup: /discid/<discid>?inc=<INC>&toc=<TOC><br />
<br />
A discid lookup returns a list of associated releases, the 'inc=' arguments supported are identical to a lookup request for a release.<br />
<br />
If there are no matching releases in MusicBrainz, but a matching [[CD Stub|CDStub]] exists, it will be returned. This is the default behaviour. If you do ''not'' want to see CD stubs, pass 'cdstubs=no.' CD stubs are contained within a <cdstub> element, and otherwise have the same form as a release. Note that CD stubs do not have artist credits, just artists.<br />
<br />
If you provide the "toc" query parameter, and if the provided discid is not known by MusicBrainz, a fuzzy lookup will done to find matching MusicBrainz releases. Note that if CD stubs are found this will not happen. If you do want TOC fuzzy lookup, but not cdstub searching, specify "cdstubs=no". For example:<br />
<br />
/ws/2/discid/I5l9cCSFccLKFEKS.7wqSZAorPU-?toc=1+12+267257+150+22767+41887+58317+72102+91375+104652+115380+132165+143932+159870+174597<br />
<br />
Will look for the disc id first, and if it fails, will try to find tracklists that are within a similar distance to the one provided.<br />
<br />
The toc consists of the following:<br />
* First track (always 1)<br />
* total number of tracks<br />
* sector offset of the leadout (end of the disc<br />
* a list of sector offsets for each track, beginning with track 1 (generally 150 sectors)<br />
<br />
=== isrc ===<br />
<br />
lookup: /isrc/<isrc>?inc=<INC><br />
<br />
isrc lookups return a list of recordings, the 'inc=' arguments supported are identical to a lookup request for a recording.<br />
<br />
=== iswc ===<br />
<br />
lookup: /iswc/<iswc>?inc=<INC><br />
<br />
An iswc lookup returns a list of works, the 'inc=' arguments supported are identical to a lookup request for a work.<br />
<br />
==Browse==<br />
<br />
Browse requests are a direct lookup of all the entities directly linked to another entity. (with directly linked I am referring to any relationship inherent in the database, so no ARs). For example, you may want to see all releases on netlabel ubiktune:<br />
<br />
/ws/2/release?label=47e718e1-7ee4-460c-b1cc-1192a841c6e5<br />
<br />
Note that browse requests are not searches, in order to browse all the releases on the ubiktune label you will need to know the MBID of ubiktune.<br />
<br />
Browsed entities are always ordered alphabetically by gid. If you need to sort the entities, you will have to fetch all entities (see "Paging" below) and sort them yourself.<br />
<br />
===Linked entities===<br />
<br />
The following list shows which linked entities you can use in a browse request:<br />
<br />
/ws/2/artist recording, release, release-group, work<br />
/ws/2/label release<br />
/ws/2/recording artist, release<br />
/ws/2/release artist, label, recording, release-group<br />
/ws/2/release-group artist, release<br />
/ws/2/work<br />
/ws/2/area<br />
/ws/2/url resource<br />
<br />
As a special case, release also allows track_artist, which is intended to allow you to browse various artist appearances for an artist. It will return any release where the artist appears in the artist_credit for a track, but NOT in the artist_credit for the entire release (as those would already have been returned in a request with artist=<MBID>).<br />
<br />
The URL endpoint's 'resource' entity is for providing a URL directly, rather than a URL MBID, for example https://musicbrainz.org/ws/2/url?resource=http://www.madonna.com/ versus https://musicbrainz.org/ws/2/url/b663423b-9b54-4067-9674-fffaecf68851. This URL will need to be appropriately URL-escaped for inclusion as a query parameter; this means that URLs that include url-escaped parameters, or query parameters of their own, will need to be escaped a second time.<br />
<br />
Release-groups can be filtered on type, and releases can be filtered on type and/or status. For example, if you want all the Live Bootleg releases by Metallica:<br />
<br />
/ws/2/release?artist=65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab&status=bootleg&type=live<br />
<br />
Or all albums and EPs by Autechre:<br />
<br />
/ws/2/release-group?artist=410c9baf-5469-44f6-9852-826524b80c61&type=album|ep<br />
<br />
Note that filtering is mandatory, if you don't specify type or status the release and release-group resources will not return any results.<br />
<br />
===Paging===<br />
<br />
Browse requests are the only requests which support paging, any browse request supports an 'offset=' argument to get more results. Browse requests also support 'limit=', the default limit is 25, and you can increase that up to 100.<br />
<br />
=== inc= ===<br />
<br />
Just like with normal lookup requests, the server can be instructed to include more data about the entity using an 'inc=' argument. Supported values for inc= are:<br />
<br />
/ws/2/artist aliases<br />
/ws/2/label aliases<br />
/ws/2/recording artist-credits, isrcs<br />
/ws/2/release artist-credits, labels, recordings, release-groups, media, discids, isrcs (with recordings)<br />
/ws/2/release-group artist-credits<br />
/ws/2/work aliases<br />
/ws/2/area aliases<br />
<br />
In addition to the inc= values listed above, all entities (except release) support:<br />
<br />
tags, ratings, user-tags, user-ratings<br />
<br />
In addition, [[#Relationships|Relationships]] are available for all entity types via inc parameters, as with lookup requests.<br />
<br />
== Release Type and Status ==<br />
<br />
Any query which includes release-groups in the results can be filtered to only include release groups of a certain type. Any query which includes releases in the results can be filtered to only include releases of a certain type and/or status. Valid values are:<br />
<br />
status official, promotion, bootleg, pseudo-release<br />
type nat, album, single, ep, compilation, soundtrack, spokenword, interview, audiobook, live, remix, other<br />
<br />
== Submitting data ==<br />
<br />
You can use the web service to submit certain kinds of data. Currently tags, ratings and ISRCs can be entered through the web service.<br />
<br />
=== Authentication ===<br />
<br />
All POST requests require authentication. You should authenticate using HTTP Digest, use the same username and password you use to access the main http://musicbrainz.org website. The realm is "musicbrainz.org".<br />
<br />
POST requests should always include a 'client' parameter in the URL (not the body). The value of 'client' should be the ID of the client software submitting data. This has to be the application's name and version number, not that of a client library (client libraries should use HTTP's User-Agent header). The recommended format is "application-version", where version does not contain a - character.<br />
<br />
=== User Data ===<br />
<br />
You can submit tags and ratings through the web service using POST requests. As described above, client software needs to identify itself using the 'client=' parameter. In the following examples I will use 'example.app-0.4.7' as the client identifier, this is obviously a fictitious client.<br />
<br />
==== tags ====<br />
<br />
To submit tags, perform a POST request to the /ws/2/tag url, like this:<br />
<br />
/ws/2/tag?client=example.app-0.4.7<br />
<br />
The body of your request should be an XML formatted list of entities with <user-tag> elements.<br />
<br />
An example request is reproduced below:<br />
<br />
<pre><br />
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><br />
<artist-list><br />
<artist id="a16d1433-ba89-4f72-a47b-a370add0bb56"><br />
<user-tag-list><br />
<user-tag><name>female</name></user-tag><br />
<user-tag><name>korean</name></user-tag><br />
<user-tag><name>jpop</name></user-tag><br />
</user-tag-list><br />
</artist><br />
</artist-list><br />
<recording-list><br />
<recording id="047ea202-b98d-46ae-97f7-0180a20ee5cf"><br />
<user-tag-list><br />
<user-tag><name>noise</name></user-tag><br />
</user-tag-list><br />
</recording><br />
</recording-list><br />
</metadata><br />
</pre><br />
<br />
Because you're sending XML in the body of your POST request, make sure to also set the Content-Type to "application/xml; charset=utf-8".<br />
<br />
For examples, see [[/examples|examples]].<br />
<br />
==== ratings ====<br />
<br />
To submit ratings, perform a POST request to the /ws/2/rating url, like this:<br />
<br />
/ws/2/rating?client=example.app-0.4.7<br />
<br />
The body of your request should be an XML formatted list of entities with <user-rating> elements.<br />
<br />
An example request is reproduced below:<br />
<br />
<pre><br />
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><br />
<artist-list><br />
<artist id="455641ea-fff4-49f6-8fb4-49f961d8f1ad"><br />
<user-rating>100</user-rating><br />
</artist><br />
</artist-list><br />
<recording-list><br />
<recording id="c410a773-c6eb-4bc0-9df8-042fe6645c63"><br />
<user-rating>20</user-rating><br />
</recording><br />
</recording-list><br />
</metadata><br />
</pre><br />
<br />
==== collections ====<br />
<br />
To add and remove release from your collection perform a PUT and DELETE requests to /ws/2/collection/releases, respectively. For example:<br />
<br />
PUT /ws/2/collection/f4784850-3844-11e0-9e42-0800200c9a66/releases/455641ea-fff4-49f6-8fb4-49f961d8f1ad;c410a773-c6eb-4bc0-9df8-042fe6645c63?client=example.app-0.4.7<br />
DELETE /ws/2/collection/f4784850-3844-11e0-9e42-0800200c9a66/releases/455641ea-fff4-49f6-8fb4-49f961d8f1ad;?client=example.app-0.4.7<br />
<br />
You may submit up to ~400 releases in a single request, separated by a semicolon (;), as the PUT example above shows. You are restricted to a maximum URI length of 16kb at the moment (which roughly equates to 400 release gids)<br />
<br />
To get the contents of a collection, simple send a GET request to the releases resource:<br />
<br />
GET /ws/2/collection/f4784850-3844-11e0-9e42-0800200c9a66/releases<br />
<br />
You can also perform a get request on the collection list, which will present you a list of collections for the currently authenticated user, with the amount of releases in each collection:<br />
<br />
GET /ws/2/collection<br />
<br />
<br />
=== Barcode submission ===<br />
<br />
Barcodes may be associated with releases by issuing an XML POST request to:<br />
<br />
/ws/2/release/?client=example.app-0.4.7<br />
<br />
The body of the request must be an XML document with a list of <releases>s in a <release-list>, and a single barcode in a <barcode> element for each release. For example:<br />
<br />
<pre><br />
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><br />
<release-list><br />
<release id="047ea202-b98d-46ae-97f7-0180a20ee5cf"><br />
<barcode>9780262560933</barcode><br />
</release><br />
</release-list><br />
</metadata><br />
</pre><br />
<br />
Upon issuing this request MusicBrainz will create a single edit in the edit queue for applying these changes. These changes will ''not'' be automatically applied, though they will be applied if either no one votes against your changes, or your changes expire (this edit is applied on expiration).<br />
<br />
=== ISRC submission ===<br />
<br />
ISRCs may be associated with recordings by issuing an XML POST request to:<br />
<br />
/ws/2/recording/?client=example.app-0.4.7<br />
<br />
The body of the request must be an XML document with a list of <recording>s in a <recording-list>, and a list of <ISRC>s in a <isrc-list> to be associated with the recordings. For example:<br />
<br />
<pre><br />
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><br />
<recording-list><br />
<recording id="b9991644-7275-44db-bc43-fff6c6b4ce69"><br />
<isrc-list count="1"><br />
<isrc id="JPB600601201" /><br />
</isrc-list><br />
</recording><br />
<recording id="75c961c9-6e00-4861-9c9d-e6ca90d57342"><br />
<isrc-list count="1"><br />
<isrc id="JPB600523201" /><br />
</isrc-list><br />
</recording><br />
</recording-list><br />
</metadata><br />
</pre><br />
<br />
Example code which illustrates this process can be found in our subversion repository: [http://svn.musicbrainz.org/miscellaneous/trunk/isrcsubmit-python/ isrcsubmit-python].<br />
<br />
==Limiting Connections to the MusicBrainz Web Service==<br />
<br />
All users of the XML web service must ensure that each of their client applications never make more than ONE web service call per second. Making more than one call per second drives up the load on the servers and prevents others from using MusicBrainz. If you impact the server by making more than one call per second, your IP address may be blocked preventing all further access to MusicBrainz. For more details on this, please see our [[XML_Web_Service/Rate_Limiting|rate limiting page]].<br />
<br />
==Identifying your application to the MusicBrainz Web Service==<br />
<br />
It is important that your application set a proper User-Agent string in its HTTP request headers. Please read our [[XML_Web_Service/Rate_Limiting|rate limiting]] documentation for more details.<br />
<br />
==Libraries to use the Web Service==<br />
<br />
The Web Service can be accessed with [[libmusicbrainz]].<br />
<br />
===3rd party libraries===<br />
<br />
* Python: [http://python-musicbrainzngs.readthedocs.org/ python-musicbrainzngs] Python2/3 bindings<br />
* Java: [http://code.google.com/p/musicbrainzws2-java/ musicbrainzws2-java]<br />
* Ruby:<br />
** [https://github.com/dwo/musicbrainz-ruby musicbrainz-ruby]<br />
** [https://github.com/magnolia-fan/musicbrainz magnolia-fan/musicbrainz] ruby 1.9+<br />
* PHP: [https://github.com/mikealmond/MusicBrainz mikealmond/MusicBrainz], a fork of [[phpbrainz]]<br />
* C#: [https://github.com/avatar29A/MusicBrainz avatar29A/MusicBrainz]<br />
* Objective-C: [https://github.com/demosdemon/libmusicbrainz-objc libmusicbrainz-objc]<br />
* Haskell:<br />
** [http://hackage.haskell.org/package/MusicBrainz Clint Adams' bindings (hackage)]<br />
** [https://github.com/ocharles/haskell-musicbrainz-ws2 haskell-musicbrainz-ws2 (ocharles)]<br />
* common lisp: [https://github.com/0/cl-musicbrainz cl-musicbrainz]<br />
* Perl: [https://github.com/mavit/webservice-musicbrainz/tree/ws2 Work in progress]. Patches welcome!<br />
<br />
[[Category:Development]] [[Category:Products]] [[Category:WikiDocs Page]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=External_Resources&diff=66720External Resources2014-05-24T17:58:04Z<p>JonnyJD: /* User scripts / GreaseMonkey / User javascripts / UserJS */ link to openuserjs group and greasyfork site</p>
<hr />
<div>''Note: this page needs more flesh and to be linked to.'' <br />
<br />
This page tries to list all external (to [[MusicBrainz]]) programs, scripts, reports, etc. that deal with [[MusicBrainz]]. <br />
<br />
==Possible incorrect data==<br />
<br />
* [http://faux.uwcs.co.uk/mprep.html Releases in a set with differing events, language, script, etc.]<br />
<br />
==Making editing easier==<br />
<br />
* [http://davesmey.com/programs/autoit/emutomb.htm eMusic-to-Musicbrainz import tool] <br />
* [http://www.greycat.ru/musicbrainz/ Advanced MusicBrainz interface]<br />
<br />
==Access MusicBrainz using external APIs==<br />
=== Web Service Version 2 (current) ===<br />
* [http://python-musicbrainzngs.readthedocs.org/ python-musicbrainzngs]<br />
* [https://github.com/dwo/musicbrainz-ruby musicbrainz-ruby]<br />
* [http://code.google.com/p/musicbrainzws2-java/ musicbrainzws2-java]<br />
<br />
=== Web Service Version 1 (deprecated) ===<br />
* [http://rbrainz.rubyforge.org/ RBrainz - Ruby MusicBrainz library] <br />
* [https://github.com/olds/phpbrainz phpBrainz]<br />
<br />
== User scripts / GreaseMonkey / User javascripts / UserJS ==<br />
<br />
User scripts are javascripts that a user installs in one’s browser and that changes the behaviour of visited website (MusicBrainz).<br />
Those scripts will add some functionalities to MusicBrainz or let users do many repetitive things in only one click, etc.<br />
<br />
Almost all those user scripts are stored at userscripts.org under the ''musicbrainz'' tag.<br />
Unfortunately userscripts.org is dying. Alternatives are listed at the [http://wiki.greasespot.net/User_Script_Hosting GreaseSpot wiki].<br />
Some scripts can still be accessed here: [http://userscripts.org:8080/scripts/search?q=musicbrainz&submit=Search userscripts.org:8080]. If you are logged in, then the [http://userscripts.org:8080/tags/musicbrainz musicbrainz tag] also works.<br />
<br />
There is a [https://openuserjs.org/group/musicbrainz musicbrainz group] at openuserJS.org and [https://greasyfork.org/scripts/by-site/musicbrainz.org scripts for musicbrainz.org] at greasyfork.org.<br />
<br />
Other known places with userscripts:<br />
* [https://github.com/murdos/musicbrainz-userscripts Murdos' import Scripts] (Bandcamp, Discogs, Encyclopedisque)<br />
* [http://rassie.org/mb_chatlogs.user.js Rassie's Chatlog improvements]<br />
* [https://github.com/jesus2099/konami-command jesus2099 scripts] ([http://userscripts.org:8080/users/31010/scripts older scripts])<br />
<br />
==Valuable online databases==<br />
<br />
See [[Other Databases]].<br />
<br />
{| border="1"<br />
|-<br />
| '''URI''' || '''Description''' || '''Comments''' (on reliability etc...) <br />
|-<br />
| [http://www.discogs.com/ http://www.discogs.com/] || [[WikiPedia:Discogs|Discogs]] || <br />
|-<br />
| [http://allmusic.com/ http://allmusic.com/] || [[WikiPedia:Allmusic|Allmusic]] || <br />
|-<br />
| [http://en.wikipedia.org/ http://en.wikipedia.org/] || [[WikiPedia:Wikipedia|Wikipedia]] || <br />
|-<br />
| [http://amazon.com http://amazon.com] || || <br />
|-<br />
| [http://amazon.co.uk http://amazon.co.uk] || || <br />
|-<br />
| [http://amazon.fr http://amazon.fr] || || Releases dates often wrong <br />
|-<br />
| [http://amazon.de http://amazon.de] || || Often omits to mark imports as "[Import]" <br />
|-<br />
| [http://www.metal-archives.com http://www.metal-archives.com] || [[WikiPedia:Encyclopaedia_Metallum|Encyclopaedia_Metallum]] || <br />
|-<br />
| [http://www.encyclopedisque.fr http://www.encyclopedisque.fr] || || For French vinyls <br />
|-<br />
| [http://www.lpdiscography.com/ http://www.lpdiscography.com/] || || Has dates, labels, and catalog numbers <br />
|}<br />
<br />
About amazon's [Import] label not trustworthy, here is the smoke-proof to check whether the IMPORT is bogus or not on .fr Switch the tld to .de: [http://www.amazon.de/gp/product/B00004UH7R http://www.amazon.de/gp/product/B00004UH7R] Check what they have as a label, in this case: Label: France (Megaphon Importservice) => it comes from france, and the [Import] is on .fr is bogus.<br />
<br />
==Other==<br />
<br />
* [http://www.mbmysql.com/ MusicBrainzMySQL] <br />
* [http://musicbrainz.homeip.net/ Development server] <br />
* [http://test.musicbrainz.org/ Test server] <br />
* [[Virtual MusicBrainz Server|VirtualMusicBrainzServer]] <br />
* [http://www.jthink.net/jaikoz/ Jaikoz Audio Tagger] <br />
* DQSD (Dave's Quick Search Taskbar Toolbar Deskbar): [http://www.dqsd.net/ http://www.dqsd.net/] <br />
* There are many ISRC submit tools in [[ISRC#Resources]]<br />
<br />
[[Category:To Be Reviewed]] [[Category:Editing]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=External_Resources&diff=66714External Resources2014-05-23T15:53:57Z<p>JonnyJD: /* User scripts / GreaseMonkey / User javascripts / UserJS */ add info how musicbrainz tag can still be accessed</p>
<hr />
<div>''Note: this page needs more flesh and to be linked to.'' <br />
<br />
This page tries to list all external (to [[MusicBrainz]]) programs, scripts, reports, etc. that deal with [[MusicBrainz]]. <br />
<br />
==Possible incorrect data==<br />
<br />
* [http://faux.uwcs.co.uk/mprep.html Releases in a set with differing events, language, script, etc.]<br />
<br />
==Making editing easier==<br />
<br />
* [http://davesmey.com/programs/autoit/emutomb.htm eMusic-to-Musicbrainz import tool] <br />
* [http://www.greycat.ru/musicbrainz/ Advanced MusicBrainz interface]<br />
<br />
==Access MusicBrainz using external APIs==<br />
=== Web Service Version 2 (current) ===<br />
* [http://python-musicbrainzngs.readthedocs.org/ python-musicbrainzngs]<br />
* [https://github.com/dwo/musicbrainz-ruby musicbrainz-ruby]<br />
* [http://code.google.com/p/musicbrainzws2-java/ musicbrainzws2-java]<br />
<br />
=== Web Service Version 1 (deprecated) ===<br />
* [http://rbrainz.rubyforge.org/ RBrainz - Ruby MusicBrainz library] <br />
* [https://github.com/olds/phpbrainz phpBrainz]<br />
<br />
== User scripts / GreaseMonkey / User javascripts / UserJS ==<br />
<br />
User scripts are javascripts that a user installs in one’s browser and that changes the behaviour of visited website (MusicBrainz).<br />
Those scripts will add some functionalities to MusicBrainz or let users do many repetitive things in only one click, etc.<br />
<br />
Almost all those user scripts are stored at userscripts.org under the ''musicbrainz'' tag.<br />
Unfortunately userscripts.org is dying. Alternatives are listed at the [http://wiki.greasespot.net/User_Script_Hosting GreaseSpot wiki].<br />
Some scripts can still be accessed here: [http://userscripts.org:8080/scripts/search?q=musicbrainz&submit=Search userscripts.org:8080]. If you are logged in, then the [http://userscripts.org:8080/tags/musicbrainz musicbrainz tag] also works.<br />
<br />
Other known places with userscripts:<br />
* [https://github.com/murdos/musicbrainz-userscripts Murdos' import Scripts] (Bandcamp, Discogs, Encyclopedisque)<br />
* [http://rassie.org/mb_chatlogs.user.js Rassie's Chatlog improvements]<br />
* <del>[https://github.com/Freso/jesus2099-mb_hidden_links Jesus2099's Artist all links]</del> → today’s latest version is [http://userscripts.org:8080/scripts/show/108889 2014.0322.1232] — [[jesus2099]] ♬ 15:08, 21 May 2014 (UTC)<br />
<br />
==Valuable online databases==<br />
<br />
See [[Other Databases]].<br />
<br />
{| border="1"<br />
|-<br />
| '''URI''' || '''Description''' || '''Comments''' (on reliability etc...) <br />
|-<br />
| [http://www.discogs.com/ http://www.discogs.com/] || [[WikiPedia:Discogs|Discogs]] || <br />
|-<br />
| [http://allmusic.com/ http://allmusic.com/] || [[WikiPedia:Allmusic|Allmusic]] || <br />
|-<br />
| [http://en.wikipedia.org/ http://en.wikipedia.org/] || [[WikiPedia:Wikipedia|Wikipedia]] || <br />
|-<br />
| [http://amazon.com http://amazon.com] || || <br />
|-<br />
| [http://amazon.co.uk http://amazon.co.uk] || || <br />
|-<br />
| [http://amazon.fr http://amazon.fr] || || Releases dates often wrong <br />
|-<br />
| [http://amazon.de http://amazon.de] || || Often omits to mark imports as "[Import]" <br />
|-<br />
| [http://www.metal-archives.com http://www.metal-archives.com] || [[WikiPedia:Encyclopaedia_Metallum|Encyclopaedia_Metallum]] || <br />
|-<br />
| [http://www.encyclopedisque.fr http://www.encyclopedisque.fr] || || For French vinyls <br />
|-<br />
| [http://www.lpdiscography.com/ http://www.lpdiscography.com/] || || Has dates, labels, and catalog numbers <br />
|}<br />
<br />
About amazon's [Import] label not trustworthy, here is the smoke-proof to check whether the IMPORT is bogus or not on .fr Switch the tld to .de: [http://www.amazon.de/gp/product/B00004UH7R http://www.amazon.de/gp/product/B00004UH7R] Check what they have as a label, in this case: Label: France (Megaphon Importservice) => it comes from france, and the [Import] is on .fr is bogus.<br />
<br />
==Other==<br />
<br />
* [http://www.mbmysql.com/ MusicBrainzMySQL] <br />
* [http://musicbrainz.homeip.net/ Development server] <br />
* [http://test.musicbrainz.org/ Test server] <br />
* [[Virtual MusicBrainz Server|VirtualMusicBrainzServer]] <br />
* [http://www.jthink.net/jaikoz/ Jaikoz Audio Tagger] <br />
* DQSD (Dave's Quick Search Taskbar Toolbar Deskbar): [http://www.dqsd.net/ http://www.dqsd.net/] <br />
* There are many ISRC submit tools in [[ISRC#Resources]]<br />
<br />
[[Category:To Be Reviewed]] [[Category:Editing]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=Development&diff=66693Development2014-05-21T14:04:56Z<p>JonnyJD: /* Getting started */ add link to external resources</p>
<hr />
<div>This page collects documents useful for Developers.<br />
<br />
== Getting started ==<br />
<br />
# [[/Introduction|Introduction]]<br />
# [[Developer Resources]]<br />
# [[External Resources]]<br />
<br />
== Clients ==<br />
<br />
# Web Service<br />
## [[Cover_Art_Archive/API|Cover Art Archive API]]<br />
## [[/XML_Web_Service/Version_2|/ws/2 web service documentation (xml)]]<br />
## [[/XML Web Service/Version 2/Search|/ws/2 web service search documentation (xml)]]<br />
## [[/JSON Web Service|/ws/2 web service documentation (json)]]<br />
## [[/XML_Web_Service/Version_1|/ws/1 web service documentation (deprecated)]]<br />
# [[/Release_Editor_Seeding|Release Editor Seeding]]<br />
# [[libmusicbrainz]]<br />
# [[libcoverart]]<br />
# [[libdiscid]]<br />
# [[/OAuth2|Using OAuth2 with MusicBrainz]]<br />
<br />
== MusicBrainz server ==<br />
<br />
# [[Server Setup|Server Setup]]<br />
# [[/Git|Git workflow]]<br />
# [[/Beta Cycle|Beta Cycle]]<br />
# [[/Supported browsers|Supported browsers]]<br />
# [[/Server Coding Style|Server Coding Style]]<br />
# [[/MusicBrainz Server Environment Variables|Environment Variables]]<br />
# [[/ws/js|/ws/js webservice documentation]]<br />
# [[/Sandbox|MusicBrainz Sandbox]]<br />
# [[/Test Server|Test Server]]<br />
<br />
== Picard ==<br />
<br />
== Search server ==<br />
<br />
# [[/Search server setup|Search server setup]]<br />
<br />
== MusicBrainz Database ==<br />
<br />
# [[MusicBrainz Database/Download|Download]]<br />
# [[MusicBrainz Database/Schema|Schema]]<br />
# [[MusicBrainz Database/RDF|RDF]]<br />
<br />
[[Category:Development]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=External_Resources&diff=66692External Resources2014-05-21T14:02:52Z<p>JonnyJD: /* Web Service Version 2 (current) */ update link for musicbrainzngs</p>
<hr />
<div>''Note: this page needs more flesh and to be linked to.'' <br />
<br />
This page tries to list all external (to [[MusicBrainz]]) programs, scripts, reports, etc. that deal with [[MusicBrainz]]. <br />
<br />
==Possible incorrect data==<br />
<br />
* [http://faux.uwcs.co.uk/mprep.html Releases in a set with differing events, language, script, etc.]<br />
<br />
==Making editing easier==<br />
<br />
* [http://davesmey.com/programs/autoit/emutomb.htm eMusic-to-Musicbrainz import tool] <br />
* [http://www.greycat.ru/musicbrainz/ Advanced MusicBrainz interface]<br />
<br />
==Access MusicBrainz using external APIs==<br />
=== Web Service Version 2 (current) ===<br />
* [http://python-musicbrainzngs.readthedocs.org/ python-musicbrainzngs]<br />
* [https://github.com/dwo/musicbrainz-ruby musicbrainz-ruby]<br />
* [http://code.google.com/p/musicbrainzws2-java/ musicbrainzws2-java]<br />
<br />
=== Web Service Version 1 (deprecated) ===<br />
* [http://rbrainz.rubyforge.org/ RBrainz - Ruby MusicBrainz library] <br />
* [https://github.com/olds/phpbrainz phpBrainz]<br />
<br />
== User scripts / GreaseMonkey / User javascripts / UserJS ==<br />
<br />
User scripts are javascripts that a user installs in one’s browser and that changes the behaviour of visited website (MusicBrainz).<br />
Those scripts will add some functionalities to MusicBrainz or let users do many repetitive things in only one click, etc.<br />
<br />
Almost all those user scripts are stored at userscripts.org under the [http://userscripts.org/tags/musicbrainz musicbrainz] tag.<br />
Unfortunately userscripts.org is dying. Alternatives are listed at the [http://wiki.greasespot.net/User_Script_Hosting GreaseSpot wiki].<br />
Some scripts can still be accessed here: [http://userscripts.org:8080/scripts/search?q=musicbrainz&submit=Search userscripts.org:8080].<br />
<br />
Other known places with userscripts:<br />
* [https://github.com/murdos/musicbrainz-userscripts Murdos' import Scripts] (Bandcamp, Discogs, Encyclopedisque)<br />
* [http://rassie.org/mb_chatlogs.user.js Rassie's Chatlog improvements]<br />
* [https://github.com/Freso/jesus2099-mb_hidden_links Jesus2099's Artist all links]<br />
<br />
==Valuable online databases==<br />
<br />
See [[Other Databases]].<br />
<br />
{| border="1"<br />
|-<br />
| '''URI''' || '''Description''' || '''Comments''' (on reliability etc...) <br />
|-<br />
| [http://www.discogs.com/ http://www.discogs.com/] || [[WikiPedia:Discogs|Discogs]] || <br />
|-<br />
| [http://allmusic.com/ http://allmusic.com/] || [[WikiPedia:Allmusic|Allmusic]] || <br />
|-<br />
| [http://en.wikipedia.org/ http://en.wikipedia.org/] || [[WikiPedia:Wikipedia|Wikipedia]] || <br />
|-<br />
| [http://amazon.com http://amazon.com] || || <br />
|-<br />
| [http://amazon.co.uk http://amazon.co.uk] || || <br />
|-<br />
| [http://amazon.fr http://amazon.fr] || || Releases dates often wrong <br />
|-<br />
| [http://amazon.de http://amazon.de] || || Often omits to mark imports as "[Import]" <br />
|-<br />
| [http://www.metal-archives.com http://www.metal-archives.com] || [[WikiPedia:Encyclopaedia_Metallum|Encyclopaedia_Metallum]] || <br />
|-<br />
| [http://www.encyclopedisque.fr http://www.encyclopedisque.fr] || || For French vinyls <br />
|-<br />
| [http://www.lpdiscography.com/ http://www.lpdiscography.com/] || || Has dates, labels, and catalog numbers <br />
|}<br />
<br />
About amazon's [Import] label not trustworthy, here is the smoke-proof to check whether the IMPORT is bogus or not on .fr Switch the tld to .de: [http://www.amazon.de/gp/product/B00004UH7R http://www.amazon.de/gp/product/B00004UH7R] Check what they have as a label, in this case: Label: France (Megaphon Importservice) => it comes from france, and the [Import] is on .fr is bogus.<br />
<br />
==Other==<br />
<br />
* [http://www.mbmysql.com/ MusicBrainzMySQL] <br />
* [http://musicbrainz.homeip.net/ Development server] <br />
* [http://test.musicbrainz.org/ Test server] <br />
* [[Virtual MusicBrainz Server|VirtualMusicBrainzServer]] <br />
* [http://www.jthink.net/jaikoz/ Jaikoz Audio Tagger] <br />
* DQSD (Dave's Quick Search Taskbar Toolbar Deskbar): [http://www.dqsd.net/ http://www.dqsd.net/] <br />
* There are many ISRC submit tools in [[ISRC#Resources]]<br />
<br />
[[Category:To Be Reviewed]] [[Category:Editing]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=External_Resources&diff=66689External Resources2014-05-21T13:14:24Z<p>JonnyJD: /* User scripts / GreaseMonkey / User javascripts / UserJS */ link (working) list of scripts on userscripts.org:8080</p>
<hr />
<div>''Note: this page needs more flesh and to be linked to.'' <br />
<br />
This page tries to list all external (to [[MusicBrainz]]) programs, scripts, reports, etc. that deal with [[MusicBrainz]]. <br />
<br />
==Possible incorrect data==<br />
<br />
* [http://faux.uwcs.co.uk/mprep.html Releases in a set with differing events, language, script, etc.]<br />
<br />
==Making editing easier==<br />
<br />
* [http://davesmey.com/programs/autoit/emutomb.htm eMusic-to-Musicbrainz import tool] <br />
* [http://www.greycat.ru/musicbrainz/ Advanced MusicBrainz interface]<br />
<br />
==Access MusicBrainz using external APIs==<br />
=== Web Service Version 2 (current) ===<br />
* [https://github.com/alastair/python-musicbrainz-ngs python-musicbrainz-ngs]<br />
* [https://github.com/dwo/musicbrainz-ruby musicbrainz-ruby]<br />
* [http://code.google.com/p/musicbrainzws2-java/ musicbrainzws2-java]<br />
<br />
=== Web Service Version 1 (deprecated) ===<br />
* [http://rbrainz.rubyforge.org/ RBrainz - Ruby MusicBrainz library] <br />
* [https://github.com/olds/phpbrainz phpBrainz]<br />
<br />
== User scripts / GreaseMonkey / User javascripts / UserJS ==<br />
<br />
User scripts are javascripts that a user installs in one’s browser and that changes the behaviour of visited website (MusicBrainz).<br />
Those scripts will add some functionalities to MusicBrainz or let users do many repetitive things in only one click, etc.<br />
<br />
Almost all those user scripts are stored at userscripts.org under the [http://userscripts.org/tags/musicbrainz musicbrainz] tag.<br />
Unfortunately userscripts.org is dying. Alternatives are listed at the [http://wiki.greasespot.net/User_Script_Hosting GreaseSpot wiki].<br />
Some scripts can still be accessed here: [http://userscripts.org:8080/scripts/search?q=musicbrainz&submit=Search userscripts.org:8080].<br />
<br />
Other known places with userscripts:<br />
* [https://github.com/murdos/musicbrainz-userscripts Murdos' import Scripts] (Bandcamp, Discogs, Encyclopedisque)<br />
* [http://rassie.org/mb_chatlogs.user.js Rassie's Chatlog improvements]<br />
* [https://github.com/Freso/jesus2099-mb_hidden_links Jesus2099's Artist all links]<br />
<br />
==Valuable online databases==<br />
<br />
See [[Other Databases]].<br />
<br />
{| border="1"<br />
|-<br />
| '''URI''' || '''Description''' || '''Comments''' (on reliability etc...) <br />
|-<br />
| [http://www.discogs.com/ http://www.discogs.com/] || [[WikiPedia:Discogs|Discogs]] || <br />
|-<br />
| [http://allmusic.com/ http://allmusic.com/] || [[WikiPedia:Allmusic|Allmusic]] || <br />
|-<br />
| [http://en.wikipedia.org/ http://en.wikipedia.org/] || [[WikiPedia:Wikipedia|Wikipedia]] || <br />
|-<br />
| [http://amazon.com http://amazon.com] || || <br />
|-<br />
| [http://amazon.co.uk http://amazon.co.uk] || || <br />
|-<br />
| [http://amazon.fr http://amazon.fr] || || Releases dates often wrong <br />
|-<br />
| [http://amazon.de http://amazon.de] || || Often omits to mark imports as "[Import]" <br />
|-<br />
| [http://www.metal-archives.com http://www.metal-archives.com] || [[WikiPedia:Encyclopaedia_Metallum|Encyclopaedia_Metallum]] || <br />
|-<br />
| [http://www.encyclopedisque.fr http://www.encyclopedisque.fr] || || For French vinyls <br />
|-<br />
| [http://www.lpdiscography.com/ http://www.lpdiscography.com/] || || Has dates, labels, and catalog numbers <br />
|}<br />
<br />
About amazon's [Import] label not trustworthy, here is the smoke-proof to check whether the IMPORT is bogus or not on .fr Switch the tld to .de: [http://www.amazon.de/gp/product/B00004UH7R http://www.amazon.de/gp/product/B00004UH7R] Check what they have as a label, in this case: Label: France (Megaphon Importservice) => it comes from france, and the [Import] is on .fr is bogus.<br />
<br />
==Other==<br />
<br />
* [http://www.mbmysql.com/ MusicBrainzMySQL] <br />
* [http://musicbrainz.homeip.net/ Development server] <br />
* [http://test.musicbrainz.org/ Test server] <br />
* [[Virtual MusicBrainz Server|VirtualMusicBrainzServer]] <br />
* [http://www.jthink.net/jaikoz/ Jaikoz Audio Tagger] <br />
* DQSD (Dave's Quick Search Taskbar Toolbar Deskbar): [http://www.dqsd.net/ http://www.dqsd.net/] <br />
* There are many ISRC submit tools in [[ISRC#Resources]]<br />
<br />
[[Category:To Be Reviewed]] [[Category:Editing]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=External_Resources&diff=66688External Resources2014-05-21T13:11:12Z<p>JonnyJD: /* User scripts / GreaseMonkey / User javascripts / UserJS */ note that userscripts.org is dying, alternatives and some links</p>
<hr />
<div>''Note: this page needs more flesh and to be linked to.'' <br />
<br />
This page tries to list all external (to [[MusicBrainz]]) programs, scripts, reports, etc. that deal with [[MusicBrainz]]. <br />
<br />
==Possible incorrect data==<br />
<br />
* [http://faux.uwcs.co.uk/mprep.html Releases in a set with differing events, language, script, etc.]<br />
<br />
==Making editing easier==<br />
<br />
* [http://davesmey.com/programs/autoit/emutomb.htm eMusic-to-Musicbrainz import tool] <br />
* [http://www.greycat.ru/musicbrainz/ Advanced MusicBrainz interface]<br />
<br />
==Access MusicBrainz using external APIs==<br />
=== Web Service Version 2 (current) ===<br />
* [https://github.com/alastair/python-musicbrainz-ngs python-musicbrainz-ngs]<br />
* [https://github.com/dwo/musicbrainz-ruby musicbrainz-ruby]<br />
* [http://code.google.com/p/musicbrainzws2-java/ musicbrainzws2-java]<br />
<br />
=== Web Service Version 1 (deprecated) ===<br />
* [http://rbrainz.rubyforge.org/ RBrainz - Ruby MusicBrainz library] <br />
* [https://github.com/olds/phpbrainz phpBrainz]<br />
<br />
== User scripts / GreaseMonkey / User javascripts / UserJS ==<br />
<br />
User scripts are javascripts that a user installs in one’s browser and that changes the behaviour of visited website (MusicBrainz).<br />
Those scripts will add some functionalities to MusicBrainz or let users do many repetitive things in only one click, etc.<br />
<br />
Almost all those user scripts are stored at userscripts.org under the [http://userscripts.org/tags/musicbrainz musicbrainz] tag.<br />
Unfortunately userscripts.org is dying. Alternatives are listed at the [http://wiki.greasespot.net/User_Script_Hosting GreaseSpot wiki].<br />
<br />
Other known places with userscripts:<br />
* [https://github.com/murdos/musicbrainz-userscripts Murdos' import Scripts] (Bandcamp, Discogs, Encyclopedisque)<br />
* [http://rassie.org/mb_chatlogs.user.js Rassie's Chatlog improvements]<br />
* [https://github.com/Freso/jesus2099-mb_hidden_links Jesus2099's Artist all links]<br />
<br />
==Valuable online databases==<br />
<br />
See [[Other Databases]].<br />
<br />
{| border="1"<br />
|-<br />
| '''URI''' || '''Description''' || '''Comments''' (on reliability etc...) <br />
|-<br />
| [http://www.discogs.com/ http://www.discogs.com/] || [[WikiPedia:Discogs|Discogs]] || <br />
|-<br />
| [http://allmusic.com/ http://allmusic.com/] || [[WikiPedia:Allmusic|Allmusic]] || <br />
|-<br />
| [http://en.wikipedia.org/ http://en.wikipedia.org/] || [[WikiPedia:Wikipedia|Wikipedia]] || <br />
|-<br />
| [http://amazon.com http://amazon.com] || || <br />
|-<br />
| [http://amazon.co.uk http://amazon.co.uk] || || <br />
|-<br />
| [http://amazon.fr http://amazon.fr] || || Releases dates often wrong <br />
|-<br />
| [http://amazon.de http://amazon.de] || || Often omits to mark imports as "[Import]" <br />
|-<br />
| [http://www.metal-archives.com http://www.metal-archives.com] || [[WikiPedia:Encyclopaedia_Metallum|Encyclopaedia_Metallum]] || <br />
|-<br />
| [http://www.encyclopedisque.fr http://www.encyclopedisque.fr] || || For French vinyls <br />
|-<br />
| [http://www.lpdiscography.com/ http://www.lpdiscography.com/] || || Has dates, labels, and catalog numbers <br />
|}<br />
<br />
About amazon's [Import] label not trustworthy, here is the smoke-proof to check whether the IMPORT is bogus or not on .fr Switch the tld to .de: [http://www.amazon.de/gp/product/B00004UH7R http://www.amazon.de/gp/product/B00004UH7R] Check what they have as a label, in this case: Label: France (Megaphon Importservice) => it comes from france, and the [Import] is on .fr is bogus.<br />
<br />
==Other==<br />
<br />
* [http://www.mbmysql.com/ MusicBrainzMySQL] <br />
* [http://musicbrainz.homeip.net/ Development server] <br />
* [http://test.musicbrainz.org/ Test server] <br />
* [[Virtual MusicBrainz Server|VirtualMusicBrainzServer]] <br />
* [http://www.jthink.net/jaikoz/ Jaikoz Audio Tagger] <br />
* DQSD (Dave's Quick Search Taskbar Toolbar Deskbar): [http://www.dqsd.net/ http://www.dqsd.net/] <br />
* There are many ISRC submit tools in [[ISRC#Resources]]<br />
<br />
[[Category:To Be Reviewed]] [[Category:Editing]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=Music_Hack_Day&diff=66675Music Hack Day2014-05-17T17:37:18Z<p>JonnyJD: actually link music hack day (for people not coming from there)</p>
<hr />
<div>'''Welcome [http://new.musichackday.org/ Music Hack Day] Participants!'''<br />
<br />
The purpose of this page is to give you a simple quick start guide of things you may find useful in order to include MusicBrainz in your hack day projects. <br />
<br />
;[[About_MusicBrainz|MusicBrainz introduction]]:A short introduction to what MusicBrainz is, and what it is not.<br />
;[[How_Editing_Works|Editing MusicBrainz]]:An overview on how to edit on MusicBrainz. <br />
;[[XML_Web_Service|MusicBrainz web service API]]:Documentation on how to use MusicBrainz' RESTful web service API. This API can be used to search for artstis/releases/tracks/labels/collections/works/places on MusicBrainz, and to retrieve resources based on [[MBID]]s. There are [[XML Web Service#Libraries to use the Web Service|bindings for many programming languages]] available.<br />
;[[Cover Art Archive/API|Cover Art Archive]]: MusicBrainz and the Internet Archive collaboratively created an archive of music cover art. Using a simple HTTP call, you retrieve a cover art image if you have a MusicBrainz Release Id.<br />
;[[Developer Resources#Client libraries|MusicBrainz client libraries]]: Official C libraries for calculationg [[Disc ID]]s, accessing the above mentioned web service and interacting with the [[Cover Art Archive/API|Cover Art Archive]].<br />
;[[Acoustid|Acoustid fingerprinting]]: Acoustid is the acoustic fingerprinting service that MusicBrainz uses. Use this service to identify audio files.<br />
;[[User:Mineo/APIs_understanding_MBIDs|APIs that understand MBID]]: Various Services on the net that understand MBIDs <br />
<br />
'''Music Hack Day San Francisco 2014''': If you have MusicBrainz questions, you can find Rob in the bright orange shirt with the orange and purple hair, sitting near the back of the presentation area.<br />
<br />
==Other helpful links==<br />
<br />
''Have a great weekend hacking on fun music projects!''</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=Music_Hack_Day&diff=66673Music Hack Day2014-05-17T17:23:41Z<p>JonnyJD: actually link to all of the language bindings and tell that the other link is for C libraries</p>
<hr />
<div>'''Welcome Music Hack Day Participants!'''<br />
<br />
The purpose of this page is to give you a simple quick start guide of things you may find useful in order to include MusicBrainz in your hack day projects. <br />
<br />
;[[About_MusicBrainz|MusicBrainz introduction]]:A short introduction to what MusicBrainz is, and what it is not.<br />
;[[How_Editing_Works|Editing MusicBrainz]]:An overview on how to edit on MusicBrainz. <br />
;[[XML_Web_Service|MusicBrainz web service API]]:Documentation on how to use MusicBrainz' RESTful web service API. This API can be used to search for artstis/releases/tracks/labels/collections/works/places on MusicBrainz, and to retrieve resources based on [[MBID]]s. There are [[XML Web Service#Libraries to use the Web Service|bindings for many programming languages]] available.<br />
;[[Developer Resources#Client libraries|MusicBrainz client libraries]]: Official C libraries for calculationg [[Disc ID]]s, accessing the above mentioned web service and interacting with the [[Cover Art Archive/API|Cover Art Archive]].<br />
;[[Acoustid|Acoustid fingerprinting]]: Acoustid is the acoustic fingerprinting service that MusicBrainz uses. Use this service to identify audio files.<br />
;[[User:Mineo/APIs_understanding_MBIDs|APIs that understand MBID]]: Various Services on the net that understand MBIDs <br />
<br />
'''Music Hack Day San Francisco 2014''': If you have MusicBrainz questions, you can find Rob in the bright orange shirt with the orange and purple hair, sitting near the back of the presentation area.<br />
<br />
==Other helpful links==<br />
<br />
''Have a great weekend hacking on fun music projects!''</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=Developer_Resources&diff=66672Developer Resources2014-05-17T17:06:25Z<p>JonnyJD: /* Client libraries */ change python-musicbrainz2 with python-musicbrainzngs</p>
<hr />
<div>See also [[Development]].<br />
<br />
== Client libraries ==<br />
<br />
; [[libcoverart]] <br />
: A C/C++ development library geared towards developers who wish to add cover art capabilities to their applications.<br />
<br />
; [[libmusicbrainz]] <br />
: A C/C++ development library geared towards developers who wish to add MusicBrainz lookup capabilities to their applications.<br />
<br />
; [[libdiscid]]<br />
: A C library for creating MusicBrainz disc IDs from audio CDs.<br />
:: See also: [[Disc ID Calculation]].<br />
<br />
; [https://python-musicbrainzngs.readthedocs.org/ python-musicbrainzngs]<br />
: A client library written in Python which provides easy access to the MusicBrainz database using the [[XML Web Service|XML web service]] (version 2)<br />
<br />
== Bots ==<br />
* https://github.com/lalinsky/musicbrainz-bot <br />
** https://github.com/murdos/musicbrainz-bot (a fork of lalinsky's one)<br />
<br />
A full list of users with the bot flag can be found on http://musicbrainz.org/privileged<br />
<br />
== Developer documentation ==<br />
<br />
; [[XML Web Service|XML web service]]<br />
: The REST-based webservice API for direct access to MusicBrainz data (Please review the libraries above before writing your own implementation).<br />
:: '''See also:''' [[XML Web Service/Version 2/examples|Examples]]<br />
:: [[Next Generation Schema/SearchServerXML|Search query/XML information]] and [[Text Search Syntax]]<br />
:: [http://svn.musicbrainz.org/mmd-schema/trunk/schema/musicbrainz_mmd-2.0.rng RelaxNG schema]<br />
:: [[Release Editor Seeding]]: Providing programmatic information to the release editor (from another site or an application), the closest we have to an edit API as yet<br />
:: [[User:kuno/ws/js|'''(internal)''' JS autocomplete API]]<br />
<br />
; [[Server Setup|Server setup]]<br />
: The [[MusicBrainz Server]] is not available as an executable application. Setting up the server will require you to checkout the source code and follow the INSTALL file's instructions.<br />
: The [[MusicBrainz Database]] contains all the metadata information available on musicbrainz.org and anyone is free for anyone to [[MusicBrainz Database/Download|download]] and make use of it (and we encourage this!). Setting it up will require access to a PostgreSQL database. See instructions as part of the Server Setup above or use [https://github.com/lalinsky/mbslave mbslave].<br />
: [[User:kuno/Server/Environment_variables|Server environment variables that may prove useful]]<br />
: [http://svn.musicbrainz.org/search_server/trunk/README Search Server Setup] if you're brave enough to want to try.<br />
: [[User:kuno/Testing|Some javascript testing information]]<br />
<br />
; Embedded metadata<br />
: [[Picard Tag Mapping]]: The documentation for how [[Picard]] maps concepts to tags; useful if you want to use these tags elsewhere, or if you'd like to follow the same standard.<br />
:: See also: [[ID3v2.4.0]]<br />
:: [[Disc IDs and Tagging]]<br />
:: [[MusicBrainz Identifier]]<br />
<br />
; [[Picard]] Development<br />
: [[Picard_Qt/Plugin_API|Plugin API Documentation]]<br />
: [[Picard Tag Mapping]]<br />
: [[How to Build Picard for Windows|Building on Windows]]<br />
: [[User:Bitmap/Building_Picard_on_OS_X|Building on OS X]]<br />
<br />
; Communicating with other developers:<br />
:[[IRC]]: Here's where you ask questions of real live people, if anyone's awake. You love it, you know it.<br />
: [[Mailing Lists]]: And here's where you ask if we aren't awake, or for anything style-related or needing more consideration than can be easily given in IRC.<br />
: [[MusicBrainz Summit]]s: These happen occasionally, and people get together and talk about MusicBrainz. You should consider coming! Even if not, the discussions had here are sometimes important, and might be worth perusing.<br />
<br />
[[Category:Documentation]] [[Category:Development]] [[Category:WikiDocs Page]] [[Category:To Be Reviewed]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=Music_Hack_Day&diff=66671Music Hack Day2014-05-17T17:02:53Z<p>JonnyJD: /* Other helpful links */ remove outdated exampes (WS/1 and libofa Oo)</p>
<hr />
<div>'''Welcome Music Hack Day Participants!'''<br />
<br />
The purpose of this page is to give you a simple quick start guide of things you may find useful in order to include MusicBrainz in your hack day projects. <br />
<br />
;[[About_MusicBrainz|MusicBrainz introduction]]:A short introduction to what MusicBrainz is, and what it is not.<br />
;[[How_Editing_Works|Editing MusicBrainz]]:An overview on how to edit on MusicBrainz. <br />
;[[XML_Web_Service|MusicBrainz web service API]]:Documentation on how to use MusicBrainz' RESTful web service API. This API can be used to search for artstis/releases/tracks/labels/collections/works/places on MusicBrainz, and to retrieve resources based on [[MBID]]s.<br />
;[[Developer Resources#Client libraries|MusicBrainz client libraries]]:Access MusicBrainz from your application using one of our many language bindings. This takes a lot of the work out of using the web service API listed above.<br />
;[[Acoustid|Acoustid fingerprinting]]: Acoustid is the acoustic fingerprinting service that MusicBrainz uses. Use this service to identify audio files.<br />
;[[User:Mineo/APIs_understanding_MBIDs|APIs that understand MBID]]: Various Services on the net that understand MBIDs <br />
<br />
'''Music Hack Day San Francisco 2014''': If you have MusicBrainz questions, you can find Rob in the bright orange shirt with the orange and purple hair, sitting near the back of the presentation area.<br />
<br />
==Other helpful links==<br />
<br />
''Have a great weekend hacking on fun music projects!''</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=MusicBrainz_Picard/Plugins&diff=66287MusicBrainz Picard/Plugins2014-04-29T12:00:53Z<p>JonnyJD: /* Plugins */ change link for swapprefix (moved to core for Picard > 1.2, but not released yet)</p>
<hr />
<div>There are many plugins available for Picard. A number of these are written by the Picard developers, however many are written by users and enthusiasts. If you are having issues with a plugin, please check the [http://forums.musicbrainz.org/viewforum.php?id=2 forums] for answers and ask any questions.<br />
<br />
==Installation==<br />
===Simple method===<br />
This method works for any plugin that consist of a single .py file, unless special installation instructions are given. In that case refer to those and/or to the advanced method below.<br />
<br />
Though this tutorial has only been tested with the Windows version of Picard, procedure should be very similar with other operating systems.<br />
<br />
To install a plugin: <br />
# First of all, download the plugin (.py file) you want to install<br />
# Open Picard<br />
# Click ''Options'' in menu bar<br />
# Choose ''Options...'' to open preferences menu<br />
# Go to ''Plugins'' in the left pane<br />
# Click ''Install plugin...''<br />
# Locate the downloaded .py file and click ''Open''<br />
That's it, your plugin is now ready for use. The file has been copied by Picard to it's plugins folder (using Windows specifically <code><nowiki>%APPDATA%\MusicBrainz\Picard\plugins</nowiki></code>), it's safe to delete the plugin in your download folder.<br />
<br />
===Advanced method===<br />
To install a plugin: <br />
# download .py file(s)<br />
# create a 'plugins' directory (if not existing already) under <br />
## Windows: either <code><nowiki>C:\Program Files\Musicbrainz Picard\plugins</nowiki></code> (for default Picard application folder) or <code><nowiki>%APPDATA%\MusicBrainz\Picard\plugins</nowiki></code> <br />
## *Nix: either Picard application directory/plugins or <code><nowiki>~/.config/MusicBrainz/Picard/plugins</nowiki></code> <br />
## OSX: Follow These Steps:<br />
### Open a Terminal (can be found in: <code><nowiki>Applications/Utilities/Terminal</nowiki></code>)<br />
### type <code><nowiki>mkdir -p $HOME/.config/MusicBrainz/Picard/plugins</nowiki></code> (needs to be done only once)<br />
### type <code><nowiki>open $HOME/.config/MusicBrainz/Picard/plugins</nowiki></code> to display the folder in finder. Now move the plugins there.<br />
## Please note that some plugins need to be placed inside a separate subdirectory specific to the plugin. See the 'Notes' column below to see if this is required for the particular plugin you are installing.<br />
# Move downloaded .py file(s) to 'plugins' directory <br />
# Enable the plugin. Check the box beside the individual plugin in the plugins menu, which can be found at<br />
## Windows/*Nix: Options Menu >> Options... >> Plugins<br />
## OSX: MusicBrainz Picard >> Preferences >> Plugins<br />
<br />
==Creating Plugins==<br />
Please refer to the [[MusicBrainz Picard/Plugins/API|Picard plugin API]] documentation.<br />
<br />
==Plugins==<br />
<br />
{| border="1"<br />
|-<br />
| '''Name''' || '''Description''' || '''Author''' || '''Adds Context Menu Item?''' || '''Download / Compatibility''' || '''License''' || '''Known issues/Notes'''<br />
|-<br />
| ''' Disc Numbers''' || Moves ''(disc X)'' from releases titles into separate tags (''discnumber'' and ''discsubtitle''). || [[User:LukasLalinsky|Lukáš Lalinský]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/discnumber.py 0.9 - 1.0] || (unspecified) || -<br />
|-<br />
| '''Classic Disc Numbers''' || Reverts to pre-NGS (aka "Classic") behaviour by adding ''(disc X: discTitle)'' to release titles into separate tags (''discnumber'' and ''discsubtitle''). || [[User:LukasLalinsky|Lukáš Lalinský]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/classicdiscnumber.py 0.15 - 1.0] || (unspecified) || Broken in 0.15.1 (OK in later releases); workaround version of plugin available on forum [http://forums.musicbrainz.org/viewtopic.php?pid=14731#p14731 here].<br />
|-<br />
| '''Remove Feat. Artists from Titles''' || Removes ''(feat. Artist)'' parts from track titles. || [[User:LukasLalinsky|Lukáš Lalinský]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/featartist.py 0.9 - 1.0] || (unspecified) || - <br />
|-<br />
| '''Move Feat. Artists to Titles''' || Move "feat." from artist names to album and track titles. e.g. "A feat. B - Song" becomes "A - Song (feat. B)." || [[User:LukasLalinsky|Lukáš Lalinský]], [[User:Bitmap|Michael Wiencek]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/featartistsintitles.py 0.9 - 1.0] || (unspecified) || - <br />
|-<br />
| '''Title Case''' || Converts track and release titles to Title Case (capitalizes first character of every word) || Javier Kohen, [[User:LukasLalinsky|Lukáš Lalinský]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/titlecase.py 0.9 - 1.0] || GPLv2 || - <br />
|-<br />
| '''Cover Art Downloader''' || Downloads cover art for optional tag embedding and/or saving as a separate image file (using standard Options >> Cover Art Picard settings) || [[User:OliverCharles|Oliver Charles]], [[User:OutsideContext|Philipp Wolfer]] || No || [http://web.archive.org/web/20090527084503/http://users.musicbrainz.org/~luks/picard-qt/plugins/coverart.py 0.9 - 0.11] <br/> [http://users.musicbrainz.org/~outsidecontext/picard/plugins/coverart.py 0.12 - 0.14] <br/> [https://raw.github.com/musicbrainz/picard/release-1.1/contrib/plugins/coverart.py 0.15 - 1.1] <br /> Integrated in 1.2 || GPLv2 || -<br />
|-<br />
| '''Last.fm Tags''' || Use Last.fm tags as "genre" || [[User:LukasLalinsky|Lukáš Lalinský]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/lastfm/__init__.py 0.15 - 1.0 (file 1)]<br/>[http://users.musicbrainz.org/~luks/picard-plugins/lastfm/ui_options_lastfm.py 0.15 - 1.0 (file 2)] || (unspecified) || ''(copy both files to directory <code><nowiki>plugins/lastfm/</nowiki></code>)'' <br />
|-<br />
| '''Last.fm Plus''' || Use Last.fm tags as "grouping/genre/moods/occasions/countries/originalyear" and more. Modified version of above plugin. || [[User:RifRaf|RifRaf]], voiceinsideyou || No || [http://www.mediafire.com/?qlso9gc8c75aq5a 0.15 - 1.0] || (unspecified) || Unzip into plugins folder. (so you have plugins/lastfmplus/__init__.py etc) [[MusicBrainz Picard/Documentation/Plugins/Lastfmplus|Documentation]], [http://forums.musicbrainz.org/viewtopic.php?id=2949 forum thread]<br />
|-<br />
| '''Add Cluster As A Release''' || Adds right click option to an unmatched cluster to allow adding releases to MB based on tags. || [[User:LukasLalinsky|Lukáš Lalinský]], [[User:Foolip|Philip Jägenstedt]] || Yes || [https://raw.github.com/foolip/addrelease/master/addrelease.py 0.9 - 0.16] <br/> [http://users.musicbrainz.org/~luks/picard-plugins/addrelease.py 1.0] || GPLv2 or later || -<br />
|-<br />
| '''Generate Cuesheet''' || Generates a cuesheet from a release || [[User:LukasLalinsky|Lukáš Lalinský]] || Yes || [http://users.musicbrainz.org/~luks/picard-plugins/cuesheet.py 0.10 - 1.0] || (unspecified) || - <br />
|-<br />
| '''Release Type''' || Appends information to EPs and Singles such as " EP" or " (single)" (customisable, see file for details). Useful for separating releases with singles/EPs of the same name. || [[User:chancey|Elliot Chance]] || No || [https://bitbucket.org/chancey/musicbrainz-picard-release-type 0.9 - 0.10, 0.15] || (unspecified) || -<br />
|-<br />
| '''No Release''' || Do not store specific release information in releases of unknown origin. || [[User:Hrglgrmpf|hrglgrmpf]] || Yes || [http://users.musicbrainz.org/~luks/picard-plugins/no_release.py 0.15 - 1.0] || (unspecified) || See [http://forums.musicbrainz.org/viewtopic.php?id=2918&p=2 forum post] for details.<br />
|-<br />
| '''Search Plugins''' || Launch searches for clusters or releases to external non-MB websites from Picard || [[User:BrianFreud| Brian Schweitzer]] || Yes || [https://github.com/brianfreud/Picard-plugins 0.9 - 1.0] || (unspecified) || Plugins available for:<ul><br />
<li>All Music Guide<br />
<li>Amazon (supports: .ca, .com, .de, .fr, .jp, and .co.uk)<br />
<li>CastAlbums.org (musicals)<br />
<li>DiscogsFilmMusziek.be (film music)<br />
<li>eBay<br />
<li>Game Music Revolution (game soundtracks)<br />
<li>Google<br />
<li>The Lortel Archives (off-Broadway musicals)<br />
<li>SoundtrackCollector.org (soundtracks)<br />
<li>SoundtrackINFO (soundtracks)<br />
</ul><br />
|-<br />
| '''Change Encoding''' || Converts the tags of individual files or clusters between different character encodings. This is often necessary with files that have only ID3v1 tags in a non-Latin encoding. || [[User:foolip|Philip Jägenstedt]] || Yes || [https://raw.github.com/foolip/encoding/master/encoding.py 0.9 - 0.12] || GPLv2 or later || You will probably only need to change the ''target'' encoding. If the encoding you're looking for isn't in the list, you can type it in yourself and it will hopefully work. <br />
|-<br />
| '''Original Release Date''' || Set the original release date of a release by using the release events and "earliest release" advanced relationships. || [[User:OutsideContext|Philipp Wolfer]] || No || [http://users.musicbrainz.org/~outsidecontext/picard/plugins/originalreleasedate.py 0.12] || GPLv2 or later || Not needed for newer versions of Picard which support the %originaldate% tag directly.<br />
|-<br />
| '''Title sort names''' || Guess sortnames for track and album titles and adds as titlesort and albumsort tags. || [[User:Creap|Creap]] || No || [http://github.com/voiceinsideyou/creaps-picard-plugins/raw/master/titlesort.py 0.12 - 1.0] || (unspecified) || Checks language (English, Spanish, German, French, Italian, Swedish) and moves articles ("The", "Das", etc) to the end of the track/album title in the sort tags. <br />
|-<br />
| '''Title version''' || Moves song metadata such as "demo", "live" from titlesort to version tag. || [[User:Creap|Creap]] || No || [http://github.com/voiceinsideyou/creaps-picard-plugins/raw/master/titleversion.py 0.12 - 1.0] || (unspecified) || Searches titles for keywords like ''live'', ''demo'', ''mix'', etc, and moves it from titles to version tags.<br />
|-<br />
| '''$swapprefix function''' || Adds the $swapprefix(text, *prefixes) script function, which moves the specified prefixes to the end of the text. || [[User:OutsideContext|Philipp Wolfer]] || No || [https://raw.githubusercontent.com/musicbrainz/picard/f387fa742dbdbc47819fcf2a307b8b85605d1c54/contrib/plugins/swapprefix.py 0.9 - 1.0] || GPLv2 or later || See this [http://forums.musicbrainz.org/viewtopic.php?id=2220 forum post] for details.<br />
|-<br />
| '''Lookup PUID''' || Adds the ability to lookup the PUID on MusicBrainz (useful in case there are several tracks linked with the same PUID) || WPME Hofland || Yes || [http://www.merijnhofland.info/mb/searchpuid.py 0.12] || (unspecified) || Note: Since October 15, 2013, MusicBrainz no longer stores PUIDs, so this plugin is non-functional.<br />
|-<br />
| '''TSO2''' || Set TSO2 as well as TXXX:ALBUMARTISTSORTORDER in ID3 tags, so album artist sort order works in iTunes and other players || Andrew Barnert || No || [http://picardplugins.googlecode.com/files/tso2-0.1.py 0.12] || (unspecified) || See this [http://forums.musicbrainz.org/viewtopic.php?id=2359 forum post] for details. Note: Included as standard functionality since Picard 0.15.1.<br />
|-<br />
| '''Add to iTunes''' || Mac OS X only! Add an album/track/etc. to iTunes. || Andrew Barnert || Yes || [http://picardplugins.googlecode.com/files/addtoitunes-0.1.py 0.12] || (unspecified) || See this [http://forums.musicbrainz.org/viewtopic.php?id=2361 forum post] for details.<br />
|-<br />
| '''The Sorting Plugin''' || Allows sorting of clusters and releases (i.e. both panes) through the right click "Plugins" menu. (can sort either Clusters or Releases by Artist or Title, and within a cluster by artist or title) || Aaron Lambers || Yes || [http://www.mediafire.com/?16ymlxoik6akmzk 0.12] || (unspecified) || See this [http://forums.musicbrainz.org/viewtopic.php?id=2489 forum post] for details. Note: Included as standard functionality since Picard 0.14.<br />
|-<br />
| '''Discnumber and Bonus disc''' || Combination of the discnumber and bonus disc plugin || WPME Hofland || No || [http://www.merijnhofland.info/mb/bonusdiscnumber.py 0.12] || (unspecified) || <br />
|-<br />
| '''Convert Typographic Punctuation''' || Replace hard-to-type-into-search-boxes fancy punctuation with Latin-1 equivalents || anonymous || No || [http://picardplugins.googlecode.com/files/converttypographicpunctuation-0.1.3.py 0.9 - 0.12] || [http://sam.zoy.org/wtfpl/ WTFPL] || See [http://forums.musicbrainz.org/viewtopic.php?id=2495 forum] and [http://bugs.musicbrainz.org/ticket/5834 bug ticket] for details.<br />
|-<br />
| '''Foobar2000 ReplayGain''' || Analyse your albums using the foobar2000 ReplayGain scanner. || [[User:Hrglgrmpf|hrglgrmpf]] || Yes || [http://github.com/weisslj/picardplugins/raw/master/f2k_rgscan.py 0.10 - 1.0] || (unspecified) || See [http://forums.musicbrainz.org/viewtopic.php?id=2564 forum post] for details.<br />
|-<br />
| '''MetaFlac ReplayGain''' || Analyse your albums using the MetaFlac ReplayGain scanner. || Olivier Kaloudoff || Yes || <!--http://kalou.net/unix/picard/metaflac_rgscan.py//-->[http://kraehen.org/mb/metaflac_rgscan.py 0.10 - 1.0] || (unspecified) || Tested only on Mac OSX / Feedback to kalou at kalou dot net<br />
|-<br />
|-<br />
| '''$eq2, $ne2 functions''' || Each plugin adds a new function to taggerscript, to allow comparison of a variable against more than one string.<br />
Example: set %engineer% to "test" if the artist is equal to "foo", "bar", or "baz":<br />
$if($eq2(%artist%,foo,bar,baz),$set(engineer,test))<br />
|| [[User:BrianFreud| Brian Schweitzer]] || No || [https://github.com/brianfreud/Picard-plugins 0.12 - 1.0] || (unspecified) || See [http://forums.musicbrainz.org/viewtopic.php?id=2631 forum post] for details.<br />
|-<br />
| '''$p function''' || Adds an $p(string, unofficial) function to taggerscript. This works like the inverse of a \p{foo} regex using Unicode properties. In other words, it tells you what script a character belongs to. <br />
Usage:<br />
$p(%something%)<br />
$p(%something%, True)<br />
The second argument is optional. By default, it is set to False. When set to True, unofficial Unicode scripts (i.e. ConScript, etc.) are also checked.<br />
|| [[User:BrianFreud| Brian Schweitzer]] || No ||[https://github.com/brianfreud/Picard-plugins 0.12 - 1.0] || (unspecified) || See [http://forums.musicbrainz.org/viewtopic.php?id=2631 forum post] for details.<br />
|-<br />
| '''Remove Perfect albums''' || Remove "Perfect" matches from album list i.e. all tracks matched and tags saved. || ichneumon || Yes || [https://github.com/voiceinsideyou/picard/raw/plugins/contrib/plugins/removeperfectalbums.py 0.15 - 1.0] || (unspecified) || See [http://forums.musicbrainz.org/viewtopic.php?id=2555 forum post] for details.<br />
|-<br />
| '''Autosave complete albums''' || Save albums with 4+ tracks and 90%+ confidence on all tracks, then remove them from the album list. Useful when importing a big, relatively well-tagged collection. || encukou || Yes || [https://raw.github.com/encukou/picard-plugins/master/autosave.py 0.15 - 1.0] || (unspecified) || See [http://forums.musicbrainz.org/viewtopic.php?pid=17270 forum post] for details.<br />
|-<br />
| '''Sidecars''' || Stores and retrieves metadata in "sidecar" files so that changes can be staged. || [[User:Tony70|Tony Flaks]] || Yes || [http://sites.google.com/site/tonyflaks/sidecar.py 0.14] || (unspecified) || See [http://wiki.musicbrainz.org/User:Tony70/SidecarPlugin wiki page] for details.<br />
|-<br />
| '''View Variables''' || Allows you to view all the script variables associated with a track or file in a dialog box. || Sophist || Yes || [https://github.com/Sophist-UK/Picard-Plugins/raw/master/viewvariables.zip 1.0] || GPLv2 or later || See [http://forums.musicbrainz.org/viewtopic.php?id=4886 forum post] for details and support.<br />
|-<br />
| '''Abbreviate artist-sort''' || Abbreviates artist forenames in the albumartistsort and artistsort tags e.g. "Vivaldi, Antonio" becomes "Vivaldi, A.". This is likely to be of interest for classical albums where the albumartistsort string can be very long. || Sophist || Yes || [https://github.com/Sophist-UK/Picard-Plugins/raw/master/abbreviate_artistsort.py 1.0] || GPLv2 or later || See [http://forums.musicbrainz.org/viewtopic.php?id=4893 forum post] for details and support.<br />
|-<br />
| '''Copy to Comment''' || Some music players are unable to display the standard tags produced by Picard for Composer, Performers etc. This plugin copies this data to the default Comment so that these players can (hopefully) display this information. || d2freak and Sophist || Yes || [https://github.com/Sophist-UK/Picard-Plugins/raw/master/copy_to_comment.py 1.0] || GPLv2 or later || See [http://forums.musicbrainz.org/viewtopic.php?id=4895 forum post] for details and support.<br />
|-<br />
| '''Album Artist Website''' || Unfortunately, MusicBrainz does not supply the Artists Official Homepage url when Picard requests details for an album, and so the 'website variable and id3 WOAR tag cannot be populated. This plugin makes an additional request to MusicBrainz to get this information and loads it into the 'website' variable. || Sophist || Yes || [https://github.com/Sophist-UK/Picard-Plugins/raw/master/albumartist_website.py 1.0] || GPLv2 or later || See [http://forums.musicbrainz.org/viewtopic.php?id=4906 forum post] for details and support.<br />
|-<br />
| '''MusicBee Compatibility''' || This plugin sets some tags to maximise the compatibility of mp3 files tagged by Picard with the MusicBee player. || Volker Zell (and Sophist) || Yes || [https://github.com/Sophist-UK/Picard-Plugins/raw/master/musicbee_compatibility.py 1.0] || GPLv2 or later || See [http://forums.musicbrainz.org/viewtopic.php?id=4903 forum post] for details and support.<br />
|}<br />
<br />
=== Context Menu Items ===<br />
Note that not all plugins will add options to the "Plugins" section of the right click context menu you get on tracks, files and clusters. Plugins in the above list that do not add a context menu item should work automatically on all new metadata that is loaded into the right-hand pane, once they are enabled in the options.<br />
<br />
[[Category:MusicBrainz Picard]][[Category:WikiDocs Page]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=MusicBrainz_Picard/Plugins&diff=65876MusicBrainz Picard/Plugins2014-04-11T09:40:16Z<p>JonnyJD: /* Plugins */ removed "open in GUI"; implemented in core as of Picard 1.2 ("Open...")</p>
<hr />
<div>There are many plugins available for Picard. A number of these are written by the Picard developers, however many are written by users and enthusiasts. If you are having issues with a plugin, please check the [http://forums.musicbrainz.org/viewforum.php?id=2 forums] for answers and ask any questions.<br />
<br />
==Installation==<br />
===Simple method===<br />
This method works for any plugin that consist of a single .py file, unless special installation instructions are given. In that case refer to those and/or to the advanced method below.<br />
<br />
Though this tutorial has only been tested with the Windows version of Picard, procedure should be very similar with other operating systems.<br />
<br />
To install a plugin: <br />
# First of all, download the plugin (.py file) you want to install<br />
# Open Picard<br />
# Click ''Options'' in menu bar<br />
# Choose ''Options...'' to open preferences menu<br />
# Go to ''Plugins'' in the left pane<br />
# Click ''Install plugin...''<br />
# Locate the downloaded .py file and click ''Open''<br />
That's it, your plugin is now ready for use. The file has been copied by Picard to it's plugins folder (using Windows specifically <code><nowiki>%APPDATA%\MusicBrainz\Picard\plugins</nowiki></code>), it's safe to delete the plugin in your download folder.<br />
<br />
===Advanced method===<br />
To install a plugin: <br />
# download .py file(s)<br />
# create a 'plugins' directory (if not existing already) under <br />
## Windows: either <code><nowiki>C:\Program Files\Musicbrainz Picard\plugins</nowiki></code> (for default Picard application folder) or <code><nowiki>%APPDATA%\MusicBrainz\Picard\plugins</nowiki></code> <br />
## *Nix: either Picard application directory/plugins or <code><nowiki>~/.config/MusicBrainz/Picard/plugins</nowiki></code> <br />
## OSX: Follow These Steps:<br />
### Open a Terminal (can be found in: <code><nowiki>Applications/Utilities/Terminal</nowiki></code>)<br />
### type <code><nowiki>mkdir -p $HOME/.config/MusicBrainz/Picard/plugins</nowiki></code> (needs to be done only once)<br />
### type <code><nowiki>open $HOME/.config/MusicBrainz/Picard/plugins</nowiki></code> to display the folder in finder. Now move the plugins there.<br />
## Please note that some plugins need to be placed inside a separate subdirectory specific to the plugin. See the 'Notes' column below to see if this is required for the particular plugin you are installing.<br />
# Move downloaded .py file(s) to 'plugins' directory <br />
# Enable the plugin. Check the box beside the individual plugin in the plugins menu, which can be found at<br />
## Windows/*Nix: Options Menu >> Options... >> Plugins<br />
## OSX: MusicBrainz Picard >> Preferences >> Plugins<br />
<br />
==Creating Plugins==<br />
Please refer to the [[MusicBrainz Picard/Plugins/API|Picard plugin API]] documentation.<br />
<br />
==Plugins==<br />
<br />
{| border="1"<br />
|-<br />
| '''Name''' || '''Description''' || '''Author''' || '''Adds Context Menu Item?''' || '''Download / Compatibility''' || '''License''' || '''Known issues/Notes'''<br />
|-<br />
| ''' Disc Numbers''' || Moves ''(disc X)'' from releases titles into separate tags (''discnumber'' and ''discsubtitle''). || [[User:LukasLalinsky|Lukáš Lalinský]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/discnumber.py 0.9 - 1.0] || (unspecified) || -<br />
|-<br />
| '''Classic Disc Numbers''' || Reverts to pre-NGS (aka "Classic") behaviour by adding ''(disc X: discTitle)'' to release titles into separate tags (''discnumber'' and ''discsubtitle''). || [[User:LukasLalinsky|Lukáš Lalinský]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/classicdiscnumber.py 0.15 - 1.0] || (unspecified) || Broken in 0.15.1 (OK in later releases); workaround version of plugin available on forum [http://forums.musicbrainz.org/viewtopic.php?pid=14731#p14731 here].<br />
|-<br />
| '''Remove Feat. Artists from Titles''' || Removes ''(feat. Artist)'' parts from track titles. || [[User:LukasLalinsky|Lukáš Lalinský]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/featartist.py 0.9 - 1.0] || (unspecified) || - <br />
|-<br />
| '''Move Feat. Artists to Titles''' || Move "feat." from artist names to album and track titles. e.g. "A feat. B - Song" becomes "A - Song (feat. B)." || [[User:LukasLalinsky|Lukáš Lalinský]], [[User:Bitmap|Michael Wiencek]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/featartistsintitles.py 0.9 - 1.0] || (unspecified) || - <br />
|-<br />
| '''Title Case''' || Converts track and release titles to Title Case (capitalizes first character of every word) || Javier Kohen, [[User:LukasLalinsky|Lukáš Lalinský]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/titlecase.py 0.9 - 1.0] || GPLv2 || - <br />
|-<br />
| '''Cover Art Downloader''' || Downloads cover art for optional tag embedding and/or saving as a separate image file (using standard Options >> Cover Art Picard settings) || [[User:OliverCharles|Oliver Charles]], [[User:OutsideContext|Philipp Wolfer]] || No || [http://web.archive.org/web/20090527084503/http://users.musicbrainz.org/~luks/picard-qt/plugins/coverart.py 0.9 - 0.11] <br/> [http://users.musicbrainz.org/~outsidecontext/picard/plugins/coverart.py 0.12 - 0.14] <br/> [https://raw.github.com/musicbrainz/picard/release-1.1/contrib/plugins/coverart.py 0.15 - 1.1] <br /> Integrated in 1.2 || GPLv2 || -<br />
|-<br />
| '''Last.fm Tags''' || Use Last.fm tags as "genre" || [[User:LukasLalinsky|Lukáš Lalinský]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/lastfm/__init__.py 0.15 - 1.0 (file 1)]<br/>[http://users.musicbrainz.org/~luks/picard-plugins/lastfm/ui_options_lastfm.py 0.15 - 1.0 (file 2)] || (unspecified) || ''(copy both files to directory <code><nowiki>plugins/lastfm/</nowiki></code>)'' <br />
|-<br />
| '''Last.fm Plus''' || Use Last.fm tags as "grouping/genre/moods/occasions/countries/originalyear" and more. Modified version of above plugin. || [[User:RifRaf|RifRaf]], voiceinsideyou || No || [http://www.mediafire.com/?qlso9gc8c75aq5a 0.15 - 1.0] || (unspecified) || Unzip into plugins folder. (so you have plugins/lastfmplus/__init__.py etc) [[MusicBrainz Picard/Documentation/Plugins/Lastfmplus|Documentation]], [http://forums.musicbrainz.org/viewtopic.php?id=2949 forum thread]<br />
|-<br />
| '''Add Cluster As A Release''' || Adds right click option to an unmatched cluster to allow adding releases to MB based on tags. || [[User:LukasLalinsky|Lukáš Lalinský]], [[User:Foolip|Philip Jägenstedt]] || Yes || [https://raw.github.com/foolip/addrelease/master/addrelease.py 0.9 - 0.16] <br/> [http://users.musicbrainz.org/~luks/picard-plugins/addrelease.py 1.0] || GPLv2 or later || -<br />
|-<br />
| '''Generate Cuesheet''' || Generates a cuesheet from a release || [[User:LukasLalinsky|Lukáš Lalinský]] || Yes || [http://users.musicbrainz.org/~luks/picard-plugins/cuesheet.py 0.10 - 1.0] || (unspecified) || - <br />
|-<br />
| '''Release Type''' || Appends information to EPs and Singles such as " EP" or " (single)" (customisable, see file for details). Useful for separating releases with singles/EPs of the same name. || [[User:chancey|Elliot Chance]] || No || [https://bitbucket.org/chancey/musicbrainz-picard-release-type 0.9 - 0.10, 0.15] || (unspecified) || -<br />
|-<br />
| '''No Release''' || Do not store specific release information in releases of unknown origin. || [[User:Hrglgrmpf|hrglgrmpf]] || Yes || [http://users.musicbrainz.org/~luks/picard-plugins/no_release.py 0.15 - 1.0] || (unspecified) || See [http://forums.musicbrainz.org/viewtopic.php?id=2918&p=2 forum post] for details.<br />
|-<br />
| '''Search Plugins''' || Launch searches for clusters or releases to external non-MB websites from Picard || [[User:BrianFreud| Brian Schweitzer]] || Yes || [https://github.com/brianfreud/Picard-plugins 0.9 - 1.0] || (unspecified) || Plugins available for:<ul><br />
<li>All Music Guide<br />
<li>Amazon (supports: .ca, .com, .de, .fr, .jp, and .co.uk)<br />
<li>CastAlbums.org (musicals)<br />
<li>DiscogsFilmMusziek.be (film music)<br />
<li>eBay<br />
<li>Game Music Revolution (game soundtracks)<br />
<li>Google<br />
<li>The Lortel Archives (off-Broadway musicals)<br />
<li>SoundtrackCollector.org (soundtracks)<br />
<li>SoundtrackINFO (soundtracks)<br />
</ul><br />
|-<br />
| '''Change Encoding''' || Converts the tags of individual files or clusters between different character encodings. This is often necessary with files that have only ID3v1 tags in a non-Latin encoding. || [[User:foolip|Philip Jägenstedt]] || Yes || [https://raw.github.com/foolip/encoding/master/encoding.py 0.9 - 0.12] || GPLv2 or later || You will probably only need to change the ''target'' encoding. If the encoding you're looking for isn't in the list, you can type it in yourself and it will hopefully work. <br />
|-<br />
| '''Original Release Date''' || Set the original release date of a release by using the release events and "earliest release" advanced relationships. || [[User:OutsideContext|Philipp Wolfer]] || No || [http://users.musicbrainz.org/~outsidecontext/picard/plugins/originalreleasedate.py 0.12] || GPLv2 or later || Not needed for newer versions of Picard which support the %originaldate% tag directly.<br />
|-<br />
| '''Title sort names''' || Guess sortnames for track and album titles and adds as titlesort and albumsort tags. || [[User:Creap|Creap]] || No || [http://github.com/voiceinsideyou/creaps-picard-plugins/raw/master/titlesort.py 0.12 - 1.0] || (unspecified) || Checks language (English, Spanish, German, French, Italian, Swedish) and moves articles ("The", "Das", etc) to the end of the track/album title in the sort tags. <br />
|-<br />
| '''Title version''' || Moves song metadata such as "demo", "live" from titlesort to version tag. || [[User:Creap|Creap]] || No || [http://github.com/voiceinsideyou/creaps-picard-plugins/raw/master/titleversion.py 0.12 - 1.0] || (unspecified) || Searches titles for keywords like ''live'', ''demo'', ''mix'', etc, and moves it from titles to version tags.<br />
|-<br />
| '''$swapprefix function''' || Adds the $swapprefix(text, *prefixes) script function, which moves the specified prefixes to the end of the text. || [[User:OutsideContext|Philipp Wolfer]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/swapprefix.py 0.9 - 1.0] || GPLv2 or later || See this [http://forums.musicbrainz.org/viewtopic.php?id=2220 forum post] for details.<br />
|-<br />
| '''Lookup PUID''' || Adds the ability to lookup the PUID on MusicBrainz (useful in case there are several tracks linked with the same PUID) || WPME Hofland || Yes || [http://www.merijnhofland.info/mb/searchpuid.py 0.12] || (unspecified) || Note: Since October 15, 2013, MusicBrainz no longer stores PUIDs, so this plugin is non-functional.<br />
|-<br />
| '''TSO2''' || Set TSO2 as well as TXXX:ALBUMARTISTSORTORDER in ID3 tags, so album artist sort order works in iTunes and other players || Andrew Barnert || No || [http://picardplugins.googlecode.com/files/tso2-0.1.py 0.12] || (unspecified) || See this [http://forums.musicbrainz.org/viewtopic.php?id=2359 forum post] for details. Note: Included as standard functionality since Picard 0.15.1.<br />
|-<br />
| '''Add to iTunes''' || Mac OS X only! Add an album/track/etc. to iTunes. || Andrew Barnert || Yes || [http://picardplugins.googlecode.com/files/addtoitunes-0.1.py 0.12] || (unspecified) || See this [http://forums.musicbrainz.org/viewtopic.php?id=2361 forum post] for details.<br />
|-<br />
| '''The Sorting Plugin''' || Allows sorting of clusters and releases (i.e. both panes) through the right click "Plugins" menu. (can sort either Clusters or Releases by Artist or Title, and within a cluster by artist or title) || Aaron Lambers || Yes || [http://www.mediafire.com/?16ymlxoik6akmzk 0.12] || (unspecified) || See this [http://forums.musicbrainz.org/viewtopic.php?id=2489 forum post] for details. Note: Included as standard functionality since Picard 0.14.<br />
|-<br />
| '''Discnumber and Bonus disc''' || Combination of the discnumber and bonus disc plugin || WPME Hofland || No || [http://www.merijnhofland.info/mb/bonusdiscnumber.py 0.12] || (unspecified) || <br />
|-<br />
| '''Convert Typographic Punctuation''' || Replace hard-to-type-into-search-boxes fancy punctuation with Latin-1 equivalents || anonymous || No || [http://picardplugins.googlecode.com/files/converttypographicpunctuation-0.1.3.py 0.9 - 0.12] || [http://sam.zoy.org/wtfpl/ WTFPL] || See [http://forums.musicbrainz.org/viewtopic.php?id=2495 forum] and [http://bugs.musicbrainz.org/ticket/5834 bug ticket] for details.<br />
|-<br />
| '''Foobar2000 ReplayGain''' || Analyse your albums using the foobar2000 ReplayGain scanner. || [[User:Hrglgrmpf|hrglgrmpf]] || Yes || [http://github.com/weisslj/picardplugins/raw/master/f2k_rgscan.py 0.10 - 1.0] || (unspecified) || See [http://forums.musicbrainz.org/viewtopic.php?id=2564 forum post] for details.<br />
|-<br />
| '''MetaFlac ReplayGain''' || Analyse your albums using the MetaFlac ReplayGain scanner. || Olivier Kaloudoff || Yes || <!--http://kalou.net/unix/picard/metaflac_rgscan.py//-->[http://kraehen.org/mb/metaflac_rgscan.py 0.10 - 1.0] || (unspecified) || Tested only on Mac OSX / Feedback to kalou at kalou dot net<br />
|-<br />
|-<br />
| '''$eq2, $ne2 functions''' || Each plugin adds a new function to taggerscript, to allow comparison of a variable against more than one string.<br />
Example: set %engineer% to "test" if the artist is equal to "foo", "bar", or "baz":<br />
$if($eq2(%artist%,foo,bar,baz),$set(engineer,test))<br />
|| [[User:BrianFreud| Brian Schweitzer]] || No || [https://github.com/brianfreud/Picard-plugins 0.12 - 1.0] || (unspecified) || See [http://forums.musicbrainz.org/viewtopic.php?id=2631 forum post] for details.<br />
|-<br />
| '''$p function''' || Adds an $p(string, unofficial) function to taggerscript. This works like the inverse of a \p{foo} regex using Unicode properties. In other words, it tells you what script a character belongs to. <br />
Usage:<br />
$p(%something%)<br />
$p(%something%, True)<br />
The second argument is optional. By default, it is set to False. When set to True, unofficial Unicode scripts (i.e. ConScript, etc.) are also checked.<br />
|| [[User:BrianFreud| Brian Schweitzer]] || No ||[https://github.com/brianfreud/Picard-plugins 0.12 - 1.0] || (unspecified) || See [http://forums.musicbrainz.org/viewtopic.php?id=2631 forum post] for details.<br />
|-<br />
| '''Remove Perfect albums''' || Remove "Perfect" matches from album list i.e. all tracks matched and tags saved. || ichneumon || Yes || [https://github.com/voiceinsideyou/picard/raw/plugins/contrib/plugins/removeperfectalbums.py 0.15 - 1.0] || (unspecified) || See [http://forums.musicbrainz.org/viewtopic.php?id=2555 forum post] for details.<br />
|-<br />
| '''Autosave complete albums''' || Save albums with 4+ tracks and 90%+ confidence on all tracks, then remove them from the album list. Useful when importing a big, relatively well-tagged collection. || encukou || Yes || [https://raw.github.com/encukou/picard-plugins/master/autosave.py 0.15 - 1.0] || (unspecified) || See [http://forums.musicbrainz.org/viewtopic.php?pid=17270 forum post] for details.<br />
|-<br />
| '''Sidecars''' || Stores and retrieves metadata in "sidecar" files so that changes can be staged. || [[User:Tony70|Tony Flaks]] || Yes || [http://sites.google.com/site/tonyflaks/sidecar.py 0.14] || (unspecified) || See [http://wiki.musicbrainz.org/User:Tony70/SidecarPlugin wiki page] for details.<br />
|-<br />
| '''View Variables''' || Allows you to view all the script variables associated with a track or file in a dialog box. || Sophist || Yes || [https://github.com/Sophist-UK/Picard-Plugins/raw/master/viewvariables.zip 1.0] || GPLv2 or later || See [http://forums.musicbrainz.org/viewtopic.php?id=4886 forum post] for details and support.<br />
|-<br />
| '''Abbreviate artist-sort''' || Abbreviates artist forenames in the albumartistsort and artistsort tags e.g. "Vivaldi, Antonio" becomes "Vivaldi, A.". This is likely to be of interest for classical albums where the albumartistsort string can be very long. || Sophist || Yes || [https://github.com/Sophist-UK/Picard-Plugins/raw/master/abbreviate_artistsort.py 1.0] || GPLv2 or later || See [http://forums.musicbrainz.org/viewtopic.php?id=4893 forum post] for details and support.<br />
|-<br />
| '''Copy to Comment''' || Some music players are unable to display the standard tags produced by Picard for Composer, Performers etc. This plugin copies this data to the default Comment so that these players can (hopefully) display this information. || d2freak and Sophist || Yes || [https://github.com/Sophist-UK/Picard-Plugins/raw/master/copy_to_comment.py 1.0] || GPLv2 or later || See [http://forums.musicbrainz.org/viewtopic.php?id=4895 forum post] for details and support.<br />
|-<br />
| '''Album Artist Website''' || Unfortunately, MusicBrainz does not supply the Artists Official Homepage url when Picard requests details for an album, and so the 'website variable and id3 WOAR tag cannot be populated. This plugin makes an additional request to MusicBrainz to get this information and loads it into the 'website' variable. || d2freak and Sophist || Yes || [https://github.com/Sophist-UK/Picard-Plugins/raw/master/albumartist_website.py 1.0] || GPLv2 or later || See [http://forums.musicbrainz.org/viewtopic.php?id=4906 forum post] for details and support.<br />
|}<br />
<br />
=== Context Menu Items ===<br />
Note that not all plugins will add options to the "Plugins" section of the right click context menu you get on tracks, files and clusters. Plugins in the above list that do not add a context menu item should work automatically on all new metadata that is loaded into the right-hand pane, once they are enabled in the options.<br />
<br />
[[Category:MusicBrainz Picard]][[Category:WikiDocs Page]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=MusicBrainz_Server/Setup&diff=65649MusicBrainz Server/Setup2014-02-27T09:59:29Z<p>JonnyJD: /* Running Replication */ add notes about fixing replication</p>
<hr />
<div>== MusicBrainz Server virtual machine ==<br />
<br />
Running a MusicBrainz Server as a virtual machine requires some Linux knowledge, but it is vastly simpler than installing the server from scratch. The pre-built virtual image can be imported into either VirtualBox or VMware. If you are using Amazon EC2 you can not use this virtual image and will instead have to follow the steps outlined in the source code [https://github.com/metabrainz/musicbrainz-server/blob/master/INSTALL.md INSTALL.md]. To set up a virtual machine instance, download the torrent file and follow these steps:<br />
<br />
<div style="background-color:#FFFAF5; border: 1px solid #FFDAA4; padding:10px 20px; width: 400px; margin: 20px 20px 20px 0"><br />
'''MusicBrainz Server Virtual Machine (Virtual Box)<br /><br />
BitTorrent Download: [ftp://mayhemchaos.org/pub/musicbrainz/vm/musicbrainz-server-2013-10-14.ova.torrent musicbrainz-server-2013-10-14.ova.torrent]<br /><br />
Size: 106Kb<br/><br />
Version: 2013-10-14<br /><br />
</div><br />
<br />
<div style="background-color:#FFFAF5; border: 1px solid #FFDAA4; padding:10px 20px; width: 400px; margin: 20px 20px 20px 0"><br />
'''MusicBrainz Server Virtual Machine (Virtual Box)<br /><br />
FTP Download: [ftp://mayhemchaos.org/pub/musicbrainz/vm/musicbrainz-server-2013-10-14.ova musicbrainz-server-2013-10-14.ova]<br /><br />
Size: 10GB Open Virtualization Archive (OVA)<br/><br />
(the extracted virtual drive is then 27 GB and can extend up to 40 GB)<br/><br />
Version: 2013-10-14<br /><br />
MD5: <small>191871ea1ebb50284cb3b14061ebd064</small><br />
</div><br />
<br />
<div style="background-color:#FFFAF5; border: 1px solid #FFDAA4; padding:10px 20px; width: 400px; margin: 20px 20px 20px 0"><br />
'''MusicBrainz Server Virtual Machine (VMWare)<br /><br />
BitTorrent Download: [ftp://mayhemchaos.org/pub/musicbrainz/vm/musicbrainz-server-vmware-2013-10-14.ova.torrent musicbrainz-server-vmware-2013-10-14.ova.torrent]<br /><br />
Size: 87Kb<br/><br />
Version: 2013-10-14<br /><br />
</div><br />
<br />
<div style="background-color:#FFFAF5; border: 1px solid #FFDAA4; padding:10px 20px; width: 400px; margin: 20px 20px 20px 0"><br />
'''MusicBrainz Server Virtual Machine (VMWare)<br /><br />
FTP Download: [ftp://mayhemchaos.org/pub/musicbrainz/vm/musicbrainz-server-vmware-2013-10-14.ova musicbrainz-server-vmware-2013-10-14.ova]<br /><br />
Size: 8.7GB Open Virtualization Archive (OVA)<br/><br />
(the extracted virtual drive is then 27 GB and can extend up to 40 GB)<br/><br />
Version: 2013-10-14<br /><br />
MD5: <small>d6b158ce3bef40e13943f23d4cc28a9b</small><br />
</div><br />
<br />
=== Running with VMware ===<br />
# Start VMWare Player/VMWare Fusion and choose ''Import...'' from the File menu. Select the downloaded file.<br />
# Once VMWare has imported the file, select the imported virtual machine from the list of virtual machines and click on Start/Play.<br />
<br />
=== Running with VirtualBox ===<br />
# Start VirtualBox and choose ''Import Appliance'' from the File menu. Select the downloaded file.</strike><br />
# Once VirtualBox has imported the appliance, select the imported virtual machine from the list of virtual machines and click on Start.<br />
<br />
=== Running with QEMU/KVM ===<br />
<br />
# Extract the disk image: <pre>tar -xf musicbrainz-server-2013-10-14.ova</pre><br />
# Covert it from VMWare format: <pre>qemu-img convert -O qcow2 musicbrainz-server-2013-10-14-disk1.vmdk /var/lib/libvirt/images/musicbrainz-server-2013-10-14-disk1.qcow2</pre><br />
# Create and start the new VM: <pre>virt-install --ram 1024 --os-type=linux --os-variant=ubuntuprecise --name musicbrainz-server-2013-10-14 --import --disk /var/lib/libvirt/images/musicbrainz-server-2013-10-14-disk1.qcow2</pre><br />
<br />
=== Using the VM ===<br />
# Once the instance has started up, log in on the console using the username ''vm'' and password ''musicbrainz''. This account has sudo privileges -- if you would like to set a root password, you can do that via sudo.<br />
# You can SSH into the machine via the port 2222 on localhost of the host OS. (e.g. ssh -p 2222 localhost )<br />
# To access the MusicBrainz web site and web service, go to: http://localhost:5000<br />
# To access the Search Server web service, go to: http://localhost:8080<br />
<br />
=== Tuning your VM ===<br />
<br />
We recommend that you give your VM 2GB of ram, if that is possible. The more RAM you give to the VM, the faster it is going to run. To change the memory settings, you will need to shut down the VM, change the settings and then re-start the VM. The Postgres database will be automatically tuned based on the available RAM when the VM starts up.<br />
<br />
=== Running Replication ===<br />
<br />
''note:'' The replication for the current VM might not work. Details on how to fix this are in [http://blog.musicbrainz.org/2013/12/05/important-update-on-replication/ this blog post].<br />
<br />
This VM comes "replication ready". To enable replication, and have the database catch up with the latest replication packets, do this:<br />
bin/replicate now<br />
<br />
This will load all of the changes to the database since the VM update.<br />
<br />
NOTE: Loading replication changes might take a long time. If the VM is more than a couple of weeks old, it might be better for you to import a [[MusicBrainz Database/Download|fresh data set]]. Drop pre-filled database using command <pre>dropdb musicbrainz_db</pre> and check [https://github.com/metabrainz/musicbrainz-server/blob/master/INSTALL.md the INSTALL.md file] for how to import new data.<br />
<br />
=== Automating Replication ===<br />
<br />
To turn on background replication, run:<br />
<br />
bin/replicate start<br />
<br />
to turn it off:<br />
<br />
bin/replicate stop<br />
<br />
We recommend leaving replication off for the time being, until you've built search indexes for the VM.<br />
<br />
=== Building search indexes ===<br />
<br />
The VM comes with support to build search indexes. In order to build the indexes, log in to the account and then:<br />
<br />
bin/reindex<br />
<br />
Depending on your machine, this may take quite a long time. We recommend that you leave this running overnight. After the indexes are complete, you should be able to carry out indexed searches in your VM.<br />
<br />
=== Accessing the database ===<br />
<br />
To access the main postgres database, you can do this:<br />
<br />
sudo su - musicbrainz<br />
cd musicbrainz-server/admin<br />
./psql READWRITE<br />
<br />
If you would like to access the DB from outside the virtual box, take a look at [http://www.cyberciti.biz/tips/postgres-allow-remote-access-tcp-connection.html how to change postgres connection settings].<br />
<br />
=== Turning the VM into development box ===<br />
<br />
If you would like to use the VM to do development instead of using it as a simple database slave, you'll need to edit lib/DBDefs.pm and set REPLICATION_TYPE to RT_STANDALONE and run admin/psql READWRITE and execute the following queries:<br />
<br />
DELETE FROM annotation WHERE editor > (SELECT max(id) FROM editor);<br />
DELETE FROM release_annotation WHERE NOT EXISTS (SELECT 1 FROM annotation WHERE annotation.id = release_annotation.annotation);<br />
<br />
then from the command line execute:<br />
<br />
admin/psql READWRITE < admin/sql/CreateFKConstraints.sql<br />
admin/psql READWRITE < admin/sql/CreateFunctions.sql<br />
<br />
TODO: The server will probably run out of disk space during this process. We need to add instructions on how to move the DB to a new partition.<br />
<br />
== Migrating the MusicBrainz Server from a Virtual Machine to a Physical Machine ==<br />
Taken from [http://askubuntu.com/questions/32499/migrate-from-a-virtual-machine-vm-to-a-physical-system AskUbuntu].<br />
<br />
It is possible to migrate the MusicBrainz Server image (or any virtual image) from a virtual machine onto bare metal, should you desire to.<br />
<br />
=== Requirements ===<br />
* A LiveCD or LiveUSB (this walkthrough will assume you are using a Ubuntu variant as that is what the image is based on.) '''If you are using an image from 2013-08-01 or earlier, you must have a Ubuntu 12.04.1 Live media.'''<br />
* USB media large enough to store the raw disk image for writing on a new computer.<br />
* Patience<br />
<br />
=== Step 1: Converting the Disk to a Raw format ===<br />
This step is included mostly for the sake of convenience. By doing some prep work on the image before writing, standard Linux tools can be used to write to and manipulate the disk afterwards. This can be done from your current host environment without booting to your LiveCD.<br />
* Load a terminal<br />
cd /path/to/image/ <br />
# for VMWare<br />
sudo apt-get install qemu-kvm<br />
qemu-img convert your-vmware-disk.vmdk -O raw disk.img<br />
# For VirtualBox<br />
VBoxManage internalcommands converttoraw your-virtualbox-disk.vdi disk.img<br />
<br />
* Move <code>disk.img</code> to somewhere that you're not about to write to. If your target is another physical machine, then an external medium is probably the most convenient way to move the image. These instructions assume that you have moved it to <code>/media/external/disk.img</code>. Adjust accordingly.<br />
* Before you do anything permanent, '''make sure you do backups'''. These instructions will erase anything on the target disk or partition. It's better to be safe than sorry.<br />
<br />
=== Option 1: Write the Image to it's Own Disk ===<br />
'''This assumes that you're going to overwrite an entire disk'''. This is the most ideal situation since the server will have an entire disk to work with. If you're looking to have the image installed along side an existing operating system, skip to Option 2.<br />
* Boot into your LiveCD and Click Try Ubuntu.<br />
* Mount the volume where <code>disk.img</code> resides to somewhere safe (like /media/external).<br />
* Determine which volume is your target using a command like <code>lsblk</code> or <code>blkid</code><br />
* Then we copy the contents of the image to the drive Replace <code>sdX</code> with the correct destination disk. The password for <code>sudo</code> is blank.<br />
sudo dd if=/media/external/disk.img of=/dev/sdX<br />
* After this has finished, you can use <code>gparted</code> or another utility to manipulate the partition table to the desired layout. It is recommended to have a sizeable swap partition (see [http://www.cyberciti.biz/tips/linux-swap-space.html this article] for some recommendations on how big it should be) as well as expand the root partition to use all remaining available space on the disk. If you desire a seperate boot partition for the system as well, set aside some space here. (Steps for this can be found [https://help.ubuntu.com/community/BootPartition in the Ubuntu community documentation])<br />
* '''If you are using an image from 2013-08-01 or earlier, please see [[ChangingKernelVersions|here]]'''.<br />
<br />
=== Option 2: Installing the Image Alongside Another OS ===<br />
This is potentially safer than the above method and is very similar. Your LiveCD '''must be the same Ubuntu version as the virtual image.'''<br />
* Boot into the LiveCD and click Install Ubuntu.<br />
* Follow the installer prompts, repartition things as you see fit. When the installer finishes, it will ask you to reboot. Do not reboot. You must be in the Live environment for the next instructions.<br />
* Mount your new Ubuntu install (target) and your external disk where you stored <code>disk.img</code> earlier.<br />
* Mount <code>disk.img</code>.<br />
sudo mkdir /media/oldinstall<br />
sudo mount -o loop /media/external/disk.img /media/oldinstall<br />
* From there you can either cherry pick files or copy over everything on top of your target. For example, using <code>rsync</code>:<br />
sudo rsync /media/oldinstall /media/newinstall<br />
* Reboot and you ''should'' be greeted by your virtual machine, but on bare metal. If you have GRUB errors, see [https://help.ubuntu.com/community/Grub2#Reinstalling%20GRUB%202 this article from the Ubuntu community documentation]<br />
<br />
=== <div id="ChangingKernelVersions">Changing Kernel Versions</div> ===<br />
Parts taken from [https://help.ubuntu.com/community/Grub2/Installing#via_ChRoot the Ubuntu community documentation].<br />
<br />
For images from 2013-08-01 and older, you will need to change the kernel flavour from -virtual to -generic. The -virtual kernel flavour is lighter, but only supports hardware typically seen in virtual environments while -generic provides support for a wider range of hardware, such as what you would see in a physical server. Both of these versions are provided in the default Ubuntu repositories.<br />
* Boot into your LiveCD. Click "Try Ubuntu"<br />
* Open a terminal.<br />
* Determine which disk is yours using a command like <code>sudo lsblk</code> or <code>sudo blkid</code>.<br />
* Mount your root partition. '''X''' is the drive letter and '''Y''' is the partition number:<br />
sudo mount /dev/sdXY /mnt<br />
** If you have a seperate boot partition, mount it as well ('''Z''' is the boot partition number):<br />
sudo mount /dev/sdXZ /mnt/boot<br />
* Mount the virtual filesystems using the following single command:<br />
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done<br />
* Chroot into your installation<br />
sudo chroot /mnt<br />
* Install the latest -generic image and headers by installing the metapackage. This will regenerate GRUB's configuration.<br />
sudo apt-get install linux-image-generic linux-header-generic<br />
* Purge the -virtual image and headers. This should also regenerate GRUB's configuration:<br />
sudo apt-get purge --auto-remove linux-image-virtual linux-header-virtual<br />
* Check for leftover -virtual images in <code>/boot</code>. If you find any, remove them and then run <code>sudo update-grub</code><br />
* Reboot into your installation.<br />
<br />
== Setup MusicBrainz Server from source code ==<br />
This can potentially be a very laborious and time consuming method of getting a functioning MusicBrainz server. Using the virtual machine is recommended.<br />
<br />
Get a copy of musicbrainz-server from git: <br />
git clone --recursive https://github.com/metabrainz/musicbrainz-server.git musicbrainz-server<br />
cd musicbrainz-server<br />
And follow the instructions in the [https://github.com/metabrainz/musicbrainz-server/blob/master/INSTALL.md INSTALL] file.<br />
<br />
== Support ==<br />
<br />
The setup process may look daunting, but please don't let this discourage you; the INSTALL is thorough and contains a lot of information, and we are willing to provide assistance. If you have questions about installing, join us in the [http://webchat.freenode.net/?channels=musicbrainz-devel #musicbrainz-devel IRC channel] or post a question on the [[Developers Mailing List|developers mailing list]] and we will attempt to help you out.<br />
<br />
We recommend that you dive in and give it a try - who knows how far you'll get and what you might learn along the way!<br />
<br />
==Requirements==<br />
<br />
In order to set up a running MusicBrainz server with the full database you will need:<br />
* A linux box, preferably Ubuntu.<br />
* 20GB+ of free disk space, (if you are a developer and only want the server code and database structure somewhat less should do).<br />
* [[Git]] knowledge which will enable you to check out the source code.<br />
* PostgreSQL 9.1 or later<br />
<br />
As a developer the following knowledge/skills are beneficial:<br />
* Perl and a number of perl modules, PostgreSQL, nginx.<br />
* How to compile and install packages from source on a Linux box. <br />
* How to patch existing packages, although we can help you out if you have questions about that.<br />
<br />
Note: The server has ''never been ported to Windows'', and we suspect that it would be a fair amount of work to make that happen.<br />
<br />
==External Links==<br />
* [https://github.com/metabrainz/musicbrainz-server MusicBrainz Server] on GitHub<br />
* List of [http://blog.musicbrainz.org/category/server/?tag=changelog server updates] on the MusicBrainz blog<br />
* List of supplemental [http://blog.musicbrainz.org/category/server/?tag=instructions instructions] on the MusicBrainz blog<br />
* List of [http://blog.musicbrainz.org/category/virtual-machine/ VM releases] on the MusicBrainz blog<br />
<br />
[[Category:WikiDocs Page]] [[Category:Download]] [[Category:Development]] [[Category:Server]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=MusicBrainz_Picard&diff=65547MusicBrainz Picard2014-02-14T23:30:25Z<p>JonnyJD: /* Development */ add link to darwin builds</p>
<hr />
<div><small>[[Products]] > MusicBrainz Picard </small> <br />
<br />
{| class="wikitable" style="float: right; margin: 0 0 10px 10px"<br />
| [[Image:picard_demo_500.png]]<br />
|}<br />
<br />
'''MusicBrainz Picard''' is a cross-platform (Linux/Mac OS X/Windows) application written in Python and is the official MusicBrainz tagger.<br />
<br />
Picard supports the majority of audio file formats, is capable of using audio fingerprints ([[AcoustID]]s), performing CD lookups and [[Disc ID|disc ID]] submissions, and it has excellent Unicode support. Additionally, there are several [[Picard Plugins|plugins]] available that extend Picard's features.<br />
<br />
When tagging files, Picard uses an album-oriented approach. This approach allows it to utilize the MusicBrainz data as effectively as possible and correctly tag your music. For more information, see the [[How To Tag Files With Picard|illustrated quick start guide to tagging]].<br />
<br />
Picard is named after Captain Jean-Luc Picard from the TV series ''Star Trek: The Next Generation''.<br />
<br />
== Download ==<br />
<br />
<br />
<div style="background-color:#FFFAF5; border: 1px solid #FFDAA4; padding:10px 20px; width: 360px; margin: 20px 20px 20px 0"><br />
'''MusicBrainz Picard for Windows <br /><br />
Download: [http://ftp.musicbrainz.org/pub/musicbrainz/picard/picard-setup-1.2.exe picard-setup-1.2.exe]<br /><br />
EU mirror: [http://mirrors.dotsrc.org/MusicBrainz/picard/picard-setup-1.2.exe picard-setup-1.2.exe]<br /><br />
Size: 8.4M installer<br/><br />
Version: 1.2 <br /><br />
MD5: <small>87662658e404e666f8ee506e53771741</small><br />
</div><br />
<br />
<div style="background-color:#FFFAF5; border: 1px solid #FFDAA4; padding: 10px 20px; width: 360px; margin: 0 20px 20px 0;"><br />
'''MusicBrainz Picard for Mac OS X 10.7+ (x86_64)<br /><br />
Download: [ftp://ftp.musicbrainz.org/pub/musicbrainz/picard/MusicBrainz-Picard-1.2-x86_64.dmg MusicBrainz-Picard-1.2-x86_64.dmg]<br /><br />
EU mirror: [http://mirrors.dotsrc.org/MusicBrainz/picard/MusicBrainz-Picard-1.2-x86_64.dmg MusicBrainz-Picard-1.2-x86_64.dmg]<br /><br />
Size: 14M <br /><br />
Version: 1.2 <br /><br />
MD5: <small>605a40e9c168a00c9cb000b913afade3</small><br />
</div><br />
<br />
<div style="background-color:#FFFAF5; border: 1px solid #FFDAA4; padding: 10px 20px; width: 360px; margin: 0 20px 20px 0;"><br />
'''MusicBrainz Picard for Mac OS X 10.4–10.6 (i386)<br /><br />
Download: [ftp://ftp.musicbrainz.org/pub/musicbrainz/picard/MusicBrainz-Picard-1.2.dmg MusicBrainz-Picard-1.2.dmg]<br /><br />
EU mirror: [http://mirrors.dotsrc.org/MusicBrainz/picard/MusicBrainz-Picard-1.2.dmg MusicBrainz-Picard-1.2.dmg]<br /><br />
Size: 13M <b>intel only binary</b> <br /><br />
Version: 1.2 <br /><br />
MD5: <small>db8c5c9f1221b11904305d3e280421bb</small><br />
</div><br />
<br />
<div style="background-color:#FFFAF5; border: 1px solid #FFDAA4; padding: 10px 20px; width: 360px; margin-bottom: 20px;"><br />
'''MusicBrainz Picard source code <br /><br />
Download: [http://ftp.musicbrainz.org/pub/musicbrainz/picard/picard-1.2.tar.gz picard-1.2.tar.gz]<br /><br />
EU mirror: [http://mirrors.dotsrc.org/MusicBrainz/picard/picard-1.2.tar.gz picard-1.2.tar.gz]<br /><br />
Size: 1.7M tarball <br /><br />
Version: 1.2<br /><br />
MD5: <small>d1086687b7f7b0d359a731b1a25e7b66</small><br />
</div><br />
<br />
A list of changes for version 1.2 can be found in the [http://blog.musicbrainz.org/?p=1856 musicbrainz blog].<br />
<br />
For Windows users: If you get an error about being unable to run the program, install the [http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en Microsoft Visual C++ 2008 Redistributable Package (x86)].<br />
<br />
For earlier releases of Picard, [http://ftp.musicbrainz.org/pub/musicbrainz/picard/?C=M;O=D browse the FTP server].<br />
<br />
== Linux Distributions ==<br />
<br />
Picard is also available in many distributions' software repositories. (Using Fedora? [[Picard_FAQ#I_am_using_Fedora.2C_why_doesn.27t_acoustic_fingerprinting_work.3F|See the FAQ]].)<br />
<br />
* Ubuntu: [https://launchpad.net/~musicbrainz-developers/+archive/stable MusicBrainz stable PPA] &middot; [https://launchpad.net/~musicbrainz-developers/+archive/daily MusicBrainz daily PPA]<br />
* Arch Linux: [https://www.archlinux.org/packages/community/x86_64/picard/ community] &middot; [https://aur.archlinux.org/packages.php?ID=52460 AUR]<br />
* Gentoo: emerge [http://packages.gentoo.org/package/media-sound/picard media-sound/picard]<br />
<br />
== Documentation ==<br />
<br />
'''Getting started''':<br />
* [[How To Tag Files With Picard|Illustrated quick start guide to tagging]]<br />
* [[/Documentation|Picard documentation]]<br />
* [[/FAQ|Picard FAQ]]<br />
* [[MusicBrainz Picard/Troubleshooting|Picard troubleshooting]]<br />
<br />
'''Customization''':<br />
* [[/Plugins|Picard plugins]]<br />
* [[/Plugins/API|Picard plugins API]]<br />
* [[/Documentation/Scripting|Picard scripting]]<br />
* [[/Tags|Picard tags]]<br />
<br />
== Need further help? ==<br />
<br />
If you need help or have any questions about using Picard, you can turn to the [[Users Mailing List|users mailing list]] or the [[MusicBrainz Forum|forum]]. If you think you have found a bug, please see the [[MusicBrainz Picard/Troubleshooting|troubleshooting]] page. In other cases you can [[Contact Us|contact us]].<br />
<br />
== Development ==<br />
<br />
The source code of Picard is maintained in Git and you can get it with all its history using: <br />
<br />
git clone git://github.com/musicbrainz/picard.git<br />
<br />
or you can fork or clone the mirrored [https://github.com/musicbrainz/picard repo from GitHub] in the normal GitHub way. Pull requests and discussion on GitHub is generally preferred and all such requests will be considered.<br />
<br />
If you are interested in providing development assistance, contact us by either posting on the [[Developers Mailing List|developers mailing list]] or joining the #musicbrainz-devel IRC channel on irc.freenode.net.<br />
<br />
If you want to install Picard from source on Windows, there is [[How to Build Picard for Windows]].<br />
Lukáš Lalinský provides [http://build.oxygene.sk/job/package-picard-win-daily/ daily Picard builds for Windows], if you want to test the latest development version of Picard on Windows.<br />
<br />
For Mac there is [[User:Bitmap/Building Picard on OS X|Bitmap/Building Picard on OS X]] and also [http://build.oxygene.sk/job/package-picard-osx-daily/ daily builds for OS X].<br />
<br />
== License ==<br />
<br />
Picard is licensed under the [http://www.gnu.org/copyleft/gpl.html GPL 2.0 or later].<br />
<br />
__NOTOC__<br />
[[Category:MusicBrainz Picard]] [[Category:Products]] [[Category:Download]] [[Category:WikiDocs Page]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=User:Reosarevok/Place_types&diff=65487User:Reosarevok/Place types2014-01-27T15:50:10Z<p>JonnyJD: /* If yes, should Stadium and Arena be added as one type, or as two? */ comment</p>
<hr />
<div>Hi! I had an RFV for adding a "Stadium/Arena" type for places technically pass yesterday, but there didn't seem to be much consensus on whether to add it, and how. So I'm making a small "poll" to find out what most people would actually prefer! :)<br />
<br />
==Should we have extra place types at all?==<br />
'''Yes'''<br />
<br />
* [[User:Reosarevok|Reosarevok]] ([[User talk:Reosarevok|talk]]) 10:27, 25 January 2014 (UTC)<br />
* [[User:SultS|SultS]]<br />
* [[User:Nikki|Nikki]] ([[User talk:Nikki|talk]]) 12:27, 25 January 2014 (UTC)<br />
* [[User:LordSputnik|LordSputnik]]<br />
* --[[User:Mineo|Mineo]] ([[User talk:Mineo|talk]]) 13:55, 25 January 2014 (UTC)<br />
* --[[User:Lixobix|Lixobix]] ([[User talk:Lixobix|talk]]) 14:41, 25 January 2014 (UTC)<br />
* [[User:ListMyCDs.com|ListMyCDs.com]] ([[User talk:ListMyCDs.com|talk]]) 19:58, 25 January 2014 (UTC)<br />
* <strike>[[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 10:10, 27 January 2014 (UTC)</strike><br />
<br />
'''No'''<br />
* [[User:Caller number six|Caller_number_six]] ([[User talk:Caller number six|talk]]) 19:25, 25 January 2014 (UTC) — More accurately, "Not in a way that leads to a long, unwieldy list." <br />
* — [[jesus2099]] ♬ 23:25, 26 January 2014 (UTC)<br />
<br />
'''Abstain'''<br />
<br />
* [[User:warp|warp]]<br />
* [[User:Monxton|Monxton]] ([[User talk:Monxton|talk]]) 06:37, 27 January 2014 (UTC) - I'm not entirely against expanding the list, but I want new types to be very clearly defined<br />
* [[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 15:47, 27 January 2014 (UTC) - I am not strongly against it, but we should be *very* careful not to add arbitrary types. The distinction between a studio and a venue is relevant, others might not. General info like indoor/outdoor, number of seats, accessibility might be more interesting and adding them as attributes might be better.<br />
<br />
==If yes, should Stadium and Arena be added as one type, or as two?==<br />
'''One'''<br />
* [[User:LordSputnik|LordSputnik]]<br />
*[[User:Caller number six|Caller_number_six]] ([[User talk:Caller number six|talk]]) 19:25, 25 January 2014 (UTC) — Less is more :-)<br />
* [[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 10:10, 27 January 2014 (UTC) - we don't distinguish between open air and indoor venues<br />
**I would like an indoor/outdoor attribute, which would make the distinction between stadium and arena redundant --[[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 15:20, 27 January 2014 (UTC)<br />
<br />
<br />
<br />
'''Two'''<br />
<br />
* [[User:SultS|SultS]]<br />
* [[User:Nikki|Nikki]] ([[User talk:Nikki|talk]]) 12:27, 25 January 2014 (UTC)<br />
* --[[User:Lixobix|Lixobix]] ([[User talk:Lixobix|talk]]) 14:44, 25 January 2014 (UTC) There are cases where there are two separate venues in the same location, e.g. Wembley Stadium and Wembley Arena.<br />
** They would be separate venues and have a different name. Nothing wrong with that. --[[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 15:50, 27 January 2014 (UTC)<br />
* 2 different things. Stadium is for outdoor sports and an arena is for indoor sports. [[User:ListMyCDs.com|ListMyCDs.com]] ([[User talk:ListMyCDs.com|talk]]) 19:58, 25 January 2014 (UTC)<br />
<br />
'''Unsure'''<br />
<br />
* [[User:Reosarevok|Reosarevok]] ([[User talk:Reosarevok|talk]]) 10:27, 25 January 2014 (UTC)<br />
* I'm not really sure what the difference between them is: [[wikipedia:Stadium]] suggests we germans name our stadiums "XXX Arena" and [[wikipedia:Arena]] suggests they're sometimes used synonymously. Is the difference that Arenas have a roof over everything while Stadiums do not? --[[User:Mineo|Mineo]] ([[User talk:Mineo|talk]]) 13:55, 25 January 2014 (UTC)<br />
** Like ListMyCDs mentioned, I would call outdoor ones stadiums, indoor ones arenas (perhaps "indoor arena" would be a better name to use, that's what Wikipedia seems to prefer at least). Sometimes people use them interchangeably, but there are stadiums in Germany which are called "Stadion" rather than "Arena", e.g. the first two German stadiums that came to mind for me both are - [[wikipedia:de:Rewirpowerstadion]], [[wikipedia:de:RheinEnergieStadion]]. --[[User:Nikki|Nikki]] ([[User talk:Nikki|talk]]) 15:01, 26 January 2014 (UTC)<br />
* [[User:Monxton|Monxton]] ([[User talk:Monxton|talk]]) 06:37, 27 January 2014 (UTC) - I didn't previously understand the distinction, but according to other statements here it's that a Stadium is outdoors and an Arena is indoors. If so, I can see an argument for adding a Stadium (outdoor) type. Though there are still questions like what if its a stadium with a retracting roof? However for an indoor arena, how am I going to distinguish that from, say, an exhibition hall or other multipurpose space? I think it's just a Venue.<br />
<br />
==If not, should we use Venue or Other for stadiums and arenas?==<br />
'''Venue'''<br />
<br />
* [[User:SultS|SultS]]<br />
* [[User:warp|warp]]<br />
* [[User:LordSputnik|LordSputnik]]<br />
* [[User:Caller number six|Caller_number_six]] ([[User talk:Caller number six|talk]]) 19:25, 25 January 2014 (UTC) — This is point I feel strongest about. "Venue" is a broad term.<br />
* — [[jesus2099]] ♬ 23:25, 26 January 2014 (UTC)<br />
* [[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 10:10, 27 January 2014 (UTC) - I honestly was using venue already..<br />
<br />
'''Other'''<br />
<br />
* [[User:Reosarevok|Reosarevok]] ([[User talk:Reosarevok|talk]]) 10:27, 25 January 2014 (UTC)<br />
<br />
'''Unsure'''<br />
* [[User:Nikki|Nikki]] ([[User talk:Nikki|talk]]) 12:27, 25 January 2014 (UTC)<br />
* [[User:Monxton|Monxton]] ([[User talk:Monxton|talk]]) 06:37, 27 January 2014 (UTC) Other for stadia, Venue for arenas.</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=User:Reosarevok/Place_types&diff=65486User:Reosarevok/Place types2014-01-27T15:47:39Z<p>JonnyJD: changing my vote to abstain (adding more types)</p>
<hr />
<div>Hi! I had an RFV for adding a "Stadium/Arena" type for places technically pass yesterday, but there didn't seem to be much consensus on whether to add it, and how. So I'm making a small "poll" to find out what most people would actually prefer! :)<br />
<br />
==Should we have extra place types at all?==<br />
'''Yes'''<br />
<br />
* [[User:Reosarevok|Reosarevok]] ([[User talk:Reosarevok|talk]]) 10:27, 25 January 2014 (UTC)<br />
* [[User:SultS|SultS]]<br />
* [[User:Nikki|Nikki]] ([[User talk:Nikki|talk]]) 12:27, 25 January 2014 (UTC)<br />
* [[User:LordSputnik|LordSputnik]]<br />
* --[[User:Mineo|Mineo]] ([[User talk:Mineo|talk]]) 13:55, 25 January 2014 (UTC)<br />
* --[[User:Lixobix|Lixobix]] ([[User talk:Lixobix|talk]]) 14:41, 25 January 2014 (UTC)<br />
* [[User:ListMyCDs.com|ListMyCDs.com]] ([[User talk:ListMyCDs.com|talk]]) 19:58, 25 January 2014 (UTC)<br />
* <strike>[[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 10:10, 27 January 2014 (UTC)</strike><br />
<br />
'''No'''<br />
* [[User:Caller number six|Caller_number_six]] ([[User talk:Caller number six|talk]]) 19:25, 25 January 2014 (UTC) — More accurately, "Not in a way that leads to a long, unwieldy list." <br />
* — [[jesus2099]] ♬ 23:25, 26 January 2014 (UTC)<br />
<br />
'''Abstain'''<br />
<br />
* [[User:warp|warp]]<br />
* [[User:Monxton|Monxton]] ([[User talk:Monxton|talk]]) 06:37, 27 January 2014 (UTC) - I'm not entirely against expanding the list, but I want new types to be very clearly defined<br />
* [[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 15:47, 27 January 2014 (UTC) - I am not strongly against it, but we should be *very* careful not to add arbitrary types. The distinction between a studio and a venue is relevant, others might not. General info like indoor/outdoor, number of seats, accessibility might be more interesting and adding them as attributes might be better.<br />
<br />
==If yes, should Stadium and Arena be added as one type, or as two?==<br />
'''One'''<br />
* [[User:LordSputnik|LordSputnik]]<br />
*[[User:Caller number six|Caller_number_six]] ([[User talk:Caller number six|talk]]) 19:25, 25 January 2014 (UTC) — Less is more :-)<br />
* [[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 10:10, 27 January 2014 (UTC) - we don't distinguish between open air and indoor venues<br />
**I would like an indoor/outdoor attribute, which would make the distinction between stadium and arena redundant --[[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 15:20, 27 January 2014 (UTC)<br />
<br />
<br />
<br />
'''Two'''<br />
<br />
* [[User:SultS|SultS]]<br />
* [[User:Nikki|Nikki]] ([[User talk:Nikki|talk]]) 12:27, 25 January 2014 (UTC)<br />
* --[[User:Lixobix|Lixobix]] ([[User talk:Lixobix|talk]]) 14:44, 25 January 2014 (UTC) There are cases where there are two separate venues in the same location, e.g. Wembley Stadium and Wembley Arena.<br />
* 2 different things. Stadium is for outdoor sports and an arena is for indoor sports. [[User:ListMyCDs.com|ListMyCDs.com]] ([[User talk:ListMyCDs.com|talk]]) 19:58, 25 January 2014 (UTC)<br />
<br />
'''Unsure'''<br />
<br />
* [[User:Reosarevok|Reosarevok]] ([[User talk:Reosarevok|talk]]) 10:27, 25 January 2014 (UTC)<br />
* I'm not really sure what the difference between them is: [[wikipedia:Stadium]] suggests we germans name our stadiums "XXX Arena" and [[wikipedia:Arena]] suggests they're sometimes used synonymously. Is the difference that Arenas have a roof over everything while Stadiums do not? --[[User:Mineo|Mineo]] ([[User talk:Mineo|talk]]) 13:55, 25 January 2014 (UTC)<br />
** Like ListMyCDs mentioned, I would call outdoor ones stadiums, indoor ones arenas (perhaps "indoor arena" would be a better name to use, that's what Wikipedia seems to prefer at least). Sometimes people use them interchangeably, but there are stadiums in Germany which are called "Stadion" rather than "Arena", e.g. the first two German stadiums that came to mind for me both are - [[wikipedia:de:Rewirpowerstadion]], [[wikipedia:de:RheinEnergieStadion]]. --[[User:Nikki|Nikki]] ([[User talk:Nikki|talk]]) 15:01, 26 January 2014 (UTC)<br />
* [[User:Monxton|Monxton]] ([[User talk:Monxton|talk]]) 06:37, 27 January 2014 (UTC) - I didn't previously understand the distinction, but according to other statements here it's that a Stadium is outdoors and an Arena is indoors. If so, I can see an argument for adding a Stadium (outdoor) type. Though there are still questions like what if its a stadium with a retracting roof? However for an indoor arena, how am I going to distinguish that from, say, an exhibition hall or other multipurpose space? I think it's just a Venue.<br />
<br />
==If not, should we use Venue or Other for stadiums and arenas?==<br />
'''Venue'''<br />
<br />
* [[User:SultS|SultS]]<br />
* [[User:warp|warp]]<br />
* [[User:LordSputnik|LordSputnik]]<br />
* [[User:Caller number six|Caller_number_six]] ([[User talk:Caller number six|talk]]) 19:25, 25 January 2014 (UTC) — This is point I feel strongest about. "Venue" is a broad term.<br />
* — [[jesus2099]] ♬ 23:25, 26 January 2014 (UTC)<br />
* [[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 10:10, 27 January 2014 (UTC) - I honestly was using venue already..<br />
<br />
'''Other'''<br />
<br />
* [[User:Reosarevok|Reosarevok]] ([[User talk:Reosarevok|talk]]) 10:27, 25 January 2014 (UTC)<br />
<br />
'''Unsure'''<br />
* [[User:Nikki|Nikki]] ([[User talk:Nikki|talk]]) 12:27, 25 January 2014 (UTC)<br />
* [[User:Monxton|Monxton]] ([[User talk:Monxton|talk]]) 06:37, 27 January 2014 (UTC) Other for stadia, Venue for arenas.</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=User:Reosarevok/Place_types&diff=65484User:Reosarevok/Place types2014-01-27T15:20:50Z<p>JonnyJD: /* If yes, should Stadium and Arena be added as one type, or as two? */ attribute indoor/outdoor would be better than 2 types</p>
<hr />
<div>Hi! I had an RFV for adding a "Stadium/Arena" type for places technically pass yesterday, but there didn't seem to be much consensus on whether to add it, and how. So I'm making a small "poll" to find out what most people would actually prefer! :)<br />
<br />
==Should we have extra place types at all?==<br />
'''Yes'''<br />
<br />
* [[User:Reosarevok|Reosarevok]] ([[User talk:Reosarevok|talk]]) 10:27, 25 January 2014 (UTC)<br />
* [[User:SultS|SultS]]<br />
* [[User:Nikki|Nikki]] ([[User talk:Nikki|talk]]) 12:27, 25 January 2014 (UTC)<br />
* [[User:LordSputnik|LordSputnik]]<br />
* --[[User:Mineo|Mineo]] ([[User talk:Mineo|talk]]) 13:55, 25 January 2014 (UTC)<br />
* --[[User:Lixobix|Lixobix]] ([[User talk:Lixobix|talk]]) 14:41, 25 January 2014 (UTC)<br />
* [[User:ListMyCDs.com|ListMyCDs.com]] ([[User talk:ListMyCDs.com|talk]]) 19:58, 25 January 2014 (UTC)<br />
* [[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 10:10, 27 January 2014 (UTC)<br />
<br />
'''No'''<br />
* [[User:Caller number six|Caller_number_six]] ([[User talk:Caller number six|talk]]) 19:25, 25 January 2014 (UTC) — More accurately, "Not in a way that leads to a long, unwieldy list." <br />
* — [[jesus2099]] ♬ 23:25, 26 January 2014 (UTC)<br />
<br />
'''Abstain'''<br />
<br />
* [[User:warp|warp]]<br />
* [[User:Monxton|Monxton]] ([[User talk:Monxton|talk]]) 06:37, 27 January 2014 (UTC) - I'm not entirely against expanding the list, but I want new types to be very clearly defined<br />
<br />
==If yes, should Stadium and Arena be added as one type, or as two?==<br />
'''One'''<br />
* [[User:LordSputnik|LordSputnik]]<br />
*[[User:Caller number six|Caller_number_six]] ([[User talk:Caller number six|talk]]) 19:25, 25 January 2014 (UTC) — Less is more :-)<br />
* [[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 10:10, 27 January 2014 (UTC) - we don't distinguish between open air and indoor venues<br />
**I would like an indoor/outdoor attribute, which would make the distinction between stadium and arena redundant --[[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 15:20, 27 January 2014 (UTC)<br />
<br />
<br />
<br />
'''Two'''<br />
<br />
* [[User:SultS|SultS]]<br />
* [[User:Nikki|Nikki]] ([[User talk:Nikki|talk]]) 12:27, 25 January 2014 (UTC)<br />
* --[[User:Lixobix|Lixobix]] ([[User talk:Lixobix|talk]]) 14:44, 25 January 2014 (UTC) There are cases where there are two separate venues in the same location, e.g. Wembley Stadium and Wembley Arena.<br />
* 2 different things. Stadium is for outdoor sports and an arena is for indoor sports. [[User:ListMyCDs.com|ListMyCDs.com]] ([[User talk:ListMyCDs.com|talk]]) 19:58, 25 January 2014 (UTC)<br />
<br />
'''Unsure'''<br />
<br />
* [[User:Reosarevok|Reosarevok]] ([[User talk:Reosarevok|talk]]) 10:27, 25 January 2014 (UTC)<br />
* I'm not really sure what the difference between them is: [[wikipedia:Stadium]] suggests we germans name our stadiums "XXX Arena" and [[wikipedia:Arena]] suggests they're sometimes used synonymously. Is the difference that Arenas have a roof over everything while Stadiums do not? --[[User:Mineo|Mineo]] ([[User talk:Mineo|talk]]) 13:55, 25 January 2014 (UTC)<br />
** Like ListMyCDs mentioned, I would call outdoor ones stadiums, indoor ones arenas (perhaps "indoor arena" would be a better name to use, that's what Wikipedia seems to prefer at least). Sometimes people use them interchangeably, but there are stadiums in Germany which are called "Stadion" rather than "Arena", e.g. the first two German stadiums that came to mind for me both are - [[wikipedia:de:Rewirpowerstadion]], [[wikipedia:de:RheinEnergieStadion]]. --[[User:Nikki|Nikki]] ([[User talk:Nikki|talk]]) 15:01, 26 January 2014 (UTC)<br />
* [[User:Monxton|Monxton]] ([[User talk:Monxton|talk]]) 06:37, 27 January 2014 (UTC) - I didn't previously understand the distinction, but according to other statements here it's that a Stadium is outdoors and an Arena is indoors. If so, I can see an argument for adding a Stadium (outdoor) type. Though there are still questions like what if its a stadium with a retracting roof? However for an indoor arena, how am I going to distinguish that from, say, an exhibition hall or other multipurpose space? I think it's just a Venue.<br />
<br />
==If not, should we use Venue or Other for stadiums and arenas?==<br />
'''Venue'''<br />
<br />
* [[User:SultS|SultS]]<br />
* [[User:warp|warp]]<br />
* [[User:LordSputnik|LordSputnik]]<br />
* [[User:Caller number six|Caller_number_six]] ([[User talk:Caller number six|talk]]) 19:25, 25 January 2014 (UTC) — This is point I feel strongest about. "Venue" is a broad term.<br />
* — [[jesus2099]] ♬ 23:25, 26 January 2014 (UTC)<br />
* [[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 10:10, 27 January 2014 (UTC) - I honestly was using venue already..<br />
<br />
'''Other'''<br />
<br />
* [[User:Reosarevok|Reosarevok]] ([[User talk:Reosarevok|talk]]) 10:27, 25 January 2014 (UTC)<br />
<br />
'''Unsure'''<br />
* [[User:Nikki|Nikki]] ([[User talk:Nikki|talk]]) 12:27, 25 January 2014 (UTC)<br />
* [[User:Monxton|Monxton]] ([[User talk:Monxton|talk]]) 06:37, 27 January 2014 (UTC) Other for stadia, Venue for arenas.</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=User:Reosarevok/Place_types&diff=65481User:Reosarevok/Place types2014-01-27T10:10:27Z<p>JonnyJD: my votes</p>
<hr />
<div>Hi! I had an RFV for adding a "Stadium/Arena" type for places technically pass yesterday, but there didn't seem to be much consensus on whether to add it, and how. So I'm making a small "poll" to find out what most people would actually prefer! :)<br />
<br />
==Should we have extra place types at all?==<br />
'''Yes'''<br />
<br />
* [[User:Reosarevok|Reosarevok]] ([[User talk:Reosarevok|talk]]) 10:27, 25 January 2014 (UTC)<br />
* [[User:SultS|SultS]]<br />
* [[User:Nikki|Nikki]] ([[User talk:Nikki|talk]]) 12:27, 25 January 2014 (UTC)<br />
* [[User:LordSputnik|LordSputnik]]<br />
* --[[User:Mineo|Mineo]] ([[User talk:Mineo|talk]]) 13:55, 25 January 2014 (UTC)<br />
* --[[User:Lixobix|Lixobix]] ([[User talk:Lixobix|talk]]) 14:41, 25 January 2014 (UTC)<br />
* [[User:ListMyCDs.com|ListMyCDs.com]] ([[User talk:ListMyCDs.com|talk]]) 19:58, 25 January 2014 (UTC)<br />
* [[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 10:10, 27 January 2014 (UTC)<br />
<br />
'''No'''<br />
* [[User:Caller number six|Caller_number_six]] ([[User talk:Caller number six|talk]]) 19:25, 25 January 2014 (UTC) — More accurately, "Not in a way that leads to a long, unwieldy list." <br />
* — [[jesus2099]] ♬ 23:25, 26 January 2014 (UTC)<br />
<br />
'''Abstain'''<br />
<br />
* [[User:warp|warp]]<br />
* [[User:Monxton|Monxton]] ([[User talk:Monxton|talk]]) 06:37, 27 January 2014 (UTC) - I'm not entirely against expanding the list, but I want new types to be very clearly defined<br />
<br />
==If yes, should Stadium and Arena be added as one type, or as two?==<br />
'''One'''<br />
* [[User:LordSputnik|LordSputnik]]<br />
*[[User:Caller number six|Caller_number_six]] ([[User talk:Caller number six|talk]]) 19:25, 25 January 2014 (UTC) — Less is more :-)<br />
* [[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 10:10, 27 January 2014 (UTC) - we don't distinguish between open air and indoor venues<br />
<br />
'''Two'''<br />
<br />
* [[User:SultS|SultS]]<br />
* [[User:Nikki|Nikki]] ([[User talk:Nikki|talk]]) 12:27, 25 January 2014 (UTC)<br />
* --[[User:Lixobix|Lixobix]] ([[User talk:Lixobix|talk]]) 14:44, 25 January 2014 (UTC) There are cases where there are two separate venues in the same location, e.g. Wembley Stadium and Wembley Arena.<br />
* 2 different things. Stadium is for outdoor sports and an arena is for indoor sports. [[User:ListMyCDs.com|ListMyCDs.com]] ([[User talk:ListMyCDs.com|talk]]) 19:58, 25 January 2014 (UTC)<br />
<br />
'''Unsure'''<br />
<br />
* [[User:Reosarevok|Reosarevok]] ([[User talk:Reosarevok|talk]]) 10:27, 25 January 2014 (UTC)<br />
* I'm not really sure what the difference between them is: [[wikipedia:Stadium]] suggests we germans name our stadiums "XXX Arena" and [[wikipedia:Arena]] suggests they're sometimes used synonymously. Is the difference that Arenas have a roof over everything while Stadiums do not? --[[User:Mineo|Mineo]] ([[User talk:Mineo|talk]]) 13:55, 25 January 2014 (UTC)<br />
** Like ListMyCDs mentioned, I would call outdoor ones stadiums, indoor ones arenas (perhaps "indoor arena" would be a better name to use, that's what Wikipedia seems to prefer at least). Sometimes people use them interchangeably, but there are stadiums in Germany which are called "Stadion" rather than "Arena", e.g. the first two German stadiums that came to mind for me both are - [[wikipedia:de:Rewirpowerstadion]], [[wikipedia:de:RheinEnergieStadion]]. --[[User:Nikki|Nikki]] ([[User talk:Nikki|talk]]) 15:01, 26 January 2014 (UTC)<br />
* [[User:Monxton|Monxton]] ([[User talk:Monxton|talk]]) 06:37, 27 January 2014 (UTC) - I didn't previously understand the distinction, but according to other statements here it's that a Stadium is outdoors and an Arena is indoors. If so, I can see an argument for adding a Stadium (outdoor) type. Though there are still questions like what if its a stadium with a retracting roof? However for an indoor arena, how am I going to distinguish that from, say, an exhibition hall or other multipurpose space? I think it's just a Venue.<br />
<br />
==If not, should we use Venue or Other for stadiums and arenas?==<br />
'''Venue'''<br />
<br />
* [[User:SultS|SultS]]<br />
* [[User:warp|warp]]<br />
* [[User:LordSputnik|LordSputnik]]<br />
* [[User:Caller number six|Caller_number_six]] ([[User talk:Caller number six|talk]]) 19:25, 25 January 2014 (UTC) — This is point I feel strongest about. "Venue" is a broad term.<br />
* — [[jesus2099]] ♬ 23:25, 26 January 2014 (UTC)<br />
* [[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 10:10, 27 January 2014 (UTC) - I honestly was using venue already..<br />
<br />
'''Other'''<br />
<br />
* [[User:Reosarevok|Reosarevok]] ([[User talk:Reosarevok|talk]]) 10:27, 25 January 2014 (UTC)<br />
<br />
'''Unsure'''<br />
* [[User:Nikki|Nikki]] ([[User talk:Nikki|talk]]) 12:27, 25 January 2014 (UTC)<br />
* [[User:Monxton|Monxton]] ([[User talk:Monxton|talk]]) 06:37, 27 January 2014 (UTC) Other for stadia, Venue for arenas.</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=MusicBrainz_Database/Schema&diff=65304MusicBrainz Database/Schema2014-01-09T18:52:28Z<p>JonnyJD: add link to github repo (CreateTables.sql)</p>
<hr />
<div>== Primary entities ==<br />
Each primary entity has a main table with the same name as the entity, containing its basic data.<br />
<br />
=== [[Area]] ===<br />
<br />
A country, region, city or the like.<br />
<br />
Areas that can be used for filling in the ''Release country'' field of releases are listed, by ID, in the '''country_area''' table.<br />
<br />
=== [[Artist]] ===<br />
<br />
An artist is generally a musician, a group of musicians, or another music professional (composer, engineer, illustrator, producer, etc.)<br />
<br />
=== [[Label]] ===<br />
<br />
Labels represent mostly (but not only) imprints.<br />
<br />
=== [[Place]] ===<br />
<br />
A venue, studio or other place where music is performed, recorded, engineered, etc.<br />
<br />
=== [[Recording]] ===<br />
<br />
Represents a unique mix or edit. Has title, artist credit, duration, list of [[PUID]]s and [[ISRC]]s. Examples (all are different Recordings):<br />
<br />
* Album version of the track "''Into the Blue''" by "''Moby''"<br />
* Remix "''Into the Blue (Buzz Boys Main Room Mayhem mix)''" by "''Moby''"<br />
* Remix "''Into the Blue (Underground mix)''" by "''Moby''"<br />
<br />
=== [[Release]] ===<br />
<br />
Real-world release object you can buy in your music store. It has release date and country, list of catalog number and label pairs, [[Release/Packaging|packaging type]] and release status. Examples:<br />
<br />
* 1984 US release of "The Wall" by "[[Artist:83d91898-7763-47d7-b03b-b92132375c47|Pink Floyd]]", release on label "Columbia Records" with catalog number "C2K 36183" and UPC "074643618328", it's an official release and comes with two CDs in jewel case.<br />
<br />
=== [[Release Group|Release group]] ===<br />
<br />
Represents an abstract "album" (or "single", or "EP") entity. Technically it's a group of releases, with a specified type. Examples:<br />
<br />
* Single "Under Pressure" by "[[Artist:0383dadf-2a4e-4d10-a46a-e9e041da8eb3|Queen]] & [[Artist:5441c29d-3602-4898-b1a1-b77fa23b8e50|David Bowie]]"<br />
* Album "The Wall" by "[[Artist:83d91898-7763-47d7-b03b-b92132375c47|Pink Floyd]]"<br />
<br />
=== [[URL]] ===<br />
This entity represents a URL pointing to a resource external to MusicBrainz, i.e. an official homepage, a site where music can be acquired, an entry in another database, etc.<br />
<br />
=== [[Work]] ===<br />
<br />
One layer above ''recording''s ("song", "composition", etc.). While a ''recording'' represents audio data, a ''work'' represents the composition behind the ''recording''. Advanced Relationships are used to link ''recording''s and ''work''s.<br />
<br />
* Song "''Into the Blue''" by "''Moby''" -- all the recordings listed above will be linked to this object<br />
<br />
== Secondary entities ==<br />
Each secondary entity has a main table with the same name as the entity, containing its basic data.<br />
<br />
=== [[Artist Credit|Artist credit]] ===<br />
<br />
List of artists, variations of artist names and pieces of text to join the artist names. Examples:<br />
<br />
* "[[Artist:0383dadf-2a4e-4d10-a46a-e9e041da8eb3|Queen]] & [[Artist:5441c29d-3602-4898-b1a1-b77fa23b8e50|David Bowie]]" -- two artists ("Queen" and "David Bowie"), no name variations, joined with " & "<br />
* "[[Artist:86e2e2ad-6d1b-44fd-9463-b6683718a1cc|Jean-Michel Jarre]]" -- one artist ("Jean Michel Jarre"), name variation "Jean-Michel Jarre"<br />
* "[[Artist:4d78d8f5-f2e4-4eaa-86b2-952307aabd9f|Tracy W. Bush]], [[Artist:ef8d7a94-64a3-4362-b81f-b5999fb246de|Derek Duke]], [[Artist:7fd43bc8-b5ff-45ed-8ce5-1b0c17114a9e|Jason Hayes]] and [[Artist:2465d7da-7da3-42ea-8440-e701775d856b|Glenn Stafford]]" -- four artists, no name variations, joined with commas and an "and".<br />
<br />
=== [[Medium]] ===<br />
<br />
This entity represents a piece of media, included in a release. It contains information about the format of the media, its position in the release, an optional title, and most importantly, a list of ''track''s. CD TOCs are attached to ''medium''s, not ''release''s or ''release_group''s. <br />
<br />
'''Examples''':<br />
<br />
* CD1 of the 1984 US release of "The Wall" by "Pink Floyd"<br />
* CD2 of the 2005 UK release of "Aerial" by "Kate Bush", named "A Sky of Honey"<br />
<br />
=== Track ===<br />
<br />
This entity is not visible to users on its own, only in the context of a release. It has an MBID, and contains a link to a recording, a title, artist credit and position on its associated medium.<br />
<br />
== Schema ==<br />
<br />
This schema diagram shows the core database tables and relationships between them. Core entities are blue, mostly-static lists are yellow, and external identifiers are red. There is also a [http://wiki.musicbrainz.org/-/images/5/52/ngs.png higher resolution schema diagram].<br />
<br />
[[Image:ngs.png|700px]]<br />
<br />
=== *_alias tables ===<br />
The primary entities ''area'', ''artist'', ''label'', ''place'' and ''work'' have ''_alias'' tables, all of which have the same structure. They contain the alternate names for instances of those entities.<br />
<br />
=== annotation table, & the *_annotation tables ===<br />
All the primary entities except ''url'' (i.e. ''area'', ''artist'', ''label'', ''place'', ''recording'', ''release'', ''release_group'', & ''work'') has a corresponding ''_annotation'' table that links entities of that type to entries in the main ''annotation'' table which contains the actual text of the annotation, along with the changelog and the identity of the editor who created it.<br />
<br />
=== edit table & the edit_* tables ===<br />
Edits to the database are stored in the '''edit''' table, with the edit notes/comments stored in '''edit_note'''. The other '''edit_''' tables are used to link edits to the entity they modify; there is one table for each of the 9 primary entities (''area'', ''artist'', ''label'', ''place'', ''recording'', ''release'', ''release_group'', ''url'', & ''work''). They all have the same structure: just two foreign keys, one to the entity table and the other to '''edit''' table.<br />
<br />
=== *_ipi & *_isni tables ===<br />
The primary entities ''artist'' and ''label'' can have multiple [[IPI]] and [[ISNI]] codes attached to them. The these tables are used to store those mappings. They contain a foreign key pointing to the entity, the actual value of the code, and ''edits_pending'' and ''created'' fields with the usual meaning.<br />
<br />
=== tag table, & the *_tag and _tag_raw tables ===<br />
All but the ''area'' and ''url'' primary entities (i.e. ''artist'', ''label'', ''place'', ''recording'', ''release'', ''release_group'', & ''work'') have ''_tag'' and ''_tag_raw'' tables, with the same structure. Both the ''_tag'' and ''_tag_raw'' tables contain two foreign keys, linked to the associated entity and to the ''tag'' table. The ''_raw_tag'' tables contain a foreign key, '''editor''', which specifies who added the tag, while the ''_tag'' tables instead contain a '''count''' of how many times a tag is applied to a particular entity, and a '''last_updated''' timestamp.<br />
<br />
The ''tag'' table contains the actual names of the tags, and a ''ref_count''.<br />
<br />
=== *_gid_redirect tables ===<br />
There are 10 ''_gid_redirect'' tables, one for each of the 9 primary entities (''area'', ''artist'', ''label'', ''place'', ''recording'', ''release'', ''release_group'', ''url'' & ''work'') plus one for ''track''s. They are used to redirect one MBID to another when entities are merged.<br />
<br />
=== *_rating_raw & *_meta tables ===<br />
There are 5 ''_rating_raw'' tables, one for each of the primary entities that can be rated: ''artist'', ''label'', ''recording'', ''release_group'', & ''work''. The ''_rating_raw'' tables all have the same structure, consisting of the actual rating, expressed as an integer between 0 and 100, and two foreign keys, one linked to the associated entity, and the other linked to the ''editor'' table, to specifying who made the rating.<br />
<br />
The aggregate rating of each entity is stored in the corresponding ''_meta'' table, in the '''rating''' field. There is also a '''rating_count''' field that specifies how many ratings have been entered for the entity.<br />
<br />
The ''release_group_meta'' table also contains other fields, and the ''release'' entity, even though it cannot be rated, still has a ''release_meta'' table, which is used to store other data.<br />
<br />
=== *_type tables ===<br />
There are 12 ''_type'' tables, which are simply mappings between strings and ID numbers, representing various sets of types; ''area''s, ''artist''s, ''label''s, ''place''s, and ''work''s each have a ''_type'' and an ''_alias_type'' table. ''release_group''s have ''release_group_primary_type'' & ''release_group_secondary_type'' tables. ''Recording''s, ''release''s and ''url''s do not have ''_type'' tables.<br />
<br />
=== Advanced Relationship table structure ===<br />
[[Image:ngs-ars.png|right|500px]] <br />
==== l_* tables ====<br />
There are tables for every possible combination of the 9 primary entities (''area'', ''artist'', ''label'', ''place'', ''recording'', ''release'', ''release_group'', ''url'' & ''work'') all prefixed with ''l_'' and all with the same format. Two of them are shown in the diagram. They contain a field, '''edits_pending''' that is a count of pending changes to the AR, a '''last_updated''' field, and three foreign keys: '''link''' that points back to the associated entry in the ''link'' table, and '''entity0''' and '''entity1''' that point to the associated entry in the corresponding entity table (i.e. '''artist''', '''recording''', '''url''', etc.).<br />
<br />
There are two tables that help to avoid unnecessary duplication:<br />
<br />
====link & link_attribute tables====<br />
<br />
The ''link'' table contains the begin and end date info, and the '''link_type''' foreign key field that specifies what kind of AR it is. It also has a count of how many other attributes that particular link has in the '''attribute_count''' field, and a '''created''' field that specifies when it was created.<br />
<br />
Each AR attribute either applies to a particular AR or it doesn't. The ''link_attribute'' table stores this information, having a record for each '''attribute_type''' (a foreign key field for ''link_attribute_type'') of each '''link'''.<br />
<br />
====link_type, link_attribute_type, & link_type_attribute_type tables====<br />
<br />
The AR types and attributes are defined in these three tables, shown at the top of the diagram. They can only be modified by the AR editors.<br />
<br />
The ''link_type'' table defines the types of ARs available. AR types are arranged in a number of trees, for ease of finding. This tree structure is expressed with the '''parent''' and '''child_order''' fields; '''parent''' is the '''id''' of the parent AR type, or null if it's at the root, and '''child_order''' orders the children of a given parent AR type. Each AR type has a unique uuid, stored in the ''gid'' field, for use in permalinks and external applications. The link between a particular AR type and the corresponding ''l_'' table is formed by the '''entity_type0''' and '''entity_type1''' fields.<br />
<br />
The attributes are themselves defined in the ''link_attribute_type'' table. Like AR types, attributes form a number of trees (the vast majority of them are individual musical instruments). Besides the '''parent''' and '''child_order''' fields shared with the ''link_type'' table, the ''link_attribute_table'' also has a '''root''' field, showing the root of the tree that the attribute is part of. Attributes also have '''name'''s and '''description'''s which appear in various places where they are displayed, as well as '''gid'''s and a '''last_updated''' timestamp.<br />
<br />
The ''link_type_attribute_type'' table specifies what attributes can be applied to particular types of ARs; it has the necessary foreign key fields ('''link_type''' and '''attribute_type''') and it also specifies how many instances of the attribute (or one of its children) can be added to the particular AR type in the '''min''' and '''max''' fields. Currently, most of them allow the attributes to merely be present or absent, while a few allow any number of copies of the attribute, or none. The "creative commons licensed download" attribute has to be included exactly once, while the ''instrument'' attribute (of the ''instrument'' type AR), requires at least one instance.<br />
<br />
===Cover Art Archive table structure===<br />
[[Image:cover art.png|right|400px]]<br />
<br />
The [[Cover Art Archive]] table structure is fairly simple. The ''cover_art'' table stores the actual cover art and associations to edits. ''art_type'' stores the acceptable cover art types, and ''cover_art_type'' links the two together. ''release_group_cover_art'' links a release group to the release whose cover art should represent the release group. <br />
<br />
This image also shows the links to tables in the main diagram (as well as the ''edit'' table), but not their full schemas; please see other diagrams or the real schema specification for details.<br />
<br />
There is one view not shown, which is the ''index_listing'' view -- this makes for a slightly nicer interface than joining the tables manually, by providing an array of cover art types and easy pointers for is_front and is_back. Otherwise it largely resembles the cover_art table.<br />
<br />
== Undocumented tables ==<br />
The following tables have not yet been documented in this page. Help is gratefully appreciated!<br />
<br />
<pre><br />
CREATE TABLE application<br />
<br />
CREATE TABLE artist_deletion<br />
<br />
CREATE TABLE artist_credit_name (<br />
<br />
CREATE TABLE autoeditor_election<br />
CREATE TABLE autoeditor_election_vote<br />
<br />
CREATE TABLE cdtoc<br />
CREATE TABLE cdtoc_raw<br />
<br />
CREATE TABLE editor<br />
CREATE TABLE editor_language (<br />
CREATE TABLE editor_preference<br />
CREATE TABLE editor_subscribe_artist<br />
CREATE TABLE editor_subscribe_artist_deleted<br />
CREATE TABLE editor_subscribe_collection<br />
CREATE TABLE editor_subscribe_label<br />
CREATE TABLE editor_subscribe_label_deleted<br />
CREATE TABLE editor_subscribe_editor<br />
<br />
CREATE TABLE gender (<br />
<br />
CREATE TABLE iso_3166_1 (<br />
CREATE TABLE iso_3166_2 (<br />
CREATE TABLE iso_3166_3 (<br />
<br />
CREATE TABLE isrc<br />
CREATE TABLE iswc (<br />
<br />
CREATE TABLE label_deletion<br />
<br />
CREATE TABLE language<br />
<br />
CREATE TABLE link_creditable_attribute_type (<br />
CREATE TABLE link_attribute_credit (<br />
<br />
CREATE TABLE editor_collection<br />
CREATE TABLE editor_collection_release<br />
CREATE TABLE editor_oauth_token<br />
CREATE TABLE editor_watch_preferences<br />
CREATE TABLE editor_watch_artist<br />
CREATE TABLE editor_watch_release_group_type<br />
CREATE TABLE editor_watch_release_status<br />
<br />
CREATE TABLE medium_cdtoc<br />
CREATE TABLE medium_format<br />
<br />
CREATE TABLE replication_control<br />
<br />
CREATE TABLE release_country (<br />
CREATE TABLE release_unknown_country (<br />
CREATE TABLE release_raw<br />
CREATE TABLE release_coverart<br />
CREATE TABLE release_label (<br />
CREATE TABLE release_packaging<br />
CREATE TABLE release_status<br />
<br />
CREATE TABLE release_group_secondary_type_join (<br />
<br />
CREATE TABLE script<br />
CREATE TABLE script_language<br />
<br />
CREATE TABLE tag_relation<br />
<br />
CREATE TABLE track_raw<br />
<br />
CREATE TABLE medium_index<br />
<br />
CREATE TABLE vote<br />
<br />
CREATE TABLE work_attribute_type (<br />
CREATE TABLE work_attribute_type_allowed_value (<br />
CREATE TABLE work_attribute (<br />
</pre><br />
<br />
== Full sql commands ==<br />
<br />
The full sql commands used to create the tables can be found in the<br />
[https://github.com/metabrainz/musicbrainz-server/blob/master/admin/sql/CreateTables.sql GitHub Repository].<br />
[[Category:Development]] [[Category:To Be Reviewed]] [[Category:WikiDocs Page]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=MusicBrainz_Picard/Plugins&diff=65231MusicBrainz Picard/Plugins2013-12-22T17:59:13Z<p>JonnyJD: /* Plugins */ hosted metaflac plugin somewhere else (kadou.net currently offline)</p>
<hr />
<div>There are many plugins available for Picard. A number of these are written by the Picard developers, however many are written by users and enthusiasts. If you are having issues with a plugin, please check the [http://forums.musicbrainz.org/viewforum.php?id=2 forums] for answers and ask any questions.<br />
<br />
==Installation==<br />
===Simple method===<br />
This method works for any plugin that consist of a single .py file, unless special installation instructions are given. In that case refer to those and/or to the advanced method below.<br />
<br />
Though this tutorial has only been tested with the Windows version of Picard, procedure should be very similar with other operating systems.<br />
<br />
To install a plugin: <br />
# First of all, download the plugin (.py file) you want to install<br />
# Open Picard<br />
# Click ''Options'' in menu bar<br />
# Choose ''Options...'' to open preferences menu<br />
# Go to ''Plugins'' in the left pane<br />
# Click ''Install plugin...''<br />
# Locate the downloaded .py file and click ''Open''<br />
That's it, your plugin is now ready for use. The file has been copied by Picard to it's plugins folder (using Windows specifically <code><nowiki>%APPDATA%\MusicBrainz\Picard\plugins</nowiki></code>), it's safe to delete the plugin in your download folder.<br />
<br />
===Advanced method===<br />
To install a plugin: <br />
# download .py file(s)<br />
# create a 'plugins' directory (if not existing already) under <br />
## Windows: either <code><nowiki>C:\Program Files\Musicbrainz Picard\plugins</nowiki></code> (for default Picard application folder) or <code><nowiki>%APPDATA%\MusicBrainz\Picard\plugins</nowiki></code> <br />
## *Nix: either Picard application directory/plugins or <code><nowiki>~/.config/MusicBrainz/Picard/plugins</nowiki></code> <br />
## OSX: Follow These Steps:<br />
### Open a Terminal (can be found in: <code><nowiki>Applications/Utilities/Terminal</nowiki></code>)<br />
### type <code><nowiki>mkdir -p $HOME/.config/MusicBrainz/Picard/plugins</nowiki></code> (needs to be done only once)<br />
### type <code><nowiki>open $HOME/.config/MusicBrainz/Picard/plugins</nowiki></code> to display the folder in finder. Now move the plugins there.<br />
## Please note that some plugins need to be placed inside a separate subdirectory specific to the plugin. See the 'Notes' column below to see if this is required for the particular plugin you are installing.<br />
# Move downloaded .py file(s) to 'plugins' directory <br />
# Enable the plugin. Check the box beside the individual plugin in the plugins menu, which can be found at<br />
## Windows/*Nix: Options Menu >> Options... >> Plugins<br />
## OSX: MusicBrainz Picard >> Preferences >> Plugins<br />
<br />
==Creating Plugins==<br />
Please refer to the [[MusicBrainz Picard/Plugins/API|Picard plugin API]] documentation.<br />
<br />
==Plugins==<br />
<br />
{| border="1"<br />
|-<br />
| '''Name''' || '''Description''' || '''Author''' || '''Adds Context Menu Item?''' || '''Download / Compatibility''' || '''License''' || '''Known issues/Notes'''<br />
|-<br />
| ''' Disc Numbers''' || Moves ''(disc X)'' from releases titles into separate tags (''discnumber'' and ''discsubtitle''). || [[User:LukasLalinsky|Lukáš Lalinský]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/discnumber.py 0.9 - 1.0] || (unspecified) || -<br />
|-<br />
| '''Classic Disc Numbers''' || Reverts to pre-NGS (aka "Classic") behaviour by adding ''(disc X: discTitle)'' to release titles into separate tags (''discnumber'' and ''discsubtitle''). || [[User:LukasLalinsky|Lukáš Lalinský]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/classicdiscnumber.py 0.15 - 1.0] || (unspecified) || Broken in 0.15.1 (OK in later releases); workaround version of plugin available on forum [http://forums.musicbrainz.org/viewtopic.php?pid=14731#p14731 here].<br />
|-<br />
| '''Remove Feat. Artists from Titles''' || Removes ''(feat. Artist)'' parts from track titles. || [[User:LukasLalinsky|Lukáš Lalinský]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/featartist.py 0.9 - 1.0] || (unspecified) || - <br />
|-<br />
| '''Move Feat. Artists to Titles''' || Move "feat." from artist names to album and track titles. e.g. "A feat. B - Song" becomes "A - Song (feat. B)." || [[User:LukasLalinsky|Lukáš Lalinský]], [[User:Bitmap|Michael Wiencek]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/featartistsintitles.py 0.9 - 1.0] || (unspecified) || - <br />
|-<br />
| '''Title Case''' || Converts track and release titles to Title Case (capitalizes first character of every word) || Javier Kohen, [[User:LukasLalinsky|Lukáš Lalinský]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/titlecase.py 0.9 - 1.0] || GPLv2 || - <br />
|-<br />
| '''Cover Art Downloader''' || Downloads cover art for optional tag embedding and/or saving as a separate image file (using standard Options >> Cover Art Picard settings) || [[User:OliverCharles|Oliver Charles]], [[User:OutsideContext|Philipp Wolfer]] || No || [http://web.archive.org/web/20090527084503/http://users.musicbrainz.org/~luks/picard-qt/plugins/coverart.py 0.9 - 0.11] <br/> [http://users.musicbrainz.org/~outsidecontext/picard/plugins/coverart.py 0.12 - 0.14] <br/> [https://raw.github.com/musicbrainz/picard/release-1.1/contrib/plugins/coverart.py 0.15 - 1.1] <br /> Integrated in 1.2 || GPLv2 || -<br />
|-<br />
| '''Last.fm Tags''' || Use Last.fm tags as "genre" || [[User:LukasLalinsky|Lukáš Lalinský]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/lastfm/__init__.py 0.15 - 1.0 (file 1)]<br/>[http://users.musicbrainz.org/~luks/picard-plugins/lastfm/ui_options_lastfm.py 0.15 - 1.0 (file 2)] || (unspecified) || ''(copy both files to directory <code><nowiki>plugins/lastfm/</nowiki></code>)'' <br />
|-<br />
| '''Last.fm Plus''' || Use Last.fm tags as "grouping/genre/moods/occasions/countries/originalyear" and more. Modified version of above plugin. || [[User:RifRaf|RifRaf]], voiceinsideyou || No || [http://www.mediafire.com/?qlso9gc8c75aq5a 0.15 - 1.0] || (unspecified) || Unzip into plugins folder. (so you have plugins/lastfmplus/__init__.py etc) [[MusicBrainz Picard/Documentation/Plugins/Lastfmplus|Documentation]], [http://forums.musicbrainz.org/viewtopic.php?id=2949 forum thread]<br />
|-<br />
| '''Add Cluster As A Release''' || Adds right click option to an unmatched cluster to allow adding releases to MB based on tags. || [[User:LukasLalinsky|Lukáš Lalinský]], [[User:Foolip|Philip Jägenstedt]] || Yes || [https://raw.github.com/foolip/addrelease/master/addrelease.py 0.9 - 0.16] <br/> [http://users.musicbrainz.org/~luks/picard-plugins/addrelease.py 1.0] || GPLv2 or later || -<br />
|-<br />
| '''Generate Cuesheet''' || Generates a cuesheet from a release || [[User:LukasLalinsky|Lukáš Lalinský]] || Yes || [http://users.musicbrainz.org/~luks/picard-plugins/cuesheet.py 0.10 - 1.0] || (unspecified) || - <br />
|-<br />
| '''Release Type''' || Appends information to EPs and Singles such as " EP" or " (single)" (customisable, see file for details). Useful for separating releases with singles/EPs of the same name. || [[User:chancey|Elliot Chance]] || No || [https://bitbucket.org/chancey/musicbrainz-picard-release-type 0.9 - 0.10, 0.15] || (unspecified) || -<br />
|-<br />
| '''No Release''' || Do not store specific release information in releases of unknown origin. || [[User:Hrglgrmpf|hrglgrmpf]] || Yes || [http://users.musicbrainz.org/~luks/picard-plugins/no_release.py 0.15 - 1.0] || (unspecified) || See [http://forums.musicbrainz.org/viewtopic.php?id=2918&p=2 forum post] for details.<br />
|-<br />
| '''Search Plugins''' || Launch searches for clusters or releases to external non-MB websites from Picard || [[User:BrianFreud| Brian Schweitzer]] || Yes || [https://github.com/brianfreud/Picard-plugins 0.9 - 1.0] || (unspecified) || Plugins available for:<ul><br />
<li>All Music Guide<br />
<li>Amazon (supports: .ca, .com, .de, .fr, .jp, and .co.uk)<br />
<li>CastAlbums.org (musicals)<br />
<li>DiscogsFilmMusziek.be (film music)<br />
<li>eBay<br />
<li>Game Music Revolution (game soundtracks)<br />
<li>Google<br />
<li>The Lortel Archives (off-Broadway musicals)<br />
<li>SoundtrackCollector.org (soundtracks)<br />
<li>SoundtrackINFO (soundtracks)<br />
</ul><br />
|-<br />
| '''Change Encoding''' || Converts the tags of individual files or clusters between different character encodings. This is often necessary with files that have only ID3v1 tags in a non-Latin encoding. || [[User:foolip|Philip Jägenstedt]] || Yes || [https://raw.github.com/foolip/encoding/master/encoding.py 0.9 - 0.12] || GPLv2 or later || You will probably only need to change the ''target'' encoding. If the encoding you're looking for isn't in the list, you can type it in yourself and it will hopefully work. <br />
|-<br />
| '''Original Release Date''' || Set the original release date of a release by using the release events and "earliest release" advanced relationships. || [[User:OutsideContext|Philipp Wolfer]] || No || [http://users.musicbrainz.org/~outsidecontext/picard/plugins/originalreleasedate.py 0.12] || GPLv2 or later || Not needed for newer versions of Picard which support the %originaldate% tag directly.<br />
|-<br />
| '''Title sort names''' || Guess sortnames for track and album titles and adds as titlesort and albumsort tags. || [[User:Creap|Creap]] || No || [http://github.com/voiceinsideyou/creaps-picard-plugins/raw/master/titlesort.py 0.12 - 1.0] || (unspecified) || Checks language (English, Spanish, German, French, Italian, Swedish) and moves articles ("The", "Das", etc) to the end of the track/album title in the sort tags. <br />
|-<br />
| '''Title version''' || Moves song metadata such as "demo", "live" from titlesort to version tag. || [[User:Creap|Creap]] || No || [http://github.com/voiceinsideyou/creaps-picard-plugins/raw/master/titleversion.py 0.12 - 1.0] || (unspecified) || Searches titles for keywords like ''live'', ''demo'', ''mix'', etc, and moves it from titles to version tags.<br />
|-<br />
| '''$swapprefix function''' || Adds the $swapprefix(text, *prefixes) script function, which moves the specified prefixes to the end of the text. || [[User:OutsideContext|Philipp Wolfer]] || No || [http://users.musicbrainz.org/~luks/picard-plugins/swapprefix.py 0.9 - 1.0] || GPLv2 or later || See this [http://forums.musicbrainz.org/viewtopic.php?id=2220 forum post] for details.<br />
|-<br />
| '''Lookup PUID''' || Adds the ability to lookup the PUID on MusicBrainz (useful in case there are several tracks linked with the same PUID) || WPME Hofland || Yes || [http://www.merijnhofland.info/mb/searchpuid.py 0.12] || (unspecified) || <br />
|-<br />
| '''TSO2''' || Set TSO2 as well as TXXX:ALBUMARTISTSORTORDER in ID3 tags, so album artist sort order works in iTunes and other players || Andrew Barnert || No || [http://picardplugins.googlecode.com/files/tso2-0.1.py 0.12] || (unspecified) || See this [http://forums.musicbrainz.org/viewtopic.php?id=2359 forum post] for details.<br />
|-<br />
| '''Add to iTunes''' || Mac OS X only! Add an album/track/etc. to iTunes. || Andrew Barnert || Yes || [http://picardplugins.googlecode.com/files/addtoitunes-0.1.py 0.12] || (unspecified) || See this [http://forums.musicbrainz.org/viewtopic.php?id=2361 forum post] for details.<br />
|-<br />
| '''The Sorting Plugin''' || Allows sorting of clusters and releases (i.e. both panes) through the right click "Plugins" menu. (can sort either Clusters or Releases by Artist or Title, and within a cluster by artist or title) || Aaron Lambers || Yes || [http://www.mediafire.com/?16ymlxoik6akmzk 0.12] || (unspecified) || See this [http://forums.musicbrainz.org/viewtopic.php?id=2489 forum post] for details.<br />
|-<br />
| '''Discnumber and Bonus disc''' || Combination of the discnumber and bonus disc plugin || WPME Hofland || No || [http://www.merijnhofland.info/mb/bonusdiscnumber.py 0.12] || (unspecified) || <br />
|-<br />
| '''Convert Typographic Punctuation''' || Replace hard-to-type-into-search-boxes fancy punctuation with Latin-1 equivalents || anonymous || No || [http://picardplugins.googlecode.com/files/converttypographicpunctuation-0.1.3.py 0.9 - 0.12] || [http://sam.zoy.org/wtfpl/ WTFPL] || See [http://forums.musicbrainz.org/viewtopic.php?id=2495 forum] and [http://bugs.musicbrainz.org/ticket/5834 bug ticket] for details.<br />
|-<br />
| '''Foobar2000 ReplayGain''' || Analyse your albums using the foobar2000 ReplayGain scanner. || [[User:Hrglgrmpf|hrglgrmpf]] || Yes || [http://github.com/weisslj/picardplugins/raw/master/f2k_rgscan.py 0.10 - 1.0] || (unspecified) || See [http://forums.musicbrainz.org/viewtopic.php?id=2564 forum post] for details.<br />
|-<br />
| '''MetaFlac ReplayGain''' || Analyse your albums using the MetaFlac ReplayGain scanner. || Olivier Kaloudoff || Yes || <!--http://kalou.net/unix/picard/metaflac_rgscan.py//-->[http://kraehen.org/mb/metaflac_rgscan.py 0.10 - 1.0] || (unspecified) || Tested only on Mac OSX / Feedback to kalou at kalou dot net<br />
|-<br />
|-<br />
| '''$eq2, $ne2 functions''' || Each plugin adds a new function to taggerscript, to allow comparison of a variable against more than one string.<br />
Example: set %engineer% to "test" if the artist is equal to "foo", "bar", or "baz":<br />
$if($eq2(%artist%,foo,bar,baz),$set(engineer,test))<br />
|| [[User:BrianFreud| Brian Schweitzer]] || No || [https://github.com/brianfreud/Picard-plugins 0.12 - 1.0] || (unspecified) || See [http://forums.musicbrainz.org/viewtopic.php?id=2631 forum post] for details.<br />
|-<br />
| '''$p function''' || Adds an $p(string, unofficial) function to taggerscript. This works like the inverse of a \p{foo} regex using Unicode properties. In other words, it tells you what script a character belongs to. <br />
Usage:<br />
$p(%something%)<br />
$p(%something%, True)<br />
The second argument is optional. By default, it is set to False. When set to True, unofficial Unicode scripts (i.e. ConScript, etc.) are also checked.<br />
|| [[User:BrianFreud| Brian Schweitzer]] || No ||[https://github.com/brianfreud/Picard-plugins 0.12 - 1.0] || (unspecified) || See [http://forums.musicbrainz.org/viewtopic.php?id=2631 forum post] for details.<br />
|-<br />
| '''Open in GUI''' || Open files/folders in the GUI environment. || Michael Elsdörfer || Yes || [http://users.musicbrainz.org/~luks/picard-plugins/open_in_gui.py 0.9 - 1.0] || (unspecified) || <br />
|-<br />
| '''Remove Perfect albums''' || Remove "Perfect" matches from album list i.e. all tracks matched and tags saved. || ichneumon || Yes || [https://github.com/voiceinsideyou/picard/raw/plugins/contrib/plugins/removeperfectalbums.py 0.15 - 1.0] || (unspecified) || See [http://forums.musicbrainz.org/viewtopic.php?id=2555 forum post] for details.<br />
|-<br />
| '''Autosave complete albums''' || Save albums with 4+ tracks and 90%+ confidence on all tracks, then remove them from the album list. Useful when importing a big, relatively well-tagged collection. || encukou || Yes || [https://raw.github.com/encukou/picard-plugins/master/autosave.py 0.15 - 1.0] || (unspecified) || See [http://forums.musicbrainz.org/viewtopic.php?pid=17270 forum post] for details.<br />
|-<br />
| '''Sidecars''' || Stores and retrieves metadata in "sidecar" files so that changes can be staged. || [[User:Tony70|Tony Flaks]] || Yes || [http://sites.google.com/site/tonyflaks/sidecar.py 0.14] || (unspecified) || See [http://wiki.musicbrainz.org/User:Tony70/SidecarPlugin wiki page] for details.<br />
|}<br />
<br />
=== Context Menu Items ===<br />
Note that not all plugins will add options to the "Plugins" section of the right click context menu you get on tracks, files and clusters. Plugins in the above list that do not add a context menu item should work automatically on all new metadata that is loaded into the right-hand pane, once they are enabled in the options.<br />
<br />
[[Category:MusicBrainz Picard]][[Category:WikiDocs Page]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=MusicBrainz_API/XML&diff=65133MusicBrainz API/XML2013-11-29T10:46:35Z<p>JonnyJD: /* inc= */ add isrcs</p>
<hr />
<div><small>[[Products]] > XML Web Service Version 2</small> <br />
<br />
The web service discussed in this document is an interface to the [[MusicBrainz Database]]. It is aimed at developers of media players, CD rippers, taggers, and other applications requiring music metadata. The service's architecture follows the REST design principles. Interaction with the web service is done using HTTP and all content is served in a simple but flexible XML format.<br />
<br />
The web service root URL is <code><nowiki>http://musicbrainz.org/ws/2/</nowiki></code>.<br />
<br />
This page documents version 2 of our XML web service. Version 1 has been deprecated, but its documentation [[XML_Web_Service/Version_1|can still be referenced]]. [[Live_Data_Feed|Non-commercial]] use of this web service is free; please [[Contact_Us|contact us]] if you would like to use this service commercially.<br />
<br />
==Introduction==<br />
<br />
We have eight resources on our web service which represent core entities in our database:<br />
<br />
artist, label, recording, release, release-group, work, area, url<br />
<br />
We also provide a web service interface for the following non-core resources:<br />
<br />
rating, tag, collection<br />
<br />
And we allow you to perform lookups based on other unique identifiers with these resources:<br />
<br />
discid, isrc, iswc<br />
<br />
On each entity resource, you can perform three different GET requests:<br />
<br />
lookup: /<ENTITY>/<MBID>?inc=<INC><br />
browse: /<ENTITY>?<ENTITY>=<MBID>&limit=<LIMIT>&offset=<OFFSET>&inc=<INC><br />
search: /<ENTITY>?query=<QUERY>&limit=<LIMIT>&offset=<OFFSET><br />
<br />
... except that search is not implemented for URL entities at this time.<br />
<br />
Of these:<br />
<br />
* Lookups, Non-MBID lookups and Browse requests are documented in following sections.<br />
<br />
==Searches==<br />
Searches are documented at [[/Search|Web Service Search]].<br />
<br />
==Lookups==<br />
<br />
You can perform a lookup of an entity when you have the MBID for that entity:<br />
<br />
lookup: /<ENTITY>/<MBID>?inc=<INC><br />
<br />
Note that unless you have provided an MBID in exactly the format listed, you are not performing a lookup request. If your URL includes something like artist=<MBID>, then please see the [[#Browse|Browse]] section. If it includes query=<QUERY>, please see the [[/Search|Web Service Search]] page.<br />
<br />
===Subqueries===<br />
<br />
The inc= is parameter allows you to request more information to be included about<br />
the entity. Any of the entities directly linked to the entity can be included.<br />
<br />
/ws/2/artist recordings, releases, release-groups, works<br />
/ws/2/label releases<br />
/ws/2/recording artists, releases<br />
/ws/2/release artists, labels, recordings, release-groups<br />
/ws/2/release-group artists, releases<br />
/ws/2/work<br />
/ws/2/area<br />
/ws/2/url<br />
<br />
In addition, [[#Relationships|Relationships]] are available for all entity types via inc parameters.<br />
<br />
To include more than one subquery in a single request, separate the arguments to <code>inc=</code> with a + (plus sign), like <code>inc=recordings+labels</code>.<br />
<br />
All lookups which include release-groups allow a type= argument to narrow down the release-groups.<br />
All lookups which include releases also allow the type= argument, and a status= argument is allowed.<br />
<br />
Note that the number of linked entities returned is always limited to 25,<br />
if you need the remaining results, you will have to perform a browse request.<br />
<br />
Linked entities are always ordered alphabetically by gid.<br />
<br />
=== inc= arguments which affect subqueries ===<br />
<br />
Some additional inc= parameters are supported to specify how much of the data about<br />
the linked entities should be included:<br />
<br />
- discids include discids for all media in the releases<br />
- media include media for all releases, this includes the # of tracks on each medium and its format.<br />
- isrcs include isrcs for all recordings<br />
- artist-credits include artists credits for all releases and recordings<br />
- various-artists include only those releases where the artist appears on one of the tracks, <br />
but not in the artist credit for the release itself (this is only valid on a<br />
/ws/2/artist?inc=releases request).<br />
<br />
=== Misc inc= arguments ===<br />
<br />
- aliases include artist, label, area or work aliases; treat these as a set, as they are not deliberately ordered<br />
- annotation include annotation<br />
- tags, ratings include tags and/or ratings for the entity (not valid on releases)<br />
- user-tags, user-ratings same as above, but only return the tags and/or ratings submitted by the specified user<br />
<br />
Requests with user-tags or user-ratings require authentication. You can authenticate using HTTP Digest, use the same username and password used to access the main http://musicbrainz.org website.<br />
<br />
=== Relationships ===<br />
<br />
- artist-rels<br />
- label-rels<br />
- recording-rels<br />
- release-rels<br />
- release-group-rels<br />
- url-rels<br />
- work-rels<br />
<br />
By default, these 'inc=' arguments will only load relationship for the requested entity. When you are loading a release, you might want to load relationships for all its recordings and also works linked to the recordings. This is useful to get full release credits. There are additional arguments that can be used only on release requests and allow you to specify for which entities to load relationships:<br />
<br />
- recording-level-rels<br />
- work-level-rels<br />
<br />
==Non-MBID Lookups==<br />
<br />
Instead of MBIDs, you can also perform lookups using several other unique identifiers. However, because clashes sometimes occur, each of these lookups return a list of entities (there is no limit, all linked entities will be returned, paging is not supported).<br />
<br />
=== discid ===<br />
<br />
lookup: /discid/<discid>?inc=<INC>&toc=<TOC><br />
<br />
A discid lookup returns a list of associated releases, the 'inc=' arguments supported are identical to a lookup request for a release.<br />
<br />
If there are no matching releases in MusicBrainz, but a matching [[CD Stub|CDStub]] exists, it will be returned. This is the default behaviour. If you do ''not'' want to see CD stubs, pass 'cdstubs=no.' CD stubs are contained within a <cdstub> element, and otherwise have the same form as a release. Note that CD stubs do not have artist credits, just artists.<br />
<br />
If you provide the "toc" query parameter, and if the provided discid is not known by MusicBrainz, a fuzzy lookup will done to find matching MusicBrainz releases. Note that if CD stubs are found this will not happen. If you do want TOC fuzzy lookup, but not cdstub searching, specify "cdstubs=no". For example:<br />
<br />
/ws/2/discid/I5l9cCSFccLKFEKS.7wqSZAorPU-?toc=1+12+267257+150+22767+41887+58317+72102+91375+104652+115380+132165+143932+159870+174597<br />
<br />
Will look for the disc id first, and if it fails, will try to find tracklists that are within a similar distance to the one provided.<br />
<br />
The toc consists of the following:<br />
* First track (always 1)<br />
* total number of tracks<br />
* sector offset of the leadout (end of the disc<br />
* a list of sector offsets for each track, beginning with track 1 (generally 150 sectors)<br />
<br />
=== isrc ===<br />
<br />
lookup: /isrc/<isrc>?inc=<INC><br />
<br />
isrc lookups return a list of recordings, the 'inc=' arguments supported are identical to a lookup request for a recording.<br />
<br />
=== iswc ===<br />
<br />
lookup: /iswc/<iswc>?inc=<INC><br />
<br />
An iswc lookup returns a list of works, the 'inc=' arguments supported are identical to a lookup request for a work.<br />
<br />
==Browse==<br />
<br />
Browse requests are a direct lookup of all the entities directly linked to another entity. (with directly linked I am referring to any relationship inherent in the database, so no ARs). For example, you may want to see all releases on netlabel ubiktune:<br />
<br />
/ws/2/release?label=47e718e1-7ee4-460c-b1cc-1192a841c6e5<br />
<br />
Note that browse requests are not searches, in order to browse all the releases on the ubiktune label you will need to know the MBID of ubiktune.<br />
<br />
Browsed entities are always ordered alphabetically by gid. If you need to sort the entities, you will have to fetch all entities (see "Paging" below) and sort them yourself.<br />
<br />
===Linked entities===<br />
<br />
The following list shows which linked entities you can use in a browse request:<br />
<br />
/ws/2/artist recording, release, release-group, work<br />
/ws/2/label release<br />
/ws/2/recording artist, release<br />
/ws/2/release artist, label, recording, release-group<br />
/ws/2/release-group artist, release<br />
/ws/2/work<br />
/ws/2/area<br />
/ws/2/url resource<br />
<br />
As a special case, release also allows track_artist, which is intended to allow you to browse various artist appearances for an artist. It will return any release where the artist appears in the artist_credit for a track, but NOT in the artist_credit for the entire release (as those would already have been returned in a request with artist=<MBID>).<br />
<br />
The URL endpoint's 'resource' entity is for providing a URL directly, rather than a URL MBID, for example https://musicbrainz.org/ws/2/url?resource=http://www.madonna.com/ versus https://musicbrainz.org/ws/2/url/b663423b-9b54-4067-9674-fffaecf68851. This URL will need to be appropriately URL-escaped for inclusion as a query parameter; this means that URLs that include url-escaped parameters, or query parameters of their own, will need to be escaped a second time.<br />
<br />
Release-groups can be filtered on type, and releases can be filtered on type and/or status. For example, if you want all the Live Bootleg releases by Metallica:<br />
<br />
/ws/2/release?artist=65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab&status=bootleg&type=live<br />
<br />
Or all albums and EPs by Autechre:<br />
<br />
/ws/2/release-group?artist=410c9baf-5469-44f6-9852-826524b80c61&type=album|ep<br />
<br />
Note that filtering is mandatory, if you don't specify type or status the release and release-group resources will not return any results.<br />
<br />
===Paging===<br />
<br />
Browse requests are the only requests which support paging, any browse request supports an 'offset=' argument to get more results. Browse requests also support 'limit=', the default limit is 25, and you can increase that up to 100.<br />
<br />
=== inc= ===<br />
<br />
Just like with normal lookup requests, the server can be instructed to include more data about the entity using an 'inc=' argument. Supported values for inc= are:<br />
<br />
/ws/2/artist aliases<br />
/ws/2/label aliases<br />
/ws/2/recording artist-credits, isrcs<br />
/ws/2/release artist-credits, labels, recordings, release-groups, media, discids, isrcs (with recordings)<br />
/ws/2/release-group artist-credits<br />
/ws/2/work aliases<br />
/ws/2/area aliases<br />
<br />
In addition to the inc= values listed above, all entities (except release) support:<br />
<br />
tags, ratings, user-tags, user-ratings<br />
<br />
In addition, [[#Relationships|Relationships]] are available for all entity types via inc parameters, as with lookup requests.<br />
<br />
== Release Type and Status ==<br />
<br />
Any query which includes release-groups in the results can be filtered to only include release groups of a certain type. Any query which includes releases in the results can be filtered to only include releases of a certain type and/or status. Valid values are:<br />
<br />
status official, promotion, bootleg, pseudo-release<br />
type nat, album, single, ep, compilation, soundtrack, spokenword, interview, audiobook, live, remix, other<br />
<br />
== Submitting data ==<br />
<br />
You can use the web service to submit certain kinds of data. Currently tags, ratings and ISRCs can be entered through the web service.<br />
<br />
=== Authentication ===<br />
<br />
All POST requests require authentication. You should authenticate using HTTP Digest, use the same username and password you use to access the main http://musicbrainz.org website. The realm is "musicbrainz.org".<br />
<br />
POST requests should always include a 'client' parameter in the URL (not the body). The value of 'client' should be the ID of the client software submitting data. This has to be the application's name and version number, not that of a client library (client libraries should use HTTP's User-Agent header). The recommended format is "application-version", where version does not contain a - character.<br />
<br />
=== User Data ===<br />
<br />
You can submit tags and ratings through the web service using POST requests. As described above, client software needs to identify itself using the 'client=' parameter. In the following examples I will use 'example.app-0.4.7' as the client identifier, this is obviously a fictitious client.<br />
<br />
==== tags ====<br />
<br />
To submit tags, perform a POST request to the /ws/2/tag url, like this:<br />
<br />
/ws/2/tag?client=example.app-0.4.7<br />
<br />
The body of your request should be an XML formatted list of entities with <user-tag> elements. You can validate your XML request against our schema (http://svn.musicbrainz.org/mmd-schema/trunk/schema/musicbrainz_mmd-2.0.rng).<br />
<br />
An example request is reproduced below:<br />
<br />
<pre><br />
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><br />
<artist-list><br />
<artist id="a16d1433-ba89-4f72-a47b-a370add0bb56"><br />
<user-tag-list><br />
<user-tag><name>female</name></user-tag><br />
<user-tag><name>korean</name></user-tag><br />
<user-tag><name>jpop</name></user-tag><br />
</user-tag-list><br />
</artist><br />
</artist-list><br />
<recording-list><br />
<recording id="047ea202-b98d-46ae-97f7-0180a20ee5cf"><br />
<user-tag-list><br />
<user-tag><name>noise</name></user-tag><br />
</user-tag-list><br />
</recording><br />
</recording-list><br />
</metadata><br />
</pre><br />
<br />
Because you're sending XML in the body of your POST request, make sure to also set the Content-Type to "application/xml; charset=utf-8".<br />
<br />
For examples, see [[/examples|examples]].<br />
<br />
==== ratings ====<br />
<br />
To submit ratings, perform a POST request to the /ws/2/rating url, like this:<br />
<br />
/ws/2/rating?client=example.app-0.4.7<br />
<br />
The body of your request should be an XML formatted list of entities with <user-rating> elements. You can validate your XML request against our schema (http://svn.musicbrainz.org/mmd-schema/trunk/schema/musicbrainz_mmd-2.0.rng).<br />
<br />
An example request is reproduced below:<br />
<br />
<pre><br />
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><br />
<artist-list><br />
<artist id="455641ea-fff4-49f6-8fb4-49f961d8f1ad"><br />
<user-rating>100</user-rating><br />
</artist><br />
</artist-list><br />
<recording-list><br />
<recording id="c410a773-c6eb-4bc0-9df8-042fe6645c63"><br />
<user-rating>20</user-rating><br />
</recording><br />
</recording-list><br />
</metadata><br />
</pre><br />
<br />
==== collections ====<br />
<br />
To add and remove release from your collection perform a PUT and DELETE requests to /ws/2/collection/releases, respectively. For example:<br />
<br />
PUT /ws/2/collection/f4784850-3844-11e0-9e42-0800200c9a66/releases/455641ea-fff4-49f6-8fb4-49f961d8f1ad;c410a773-c6eb-4bc0-9df8-042fe6645c63?client=example.app-0.4.7<br />
DELETE /ws/2/collection/f4784850-3844-11e0-9e42-0800200c9a66/releases/455641ea-fff4-49f6-8fb4-49f961d8f1ad;?client=example.app-0.4.7<br />
<br />
You may submit up to ~400 releases in a single request, separated by a semicolon (;), as the PUT example above shows. You are restricted to a maximum URI length of 16kb at the moment (which roughly equates to 400 release gids)<br />
<br />
To get the contents of a collection, simple send a GET request to the releases resource:<br />
<br />
GET /ws/2/collection/f4784850-3844-11e0-9e42-0800200c9a66/releases<br />
<br />
You can also perform a get request on the collection list, which will present you a list of collections for the currently authenticated user, with the amount of releases in each collection:<br />
<br />
GET /ws/2/collection<br />
<br />
<br />
=== Barcode submission ===<br />
<br />
Barcodes may be associated with releases by issuing an XML POST request to:<br />
<br />
/ws/2/release/?client=example.app-0.4.7<br />
<br />
The body of the request must be an XML document with a list of <releases>s in a <release-list>, and a single barcode in a <barcode> element for each release. For example:<br />
<br />
<pre><br />
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><br />
<release-list><br />
<release id="047ea202-b98d-46ae-97f7-0180a20ee5cf"><br />
<barcode>9780262560933</barcode><br />
</release><br />
</release-list><br />
</metadata><br />
</pre><br />
<br />
You can validate your XML request against our schema (http://svn.musicbrainz.org/mmd-schema/trunk/schema/musicbrainz_mmd-2.0.rng).<br />
<br />
Upon issuing this request MusicBrainz will create a single edit in the edit queue for applying these changes. These changes will ''not'' be automatically applied, though they will be applied if either no one votes against your changes, or your changes expire (this edit is applied on expiration).<br />
<br />
=== ISRC submission ===<br />
<br />
ISRCs may be associated with recordings by issuing an XML POST request to:<br />
<br />
/ws/2/recording/?client=example.app-0.4.7<br />
<br />
The body of the request must be an XML document with a list of <recording>s in a <recording-list>, and a list of <ISRC>s in a <isrc-list> to be associated with the recordings. For example:<br />
<br />
<pre><br />
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><br />
<recording-list><br />
<recording id="b9991644-7275-44db-bc43-fff6c6b4ce69"><br />
<isrc-list count="1"><br />
<isrc id="JPB600601201" /><br />
</isrc-list><br />
</recording><br />
<recording id="75c961c9-6e00-4861-9c9d-e6ca90d57342"><br />
<isrc-list count="1"><br />
<isrc id="JPB600523201" /><br />
</isrc-list><br />
</recording><br />
</recording-list><br />
</metadata><br />
</pre><br />
<br />
Example code which illustrates this process can be found in our subversion repository: [http://svn.musicbrainz.org/miscellaneous/trunk/isrcsubmit-python/ isrcsubmit-python].<br />
<br />
==Limiting Connections to the MusicBrainz Web Service==<br />
<br />
All users of the XML web service must ensure that each of their client applications never make more than ONE web service call per second. Making more than one call per second drives up the load on the servers and prevents others from using MusicBrainz. If you impact the server by making more than one call per second, your IP address may be blocked preventing all further access to MusicBrainz. For more details on this, please see our [[XML_Web_Service/Rate_Limiting|rate limiting page]].<br />
<br />
==Identifying your application to the MusicBrainz Web Service==<br />
<br />
It is important that your application set a proper User-Agent string in its HTTP request headers. Please read our [[XML_Web_Service/Rate_Limiting|rate limiting]] documentation for more details.<br />
<br />
==Libraries to use the Web Service==<br />
<br />
The Web Service can be accessed with [[libmusicbrainz]].<br />
<br />
===3rd party libraries===<br />
<br />
* Python: [http://python-musicbrainzngs.readthedocs.org/ python-musicbrainzngs] Python2/3 bindings<br />
* Java: [http://code.google.com/p/musicbrainzws2-java/ musicbrainzws2-java]<br />
* Ruby:<br />
** [https://github.com/dwo/musicbrainz-ruby musicbrain-ruby]<br />
** [https://github.com/magnolia-fan/musicbrainz magnolia-fan/musicbrainz] ruby 1.9+<br />
* PHP: [https://github.com/mikealmond/MusicBrainz mikealmond/MusicBrainz], a fork of [[phpbrainz]]<br />
* C#: [https://github.com/avatar29A/MusicBrainz avatar29A/MusicBrainz]<br />
* Objective-C: [https://github.com/demosdemon/libmusicbrainz-objc libmusicbrainz-objc]<br />
* Haskell:<br />
** [http://hackage.haskell.org/package/MusicBrainz Clint Adams' bindings (hackage)]<br />
** [https://github.com/ocharles/haskell-musicbrainz-ws2 haskell-musicbrainz-ws2 (ocharles)]<br />
* common lisp: [https://github.com/0/cl-musicbrainz cl-musicbrainz]<br />
* Perl: [https://github.com/mavit/webservice-musicbrainz/tree/ws2 Work in progress]. Patches welcome!<br />
<br />
[[Category:Development]] [[Category:Products]] [[Category:WikiDocs Page]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=History:How_to_Build_Picard_for_Windows&diff=65113History:How to Build Picard for Windows2013-11-27T00:31:53Z<p>JonnyJD: move installer deps to installer sections (tested, works)</p>
<hr />
<div>This page explains the process of building [[MusicBrainz Picard]] and the installer for Windows. It only works for Picard 1.2 and newer, which no longer supports AmpliFIND.<br />
<br />
== Requirements ==<br />
<br />
* Python 2.7.x<br />
** http://python.org/download/<br />
** Download and install "Python 2.7.x Windows Installer"<br />
** Add C:\Python27 to %PATH%<br />
* PyQt 4.10.x<br />
** http://www.riverbankcomputing.co.uk/software/pyqt/download<br />
** Download and install "PyQt4-4.10.x-gpl-Py2.7-Qt4.8.x-x32.exe"<br />
* libdiscid<br />
** http://musicbrainz.org/doc/libdiscid<br />
** Download "libdiscid-0.6.1-win32.zip" and put "discid.dll" in your Windows\System32 folder<br />
* Pip for Windows<br />
** https://sites.google.com/site/pydatalog/python/pip-for-windows<br />
** Download to a location you find again (no installation)<br />
** in Pip_Win:<br />
*** <code>pip install mutagen</code> for Mutagen (1.22 tested)<br />
*** <code>pip install discid</code> for python-discid (1.1.x tested)<br />
* gettext<br />
** http://gnuwin32.sourceforge.net/packages/gettext.htm<br />
** Add the gettext folder to %PATH% (normally ''C:\Programs\GnuWin32\bin'')<br />
* Visual C++ 2008 Express<br />
** http://go.microsoft.com/?linkid=7729279<br />
** Download and install "vcsetup.exe"<br />
* Chromaprint<br />
** http://acoustid.org/chromaprint<br />
** Download "chromaprint-fpcalc-1.1-win-i86.zip" and put "fpcalc.exe" to the Picard source code directory<br />
<br />
== Running Picard From Sources ==<br />
<br />
Before you can run Picard from sources, you need to build the C extension. Start the VS console using "Visual Studio 2008 Command Prompt", go to the source directory and run these commands:<br />
<br />
python setup.py build_ext -i<br />
python setup.py build_locales -i<br />
<br />
After you have done this, you can run Picard directly from the sources using:<br />
<br />
python tagger.py<br />
<br />
== Building the Installer ==<br />
<br />
To build the installer executable you need additional Tools:<br />
<br />
* py2exe 0.6.9<br />
** http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/<br />
** Download and install "py2exe-0.6.9.win32-py2.7.exe"<br />
* NSIS 2.46<br />
** http://nsis.sourceforge.net/Download<br />
** Download and install "nsis-2.46-setup.exe"<br />
<br />
Then you need to copy msvcr90.dll and msvcp90.dll from "C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT" to the source code directory, so that py2exe can find them.<br />
You also need copy discid.dll (libdiscid) to the picard source.<br />
<br />
Then you can build the installer using this command:<br />
<br />
python setup.py bdist_nsis<br />
<br />
The setup is installer\picard-setup-1.x.exe and an executable for your system is dist\picard.exe, which you can use to create a desktop shortcut.<br />
<br />
== Known Issues ==<br />
<br />
It is possible that the resulting picard.exe does not show the proper file icon. This is probably a bug of py2exe on Vista. You can fix the icon with the tool [http://angusj.com/resourcehacker/ Resource Hacker] or any other tool, that can edit the resources in executables.<br />
<br />
[[Category:Development]][[Category:MusicBrainz Picard]][[Category:How To]][[Category:To Be Reviewed]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=History:How_to_Build_Picard_for_Windows&diff=65112History:How to Build Picard for Windows2013-11-27T00:02:23Z<p>JonnyJD: document building locales, when running from source</p>
<hr />
<div>This page explains the process of building [[MusicBrainz Picard]] and the installer for Windows. It only works for Picard 1.2 and newer, which no longer supports AmpliFIND.<br />
<br />
== Requirements ==<br />
<br />
* Python 2.7.x<br />
** http://python.org/download/<br />
** Download and install "Python 2.7.x Windows Installer"<br />
** Add C:\Python27 to %PATH%<br />
* PyQt 4.10.x<br />
** http://www.riverbankcomputing.co.uk/software/pyqt/download<br />
** Download and install "PyQt4-4.10.x-gpl-Py2.7-Qt4.8.x-x32.exe"<br />
* libdiscid<br />
** http://musicbrainz.org/doc/libdiscid<br />
** Download "libdiscid-0.6.1-win32.zip" and put "discid.dll" in your Windows\System32 folder<br />
* Pip for Windows<br />
** https://sites.google.com/site/pydatalog/python/pip-for-windows<br />
** Download to a location you find again (no installation)<br />
** in Pip_Win:<br />
*** <code>pip install mutagen</code> for Mutagen (1.22 tested)<br />
*** <code>pip install discid</code> for python-discid (1.1.x tested)<br />
* gettext<br />
** http://gnuwin32.sourceforge.net/packages/gettext.htm<br />
** Add the gettext folder to %PATH% (normally ''C:\Programs\GnuWin32\bin'')<br />
* Visual C++ 2008 Express<br />
** http://go.microsoft.com/?linkid=7729279<br />
** Download and install "vcsetup.exe"<br />
* Chromaprint<br />
** http://acoustid.org/chromaprint<br />
** Download "chromaprint-fpcalc-1.1-win-i86.zip" and put "fpcalc.exe" to the Picard source code directory<br />
* py2exe 0.6.9<br />
** http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/<br />
** Download and install "py2exe-0.6.9.win32-py2.7.exe"<br />
* NSIS 2.46 (only if you want to create Picard.exe)<br />
** http://nsis.sourceforge.net/Download<br />
** Download and install "nsis-2.46-setup.exe"<br />
<br />
== Running Picard From Sources ==<br />
<br />
Before you can run Picard from sources, you need to build the C extension. Start the VS console using "Visual Studio 2008 Command Prompt", go to the source directory and run these commands:<br />
<br />
python setup.py build_ext -i<br />
python setup.py build_locales -i<br />
<br />
After you have done this, you can run Picard directly from the sources using:<br />
<br />
python tagger.py<br />
<br />
== Building the Installer ==<br />
<br />
First you need to copy msvcr90.dll and msvcp90.dll from "C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT" to the source code directory, so that py2exe can find them. Then you can build the installer using this command:<br />
<br />
python setup.py bdist_nsis<br />
<br />
== Known Issues ==<br />
<br />
It is possible that the resulting picard.exe does not show the proper file icon. This is probably a bug of py2exe on Vista. You can fix the icon with the tool [http://angusj.com/resourcehacker/ Resource Hacker] or any other tool, that can edit the resources in executables.<br />
<br />
[[Category:Development]][[Category:MusicBrainz Picard]][[Category:How To]][[Category:To Be Reviewed]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=History:How_to_Build_Picard_for_Windows&diff=65111History:How to Build Picard for Windows2013-11-26T20:38:18Z<p>JonnyJD: actually (back)link Picard and update chromaprint file name</p>
<hr />
<div>This page explains the process of building [[MusicBrainz Picard]] and the installer for Windows. It only works for Picard 1.2 and newer, which no longer supports AmpliFIND.<br />
<br />
== Requirements ==<br />
<br />
* Python 2.7.x<br />
** http://python.org/download/<br />
** Download and install "Python 2.7.x Windows Installer"<br />
** Add C:\Python27 to %PATH%<br />
* PyQt 4.10.x<br />
** http://www.riverbankcomputing.co.uk/software/pyqt/download<br />
** Download and install "PyQt4-4.10.x-gpl-Py2.7-Qt4.8.x-x32.exe"<br />
* libdiscid<br />
** http://musicbrainz.org/doc/libdiscid<br />
** Download "libdiscid-0.6.1-win32.zip" and put "discid.dll" in your Windows\System32 folder<br />
* Pip for Windows<br />
** https://sites.google.com/site/pydatalog/python/pip-for-windows<br />
** Download to a location you find again (no installation)<br />
** in Pip_Win:<br />
*** <code>pip install mutagen</code> for Mutagen (1.22 tested)<br />
*** <code>pip install discid</code> for python-discid (1.1.x tested)<br />
* gettext<br />
** http://gnuwin32.sourceforge.net/packages/gettext.htm<br />
** Add the gettext folder to %PATH% (normally ''C:\Programs\GnuWin32\bin'')<br />
* Visual C++ 2008 Express<br />
** http://go.microsoft.com/?linkid=7729279<br />
** Download and install "vcsetup.exe"<br />
* Chromaprint<br />
** http://acoustid.org/chromaprint<br />
** Download "chromaprint-fpcalc-1.1-win-i86.zip" and put "fpcalc.exe" to the Picard source code directory<br />
* py2exe 0.6.9<br />
** http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/<br />
** Download and install "py2exe-0.6.9.win32-py2.7.exe"<br />
* NSIS 2.46 (only if you want to create Picard.exe)<br />
** http://nsis.sourceforge.net/Download<br />
** Download and install "nsis-2.46-setup.exe"<br />
<br />
== Running Picard From Sources ==<br />
<br />
Before you can run Picard from sources, you need to build the C extension. Start the VS console using "Visual Studio 2008 Command Prompt", go to the source directory and run this command:<br />
<br />
python setup.py build_ext -i<br />
<br />
After you have done this, you can run Picard directly from the sources using:<br />
<br />
python tagger.py<br />
<br />
== Building the Installer ==<br />
<br />
First you need to copy msvcr90.dll and msvcp90.dll from "C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT" to the source code directory, so that py2exe can find them. Then you can build the installer using this command:<br />
<br />
python setup.py bdist_nsis<br />
<br />
== Known Issues ==<br />
<br />
It is possible that the resulting picard.exe does not show the proper file icon. This is probably a bug of py2exe on Vista. You can fix the icon with the tool [http://angusj.com/resourcehacker/ Resource Hacker] or any other tool, that can edit the resources in executables.<br />
<br />
[[Category:Development]][[Category:MusicBrainz Picard]][[Category:How To]][[Category:To Be Reviewed]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=History:How_to_Build_Picard_for_Windows&diff=65110History:How to Build Picard for Windows2013-11-26T19:33:12Z<p>JonnyJD: /* Requirements */ download gettext binary without MinGW</p>
<hr />
<div>This page explains the process of building the Picard installes for Windows. It only works for Picard 1.2 and newer, which no longer supports AmpliFIND.<br />
<br />
== Requirements ==<br />
<br />
* Python 2.7.x<br />
** http://python.org/download/<br />
** Download and install "Python 2.7.x Windows Installer"<br />
** Add C:\Python27 to %PATH%<br />
* PyQt 4.10.x<br />
** http://www.riverbankcomputing.co.uk/software/pyqt/download<br />
** Download and install "PyQt4-4.10.x-gpl-Py2.7-Qt4.8.x-x32.exe"<br />
* libdiscid<br />
** http://musicbrainz.org/doc/libdiscid<br />
** Download "libdiscid-0.6.1-win32.zip" and put "discid.dll" in your Windows\System32 folder<br />
* Pip for Windows<br />
** https://sites.google.com/site/pydatalog/python/pip-for-windows<br />
** Download to a location you find again (no installation)<br />
** in Pip_Win:<br />
*** <code>pip install mutagen</code> for Mutagen (1.22 tested)<br />
*** <code>pip install discid</code> for python-discid (1.1.x tested)<br />
* gettext<br />
** http://gnuwin32.sourceforge.net/packages/gettext.htm<br />
** Add the gettext folder to %PATH% (normally ''C:\Programs\GnuWin32\bin'')<br />
* Visual C++ 2008 Express<br />
** http://go.microsoft.com/?linkid=7729279<br />
** Download and install "vcsetup.exe"<br />
* Chromaprint<br />
** http://acoustid.org/chromaprint<br />
** Download "chromaprint-fpcalc-0.6-win32.zip" and put "fpcalc.exe" to the Picard source code directory<br />
* py2exe 0.6.9<br />
** http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/<br />
** Download and install "py2exe-0.6.9.win32-py2.7.exe"<br />
* NSIS 2.46 (only if you want to create Picard.exe)<br />
** http://nsis.sourceforge.net/Download<br />
** Download and install "nsis-2.46-setup.exe"<br />
<br />
== Running Picard From Sources ==<br />
<br />
Before you can run Picard from sources, you need to build the C extension. Start the VS console using "Visual Studio 2008 Command Prompt", go to the source directory and run this command:<br />
<br />
python setup.py build_ext -i<br />
<br />
After you have done this, you can run Picard directly from the sources using:<br />
<br />
python tagger.py<br />
<br />
== Building the Installer ==<br />
<br />
First you need to copy msvcr90.dll and msvcp90.dll from "C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT" to the source code directory, so that py2exe can find them. Then you can build the installer using this command:<br />
<br />
python setup.py bdist_nsis<br />
<br />
== Known Issues ==<br />
<br />
It is possible that the resulting picard.exe does not show the proper file icon. This is probably a bug of py2exe on Vista. You can fix the icon with the tool [http://angusj.com/resourcehacker/ Resource Hacker] or any other tool, that can edit the resources in executables.<br />
<br />
[[Category:Development]][[Category:MusicBrainz Picard]][[Category:How To]][[Category:To Be Reviewed]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=History:How_to_Build_Picard_for_Windows&diff=65109History:How to Build Picard for Windows2013-11-26T18:58:34Z<p>JonnyJD: /* Requirements */ use Pip for Windows</p>
<hr />
<div>This page explains the process of building the Picard installes for Windows. It only works for Picard 1.2 and newer, which no longer supports AmpliFIND.<br />
<br />
== Requirements ==<br />
<br />
* Python 2.7.x<br />
** http://python.org/download/<br />
** Download and install "Python 2.7.x Windows Installer"<br />
** Add C:\Python27 to %PATH%<br />
* PyQt 4.10.x<br />
** http://www.riverbankcomputing.co.uk/software/pyqt/download<br />
** Download and install "PyQt4-4.10.x-gpl-Py2.7-Qt4.8.x-x32.exe"<br />
* libdiscid<br />
** http://musicbrainz.org/doc/libdiscid<br />
** Download "libdiscid-0.6.1-win32.zip" and put "discid.dll" in your Windows\System32 folder<br />
* Pip for Windows<br />
** https://sites.google.com/site/pydatalog/python/pip-for-windows<br />
** Download to a location you find again (no installation)<br />
** in Pip_Win:<br />
*** <code>pip install mutagen</code> for Mutagen (1.22 tested)<br />
*** <code>pip install discid</code> for python-discid (1.1.x tested)<br />
* Visual C++ 2008 Express<br />
** http://go.microsoft.com/?linkid=7729279<br />
** Download and install "vcsetup.exe"<br />
* MingGW<br />
** http://sourceforge.net/projects/mingw/files/<br />
** Download and install the latest "mingw-get-inst-xxxx.exe"<br />
** Uncheck the C compiler option, we need only the directory structure and mingw-get<br />
** Add C:\MinGW\bin to %PATH%<br />
* gettext<br />
** Run <code>mingw-get install gettext</code><br />
* Chromaprint<br />
** http://acoustid.org/chromaprint<br />
** Download "chromaprint-fpcalc-0.6-win32.zip" and put "fpcalc.exe" to the Picard source code directory<br />
* py2exe 0.6.9<br />
** http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/<br />
** Download and install "py2exe-0.6.9.win32-py2.7.exe"<br />
* NSIS 2.46 (only if you want to create Picard.exe)<br />
** http://nsis.sourceforge.net/Download<br />
** Download and install "nsis-2.46-setup.exe"<br />
<br />
== Running Picard From Sources ==<br />
<br />
Before you can run Picard from sources, you need to build the C extension. Start the VS console using "Visual Studio 2008 Command Prompt", go to the source directory and run this command:<br />
<br />
python setup.py build_ext -i<br />
<br />
After you have done this, you can run Picard directly from the sources using:<br />
<br />
python tagger.py<br />
<br />
== Building the Installer ==<br />
<br />
First you need to copy msvcr90.dll and msvcp90.dll from "C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT" to the source code directory, so that py2exe can find them. Then you can build the installer using this command:<br />
<br />
python setup.py bdist_nsis<br />
<br />
== Known Issues ==<br />
<br />
It is possible that the resulting picard.exe does not show the proper file icon. This is probably a bug of py2exe on Vista. You can fix the icon with the tool [http://angusj.com/resourcehacker/ Resource Hacker] or any other tool, that can edit the resources in executables.<br />
<br />
[[Category:Development]][[Category:MusicBrainz Picard]][[Category:How To]][[Category:To Be Reviewed]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=History:How_to_Build_Picard_for_Windows&diff=65108History:How to Build Picard for Windows2013-11-26T18:30:29Z<p>JonnyJD: /* Requirements */ update links, reorder (NSIS optional, python modules work without compiler)</p>
<hr />
<div>This page explains the process of building the Picard installes for Windows. It only works for Picard 1.2 and newer, which no longer supports AmpliFIND.<br />
<br />
== Requirements ==<br />
<br />
* Python 2.7.x<br />
** http://python.org/download/<br />
** Download and install "Python 2.7.x Windows Installer"<br />
** Add C:\Python27 to %PATH%<br />
* PyQt 4.10.x<br />
** http://www.riverbankcomputing.co.uk/software/pyqt/download<br />
** Download and install "PyQt4-4.10.x-gpl-Py2.7-Qt4.8.x-x32.exe"<br />
* Mutagen 1.22<br />
** http://code.google.com/p/mutagen/downloads/list<br />
** Download and unpack "mutagen-1.22.tar.gz" (needs [http://7-zip.org/ 7-zip] or similar to unpack)<br />
** Run <code>python setup.py install</code> in the unpacked directory (with ''cmd'')<br />
* Visual C++ 2008 Express<br />
** http://go.microsoft.com/?linkid=7729279<br />
** Download and install "vcsetup.exe"<br />
* MingGW<br />
** http://sourceforge.net/projects/mingw/files/<br />
** Download and install the latest "mingw-get-inst-xxxx.exe"<br />
** Uncheck the C compiler option, we need only the directory structure and mingw-get<br />
** Add C:\MinGW\bin to %PATH%<br />
* gettext<br />
** Run <code>mingw-get install gettext</code><br />
* libdiscid<br />
** http://musicbrainz.org/doc/libdiscid<br />
** Download "libdiscid-0.1.1-win32bin.zip" and put "discid.dll" to the Picard source code directory<br />
* Chromaprint<br />
** http://acoustid.org/chromaprint<br />
** Download "chromaprint-fpcalc-0.6-win32.zip" and put "fpcalc.exe" to the Picard source code directory<br />
* py2exe 0.6.9<br />
** http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/<br />
** Download and install "py2exe-0.6.9.win32-py2.7.exe"<br />
* NSIS 2.46 (only if you want to create Picard.exe)<br />
** http://nsis.sourceforge.net/Download<br />
** Download and install "nsis-2.46-setup.exe"<br />
<br />
== Running Picard From Sources ==<br />
<br />
Before you can run Picard from sources, you need to build the C extension. Start the VS console using "Visual Studio 2008 Command Prompt", go to the source directory and run this command:<br />
<br />
python setup.py build_ext -i<br />
<br />
After you have done this, you can run Picard directly from the sources using:<br />
<br />
python tagger.py<br />
<br />
== Building the Installer ==<br />
<br />
First you need to copy msvcr90.dll and msvcp90.dll from "C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT" to the source code directory, so that py2exe can find them. Then you can build the installer using this command:<br />
<br />
python setup.py bdist_nsis<br />
<br />
== Known Issues ==<br />
<br />
It is possible that the resulting picard.exe does not show the proper file icon. This is probably a bug of py2exe on Vista. You can fix the icon with the tool [http://angusj.com/resourcehacker/ Resource Hacker] or any other tool, that can edit the resources in executables.<br />
<br />
[[Category:Development]][[Category:MusicBrainz Picard]][[Category:How To]][[Category:To Be Reviewed]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=History:How_to_Build_Picard_for_Windows&diff=65107History:How to Build Picard for Windows2013-11-26T18:10:04Z<p>JonnyJD: /* Requirements */ update pytqt filename</p>
<hr />
<div>This page explains the process of building the Picard installes for Windows. It only works for Picard 1.2 and newer, which no longer supports AmpliFIND.<br />
<br />
== Requirements ==<br />
<br />
* Python 2.7.x<br />
** http://www.python.org/download/<br />
** Download and install "Python 2.7.x Windows Installer"<br />
** Add C:\Python27 to %PATH%<br />
* PyQt 4.10.x<br />
** http://www.riverbankcomputing.co.uk/software/pyqt/download<br />
** Download and install "PyQt4-4.10.x-gpl-Py2.7-Qt4.8.x-x32.exe"<br />
* Visual C++ 2008 Express<br />
** http://go.microsoft.com/?linkid=7729279<br />
** Download and install "vcsetup.exe"<br />
* NSIS 2.46<br />
** http://nsis.sourceforge.net/Download<br />
** Download and install "nsis-2.46-setup.exe"<br />
* Mutagen 1.20<br />
** http://code.google.com/p/mutagen/downloads/list<br />
** Download and unpack "mutagen-1.20.tar.gz"<br />
** Run <code>python setup.py install</code> in the unpacked directory<br />
* MingGW<br />
** http://sourceforge.net/projects/mingw/files/<br />
** Download and install the latest "mingw-get-inst-xxxx.exe"<br />
** Uncheck the C compiler option, we need only the directory structure and mingw-get<br />
** Add C:\MinGW\bin to %PATH%<br />
* gettext<br />
** Run <code>mingw-get install gettext</code><br />
* libdiscid<br />
** http://musicbrainz.org/doc/libdiscid<br />
** Download "libdiscid-0.1.1-win32bin.zip" and put "discid.dll" to the Picard source code directory<br />
* Chromaprint<br />
** http://acoustid.org/chromaprint<br />
** Download "chromaprint-fpcalc-0.6-win32.zip" and put "fpcalc.exe" to the Picard source code directory<br />
* py2exe 0.6.9<br />
** http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/<br />
** Download and install "py2exe-0.6.9.win32-py2.7.exe"<br />
<br />
== Running Picard From Sources ==<br />
<br />
Before you can run Picard from sources, you need to build the C extension. Start the VS console using "Visual Studio 2008 Command Prompt", go to the source directory and run this command:<br />
<br />
python setup.py build_ext -i<br />
<br />
After you have done this, you can run Picard directly from the sources using:<br />
<br />
python tagger.py<br />
<br />
== Building the Installer ==<br />
<br />
First you need to copy msvcr90.dll and msvcp90.dll from "C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT" to the source code directory, so that py2exe can find them. Then you can build the installer using this command:<br />
<br />
python setup.py bdist_nsis<br />
<br />
== Known Issues ==<br />
<br />
It is possible that the resulting picard.exe does not show the proper file icon. This is probably a bug of py2exe on Vista. You can fix the icon with the tool [http://angusj.com/resourcehacker/ Resource Hacker] or any other tool, that can edit the resources in executables.<br />
<br />
[[Category:Development]][[Category:MusicBrainz Picard]][[Category:How To]][[Category:To Be Reviewed]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=Proposal:Audiobook_Style&diff=65042Proposal:Audiobook Style2013-11-19T17:25:37Z<p>JonnyJD: Redirected page to Style/Specific types of releases/Audiobook</p>
<hr />
<div>#REDIRECT [[Style/Specific types of releases/Audiobook]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=Proposal:Audiobook_Style&diff=65041Proposal:Audiobook Style2013-11-19T17:14:24Z<p>JonnyJD: link official style</p>
<hr />
<div>{{Template:proposal<br />
|proposal=1<br />
|discussion=http://lists.musicbrainz.org/pipermail/musicbrainz-style/2010-February/008657.html<br />
|champion=Jormangeud <br />
|rfc=<br />
|rfv=<br />
|status=In development<br />
|ar=<br />
|style=true<br />
|trac=2147<br />
}}<br />
<br />
'''Official guideline is now: [[Style/Specific types of releases/Audiobook]]'''<br />
<br />
== Style for narrations of works of literature ==<br />
<br />
Initially the old [[Style Dude|StyleDude]] decided not to have a guideline for audio books. However, an AudioBookStyle for [[Audio Books|AudioBook]] has been under way on the style mailing lists.<br />
<br />
===Initial "Style": NoAudioBookGuideline===<br />
<br />
[[User:TarragonAllen|TarragonAllen]] wrote on 2004-08-28: <br />
<ul><li style="list-style-type:none">As the database is set up primarily as a music resource audio books and other related spoken word releases do not map very well into the current data-set. As such, audio books and other related spoken word releases are allowed in the database but there will be no official standards for how they are entered, sorted or categorised, nor will there be any official style guidelines for them. If people wish to create their own style guidelines for audio books and other related spoken word releases they are free to do so, but there will be [[No Audio Book Guideline|NoAudioBookGuideline]]. <br />
</ul><br />
<br />
===New Guideline for Audio Books===<br />
<br />
The most important characteristic of such a guideline is to ensure that the tracks are sorted in the right sequence, if a user chooses to rename the tracks without the track number -> encode Chapter and Sub-chapters into the trackname. <br />
<br />
I'd like to propose the following naming Scheme: <br />
* Include the Chapter number in titles like <br />
** "Chapter 01: Name of Chapter" <br />
*** Note that the numbers are always expanded to 2 digits (add 0 before if number<10) <br />
*** If the current chapter is continued from a previous medium, append '''(continued)''''' <br />
<br />
* For chapters spread over more than one physical track, include the sequence number of the current ''subchapter sequence number'' <br />
** "Chapter 01-01: Title of subchapter" '''or''' <br />
** "Chapter 01-01: Title of chapter" (if the subchapter has no title) <br />
<br />
Next possible steps to take: <br />
* browse [http://musicbrainz.org/browsevarious.html?reltype=8&artists=all albums] and see what a mess the audiobooks section really is '''and''' <br />
* have a look at the albums of [http://musicbrainz.org/artist/569c0d90-28dd-413b-83e4-aaa7c27e667b.html J.K. Rowling] to see a somewhat organized listing, but with different numbering styles, and decide if we could make the proposal above official'' -- [[User:Keschte|Keschte]] <br />
<br />
==Example==<br />
<br />
''Bonjour tristesse'' ([[Album:9e5b337f-2964-46a9-8de3-19a11fb8cafa|disc 1]], [[Album:371c27af-6fe9-4d03-9c01-8edb72508a39|disc 2]], [[Album:1a629396-9a2c-48ba-9744-763be854cad5|disc 3]])</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=PUID&diff=64943PUID2013-11-08T01:55:43Z<p>JonnyJD: update, since PUIDs are now removed</p>
<hr />
<div>PUIDs (Portable Unique IDentifier) are the IDs used in the proprietary [[MusicDNS]] [[Audio Fingerprint|AudioFingerprint]]ing system which was initially operated by [[MusicIP]], later [[AmpliFIND]] and even later sold on to Gracenote who are expected to discontinue the public service.<br />
<br />
[[MusicBrainz]] started to use these IDs in March 2006 and they were implemented in Picard 0.7.0 released in July 2006.<br />
In October 2013 PUID support was removed from the MusicBrainz server.<br />
<br />
The preferred fingerprinting method are now [[AcoustID]]s.<br />
<br />
* [[How PUIDs Work|HowPUIDsWork]] <br />
* Several blogposts on the [[MusicBrainz Blog]] by [[User:RobertKaye|RobertKaye]]: <br />
** March 12, 2006 [http://blog.musicbrainz.org/archives/2006/03/new_fingerprint.html New fingerprinting technology available now!] <br />
** March 13, 2006 [http://blog.musicbrainz.org/archives/2006/03/finger_fingerpr.html New fingerprinting questions answered] <br />
** March 28, 2006 [http://blog.musicbrainz.org/archives/2006/03/picard_common_q.html Picard: Common questions answered] and <br />
** March 30, 2006 [http://blog.musicbrainz.org/archives/2006/03/puids_wtf.html PUIDs: WTF?] <br />
** June 23, 2011 [http://blog.musicbrainz.org/?p=945 The EchoNest releases Echoprints: The open source fingerprint era has begun]<br />
** March 21, 2013 [http://blog.musicbrainz.org/2013/03/21/puids-are-deprecated-and-will-be-removed-on-15-october-2013/ PUIDs are deprecated and will be removed on 15 October, 2013]<br />
<br />
[[Category:Terminology]] [[Category:Identifier]] [[Category:To Be Reviewed]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=MusicBrainz_API/XML&diff=64942MusicBrainz API/XML2013-11-08T01:51:39Z<p>JonnyJD: remove documentation for PUIDs, since they aren't supported anymore</p>
<hr />
<div><small>[[Products]] > XML Web Service Version 2</small> <br />
<br />
The web service discussed in this document is an interface to the [[MusicBrainz Database]]. It is aimed at developers of media players, CD rippers, taggers, and other applications requiring music metadata. The service's architecture follows the REST design principles. Interaction with the web service is done using HTTP and all content is served in a simple but flexible XML format.<br />
<br />
The web service root URL is <code><nowiki>http://musicbrainz.org/ws/2/</nowiki></code>.<br />
<br />
This page documents version 2 of our XML web service. Version 1 has been deprecated, but its documentation [[XML_Web_Service/Version_1|can still be referenced]]. [[Live_Data_Feed|Non-commercial]] use of this web service is free; please [[Contact_Us|contact us]] if you would like to use this service commercially.<br />
<br />
==Introduction==<br />
<br />
We have eight resources on our web service which represent core entities in our database:<br />
<br />
artist, label, recording, release, release-group, work, area, url<br />
<br />
We also provide a web service interface for the following non-core resources:<br />
<br />
rating, tag, collection<br />
<br />
And we allow you to perform lookups based on other unique identifiers with these resources:<br />
<br />
discid, isrc, iswc<br />
<br />
On each entity resource, you can perform three different GET requests:<br />
<br />
lookup: /<ENTITY>/<MBID>?inc=<INC><br />
browse: /<ENTITY>?<ENTITY>=<MBID>&limit=<LIMIT>&offset=<OFFSET>&inc=<INC><br />
search: /<ENTITY>?query=<QUERY>&limit=<LIMIT>&offset=<OFFSET><br />
<br />
... except that search is not implemented for URL entities at this time.<br />
<br />
Of these:<br />
<br />
* Lookups, Non-MBID lookups and Browse requests are documented in following sections.<br />
<br />
==Searches==<br />
Searches are documented at [[/Search|Web Service Search]].<br />
<br />
==Lookups==<br />
<br />
You can perform a lookup of an entity when you have the MBID for that entity:<br />
<br />
lookup: /<ENTITY>/<MBID>?inc=<INC><br />
<br />
Note that unless you have provided an MBID in exactly the format listed, you are not performing a lookup request. If your URL includes something like artist=<MBID>, then please see the [[#Browse|Browse]] section. If it includes query=<QUERY>, please see the [[/Search|Web Service Search]] page.<br />
<br />
===Subqueries===<br />
<br />
The inc= is parameter allows you to request more information to be included about<br />
the entity. Any of the entities directly linked to the entity can be included.<br />
<br />
/ws/2/artist recordings, releases, release-groups, works<br />
/ws/2/label releases<br />
/ws/2/recording artists, releases<br />
/ws/2/release artists, labels, recordings, release-groups<br />
/ws/2/release-group artists, releases<br />
/ws/2/work<br />
/ws/2/area<br />
/ws/2/url<br />
<br />
In addition, [[#Relationships|Relationships]] are available for all entity types via inc parameters.<br />
<br />
To include more than one subquery in a single request, separate the arguments to <code>inc=</code> with a + (plus sign), like <code>inc=recordings+labels</code>.<br />
<br />
All lookups which include release-groups allow a type= argument to narrow down the release-groups.<br />
All lookups which include releases also allow the type= argument, and a status= argument is allowed.<br />
<br />
Note that the number of linked entities returned is always limited to 25,<br />
if you need the remaining results, you will have to perform a browse request.<br />
<br />
Linked entities are always ordered alphabetically by gid.<br />
<br />
=== inc= arguments which affect subqueries ===<br />
<br />
Some additional inc= parameters are supported to specify how much of the data about<br />
the linked entities should be included:<br />
<br />
- discids include discids for all media in the releases<br />
- media include media for all releases, this includes the # of tracks on each medium and its format.<br />
- isrcs include isrcs for all recordings<br />
- artist-credits include artists credits for all releases and recordings<br />
- various-artists include only those releases where the artist appears on one of the tracks, <br />
but not in the artist credit for the release itself (this is only valid on a<br />
/ws/2/artist?inc=releases request).<br />
<br />
=== Misc inc= arguments ===<br />
<br />
- aliases include artist, label, area or work aliases; treat these as a set, as they are not deliberately ordered<br />
- annotation include annotation<br />
- tags, ratings include tags and/or ratings for the entity (not valid on releases)<br />
- user-tags, user-ratings same as above, but only return the tags and/or ratings submitted by the specified user<br />
<br />
Requests with user-tags or user-ratings require authentication. You can authenticate using HTTP Digest, use the same username and password used to access the main http://musicbrainz.org website.<br />
<br />
=== Relationships ===<br />
<br />
- artist-rels<br />
- label-rels<br />
- recording-rels<br />
- release-rels<br />
- release-group-rels<br />
- url-rels<br />
- work-rels<br />
<br />
By default, these 'inc=' arguments will only load relationship for the requested entity. When you are loading a release, you might want to load relationships for all its recordings and also works linked to the recordings. This is useful to get full release credits. There are additional arguments that can be used only on release requests and allow you to specify for which entities to load relationships:<br />
<br />
- recording-level-rels<br />
- work-level-rels<br />
<br />
==Non-MBID Lookups==<br />
<br />
Instead of MBIDs, you can also perform lookups using several other unique identifiers. However, because clashes sometimes occur, each of these lookups return a list of entities (there is no limit, all linked entities will be returned, paging is not supported).<br />
<br />
=== discid ===<br />
<br />
lookup: /discid/<discid>?inc=<INC>&toc=<TOC><br />
<br />
A discid lookup returns a list of associated releases, the 'inc=' arguments supported are identical to a lookup request for a release.<br />
<br />
If there are no matching releases in MusicBrainz, but a matching [[CD Stub|CDStub]] exists, it will be returned. This is the default behaviour. If you do ''not'' want to see CD stubs, pass 'cdstubs=no.' CD stubs are contained within a <cdstub> element, and otherwise have the same form as a release. Note that CD stubs do not have artist credits, just artists.<br />
<br />
If you provide the "toc" query parameter, and if the provided discid is not known by MusicBrainz, a fuzzy lookup will done to find matching MusicBrainz releases. Note that if CD stubs are found this will not happen. If you do want TOC fuzzy lookup, but not cdstub searching, specify "cdstubs=no". For example:<br />
<br />
/ws/2/discid/I5l9cCSFccLKFEKS.7wqSZAorPU-?toc=1+12+267257+150+22767+41887+58317+72102+91375+104652+115380+132165+143932+159870+174597<br />
<br />
Will look for the disc id first, and if it fails, will try to find tracklists that are within a similar distance to the one provided.<br />
<br />
The toc consists of the following:<br />
* First track (always 1)<br />
* total number of tracks<br />
* sector offset of the leadout (end of the disc<br />
* a list of sector offsets for each track, beginning with track 1 (generally 150 sectors)<br />
<br />
=== isrc ===<br />
<br />
lookup: /isrc/<isrc>?inc=<INC><br />
<br />
isrc lookups return a list of recordings, the 'inc=' arguments supported are identical to a lookup request for a recording.<br />
<br />
=== iswc ===<br />
<br />
lookup: /iswc/<iswc>?inc=<INC><br />
<br />
An iswc lookup returns a list of works, the 'inc=' arguments supported are identical to a lookup request for a work.<br />
<br />
==Browse==<br />
<br />
Browse requests are a direct lookup of all the entities directly linked to another entity. (with directly linked I am referring to any relationship inherent in the database, so no ARs). For example, you may want to see all releases on netlabel ubiktune:<br />
<br />
/ws/2/release?label=47e718e1-7ee4-460c-b1cc-1192a841c6e5<br />
<br />
Note that browse requests are not searches, in order to browse all the releases on the ubiktune label you will need to know the MBID of ubiktune.<br />
<br />
Browsed entities are always ordered alphabetically by gid. If you need to sort the entities, you will have to fetch all entities (see "Paging" below) and sort them yourself.<br />
<br />
===Linked entities===<br />
<br />
The following list shows which linked entities you can use in a browse request:<br />
<br />
/ws/2/artist recording, release, release-group, work<br />
/ws/2/label release<br />
/ws/2/recording artist, release<br />
/ws/2/release artist, label, recording, release-group<br />
/ws/2/release-group artist, release<br />
/ws/2/work<br />
/ws/2/area<br />
/ws/2/url resource<br />
<br />
As a special case, release also allows track_artist, which is intended to allow you to browse various artist appearances for an artist. It will return any release where the artist appears in the artist_credit for a track, but NOT in the artist_credit for the entire release (as those would already have been returned in a request with artist=<MBID>).<br />
<br />
The URL endpoint's 'resource' entity is for providing a URL directly, rather than a URL MBID, for example https://musicbrainz.org/ws/2/url?resource=http://www.madonna.com/ versus https://musicbrainz.org/ws/2/url/b663423b-9b54-4067-9674-fffaecf68851. This URL will need to be appropriately URL-escaped for inclusion as a query parameter; this means that URLs that include url-escaped parameters, or query parameters of their own, will need to be escaped a second time.<br />
<br />
Release-groups can be filtered on type, and releases can be filtered on type and/or status. For example, if you want all the Live Bootleg releases by Metallica:<br />
<br />
/ws/2/release?artist=65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab&status=bootleg&type=live<br />
<br />
Or all albums and EPs by Autechre:<br />
<br />
/ws/2/release-group?artist=410c9baf-5469-44f6-9852-826524b80c61&type=album|ep<br />
<br />
Note that filtering is mandatory, if you don't specify type or status the release and release-group resources will not return any results.<br />
<br />
===Paging===<br />
<br />
Browse requests are the only requests which support paging, any browse request supports an 'offset=' argument to get more results. Browse requests also support 'limit=', the default limit is 25, and you can increase that up to 100.<br />
<br />
=== inc= ===<br />
<br />
Just like with normal lookup requests, the server can be instructed to include more data about the entity using an 'inc=' argument. Supported values for inc= are:<br />
<br />
/ws/2/artist aliases<br />
/ws/2/label aliases<br />
/ws/2/recording artist-credits<br />
/ws/2/release artist-credits, labels, recordings, release-groups, media, discids<br />
/ws/2/release-group artist-credits<br />
/ws/2/work aliases<br />
/ws/2/area aliases<br />
<br />
In addition to the inc= values listed above, all entities (except release) support:<br />
<br />
tags, ratings, user-tags, user-ratings<br />
<br />
In addition, [[#Relationships|Relationships]] are available for all entity types via inc parameters, as with lookup requests.<br />
<br />
== Release Type and Status ==<br />
<br />
Any query which includes release-groups in the results can be filtered to only include release groups of a certain type. Any query which includes releases in the results can be filtered to only include releases of a certain type and/or status. Valid values are:<br />
<br />
status official, promotion, bootleg, pseudo-release<br />
type nat, album, single, ep, compilation, soundtrack, spokenword, interview, audiobook, live, remix, other<br />
<br />
== Submitting data ==<br />
<br />
You can use the web service to submit certain kinds of data. Currently tags, ratings and ISRCs can be entered through the web service.<br />
<br />
=== Authentication ===<br />
<br />
All POST requests require authentication. You should authenticate using HTTP Digest, use the same username and password you use to access the main http://musicbrainz.org website. The realm is "musicbrainz.org".<br />
<br />
POST requests should always include a 'client' parameter in the URL (not the body). The value of 'client' should be the ID of the client software submitting data. This has to be the application's name and version number, not that of a client library (client libraries should use HTTP's User-Agent header). The recommended format is "application-version", where version does not contain a - character.<br />
<br />
=== User Data ===<br />
<br />
You can submit tags and ratings through the web service using POST requests. As described above, client software needs to identify itself using the 'client=' parameter. In the following examples I will use 'example.app-0.4.7' as the client identifier, this is obviously a fictitious client.<br />
<br />
==== tags ====<br />
<br />
To submit tags, perform a POST request to the /ws/2/tag url, like this:<br />
<br />
/ws/2/tag?client=example.app-0.4.7<br />
<br />
The body of your request should be an XML formatted list of entities with <user-tag> elements. You can validate your XML request against our schema (http://svn.musicbrainz.org/mmd-schema/trunk/schema/musicbrainz_mmd-2.0.rng).<br />
<br />
An example request is reproduced below:<br />
<br />
<pre><br />
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><br />
<artist-list><br />
<artist id="a16d1433-ba89-4f72-a47b-a370add0bb56"><br />
<user-tag-list><br />
<user-tag><name>female</name></user-tag><br />
<user-tag><name>korean</name></user-tag><br />
<user-tag><name>jpop</name></user-tag><br />
</user-tag-list><br />
</artist><br />
</artist-list><br />
<recording-list><br />
<recording id="047ea202-b98d-46ae-97f7-0180a20ee5cf"><br />
<user-tag-list><br />
<user-tag><name>noise</name></user-tag><br />
</user-tag-list><br />
</recording><br />
</recording-list><br />
</metadata><br />
</pre><br />
<br />
Because you're sending XML in the body of your POST request, make sure to also set the Content-Type to "application/xml; charset=utf-8".<br />
<br />
For examples, see [[/examples|examples]].<br />
<br />
==== ratings ====<br />
<br />
To submit ratings, perform a POST request to the /ws/2/rating url, like this:<br />
<br />
/ws/2/rating?client=example.app-0.4.7<br />
<br />
The body of your request should be an XML formatted list of entities with <user-rating> elements. You can validate your XML request against our schema (http://svn.musicbrainz.org/mmd-schema/trunk/schema/musicbrainz_mmd-2.0.rng).<br />
<br />
An example request is reproduced below:<br />
<br />
<pre><br />
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><br />
<artist-list><br />
<artist id="455641ea-fff4-49f6-8fb4-49f961d8f1ad"><br />
<user-rating>100</user-rating><br />
</artist><br />
</artist-list><br />
<recording-list><br />
<recording id="c410a773-c6eb-4bc0-9df8-042fe6645c63"><br />
<user-rating>20</user-rating><br />
</recording><br />
</recording-list><br />
</metadata><br />
</pre><br />
<br />
==== collections ====<br />
<br />
To add and remove release from your collection perform a PUT and DELETE requests to /ws/2/collection/releases, respectively. For example:<br />
<br />
PUT /ws/2/collection/f4784850-3844-11e0-9e42-0800200c9a66/releases/455641ea-fff4-49f6-8fb4-49f961d8f1ad;c410a773-c6eb-4bc0-9df8-042fe6645c63?client=example.app-0.4.7<br />
DELETE /ws/2/collection/f4784850-3844-11e0-9e42-0800200c9a66/releases/455641ea-fff4-49f6-8fb4-49f961d8f1ad;?client=example.app-0.4.7<br />
<br />
You may submit up to ~400 releases in a single request, separated by a semicolon (;), as the PUT example above shows. You are restricted to a maximum URI length of 16kb at the moment (which roughly equates to 400 release gids)<br />
<br />
To get the contents of a collection, simple send a GET request to the releases resource:<br />
<br />
GET /ws/2/collection/f4784850-3844-11e0-9e42-0800200c9a66/releases<br />
<br />
You can also perform a get request on the collection list, which will present you a list of collections for the currently authenticated user, with the amount of releases in each collection:<br />
<br />
GET /ws/2/collection<br />
<br />
<br />
=== Barcode submission ===<br />
<br />
Barcodes may be associated with releases by issuing an XML POST request to:<br />
<br />
/ws/2/release/?client=example.app-0.4.7<br />
<br />
The body of the request must be an XML document with a list of <releases>s in a <release-list>, and a single barcode in a <barcode> element for each release. For example:<br />
<br />
<pre><br />
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><br />
<release-list><br />
<release id="047ea202-b98d-46ae-97f7-0180a20ee5cf"><br />
<barcode>9780262560933</barcode><br />
</release><br />
</release-list><br />
</metadata><br />
</pre><br />
<br />
You can validate your XML request against our schema (http://svn.musicbrainz.org/mmd-schema/trunk/schema/musicbrainz_mmd-2.0.rng).<br />
<br />
Upon issuing this request MusicBrainz will create a single edit in the edit queue for applying these changes. These changes will ''not'' be automatically applied, though they will be applied if either no one votes against your changes, or your changes expire (this edit is applied on expiration).<br />
<br />
=== ISRC submission ===<br />
<br />
ISRCs may be associated with recordings by issuing an XML POST request to:<br />
<br />
/ws/2/recording/?client=example.app-0.4.7<br />
<br />
The body of the request must be an XML document with a list of <recording>s in a <recording-list>, and a list of <ISRC>s in a <isrc-list> to be associated with the recordings. For example:<br />
<br />
<pre><br />
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><br />
<recording-list><br />
<recording id="b9991644-7275-44db-bc43-fff6c6b4ce69"><br />
<isrc-list count="1"><br />
<isrc id="JPB600601201" /><br />
</isrc-list><br />
</recording><br />
<recording id="75c961c9-6e00-4861-9c9d-e6ca90d57342"><br />
<isrc-list count="1"><br />
<isrc id="JPB600523201" /><br />
</isrc-list><br />
</recording><br />
</recording-list><br />
</metadata><br />
</pre><br />
<br />
Example code which illustrates this process can be found in our subversion repository: [http://svn.musicbrainz.org/miscellaneous/trunk/isrcsubmit-python/ isrcsubmit-python].<br />
<br />
==Limiting Connections to the MusicBrainz Web Service==<br />
<br />
All users of the XML web service must ensure that each of their client applications never make more than ONE web service call per second. Making more than one call per second drives up the load on the servers and prevents others from using MusicBrainz. If you impact the server by making more than one call per second, your IP address may be blocked preventing all further access to MusicBrainz. For more details on this, please see our [[XML_Web_Service/Rate_Limiting|rate limiting page]].<br />
<br />
==Identifying your application to the MusicBrainz Web Service==<br />
<br />
It is important that your application set a proper User-Agent string in its HTTP request headers. Please read our [[XML_Web_Service/Rate_Limiting|rate limiting]] documentation for more details.<br />
<br />
==Libraries to use the Web Service==<br />
<br />
The Web Service can be accessed with [[libmusicbrainz]].<br />
<br />
===3rd party libraries===<br />
<br />
* Python: [http://python-musicbrainzngs.readthedocs.org/ python-musicbrainzngs] Python2/3 bindings<br />
* Java: [http://code.google.com/p/musicbrainzws2-java/ musicbrainzws2-java]<br />
* Ruby:<br />
** [https://github.com/dwo/musicbrainz-ruby musicbrain-ruby]<br />
** [https://github.com/magnolia-fan/musicbrainz magnolia-fan/musicbrainz] ruby 1.9+<br />
* PHP: [https://github.com/mikealmond/MusicBrainz mikealmond/MusicBrainz], a fork of [[phpbrainz]]<br />
* C#: [https://github.com/avatar29A/MusicBrainz avatar29A/MusicBrainz]<br />
* Objective-C: [https://github.com/demosdemon/libmusicbrainz-objc libmusicbrainz-objc]<br />
* Haskell:<br />
** [http://hackage.haskell.org/package/MusicBrainz Clint Adams' bindings (hackage)]<br />
** [https://github.com/ocharles/haskell-musicbrainz-ws2 haskell-musicbrainz-ws2 (ocharles)]<br />
* common lisp: [https://github.com/0/cl-musicbrainz cl-musicbrainz]<br />
* Perl: [https://github.com/mavit/webservice-musicbrainz/tree/ws2 Work in progress]. Patches welcome!<br />
<br />
[[Category:Development]] [[Category:Products]] [[Category:WikiDocs Page]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=MusicBrainz_Picard&diff=64922MusicBrainz Picard2013-11-01T17:48:55Z<p>JonnyJD: /* Development */ also link OS X instructions, while at it.</p>
<hr />
<div><small>[[Products]] > MusicBrainz Picard </small> <br />
<br />
{| class="wikitable" style="float: right; margin: 0 0 10px 10px"<br />
| [[Image:picard_demo_500.png]]<br />
|}<br />
<br />
'''MusicBrainz Picard''' is a cross-platform (Linux/Mac OS X/Windows) application written in Python and is the official MusicBrainz tagger.<br />
<br />
Picard supports the majority of audio file formats, is capable of using audio fingerprints ([[AcoustID]]s), performing CD lookups and [[Disc ID|disc ID]] submissions, and it has excellent Unicode support. Additionally, there are several [[Picard Plugins|plugins]] available that extend Picard's features.<br />
<br />
When tagging files, Picard uses an album-oriented approach. This approach allows it to utilize the MusicBrainz data as effectively as possible and correctly tag your music. For more information, see the [[How To Tag Files With Picard|illustrated quick start guide to tagging]].<br />
<br />
Picard is named after Captain Jean-Luc Picard from the TV series ''Star Trek: The Next Generation''.<br />
<br />
== Download ==<br />
<br />
<br />
<div style="background-color:#FFFAF5; border: 1px solid #FFDAA4; padding:10px 20px; width: 360px; margin: 20px 20px 20px 0"><br />
'''MusicBrainz Picard for Windows <br /><br />
Download: [http://ftp.musicbrainz.org/pub/musicbrainz/picard/picard-setup-1.2.exe picard-setup-1.2.exe]<br /><br />
EU mirror: [http://mirrors.dotsrc.org/MusicBrainz/picard/picard-setup-1.2.exe picard-setup-1.2.exe]<br /><br />
Size: 8.4M installer<br/><br />
Version: 1.2 <br /><br />
MD5: <small>87662658e404e666f8ee506e53771741</small><br />
</div><br />
<br />
<div style="background-color:#FFFAF5; border: 1px solid #FFDAA4; padding: 10px 20px; width: 360px; margin: 0 20px 20px 0;"><br />
'''MusicBrainz Picard for Mac OS X 10.7+ (x86_64)<br /><br />
Download: [ftp://ftp.musicbrainz.org/pub/musicbrainz/picard/MusicBrainz-Picard-1.2-x86_64.dmg MusicBrainz-Picard-1.2-x86_64.dmg]<br /><br />
EU mirror: [http://mirrors.dotsrc.org/MusicBrainz/picard/MusicBrainz-Picard-1.2-x86_64.dmg MusicBrainz-Picard-1.2-x86_64.dmg]<br /><br />
Size: 14M <br /><br />
Version: 1.2 <br /><br />
MD5: <small>605a40e9c168a00c9cb000b913afade3</small><br />
</div><br />
<br />
<div style="background-color:#FFFAF5; border: 1px solid #FFDAA4; padding: 10px 20px; width: 360px; margin: 0 20px 20px 0;"><br />
'''MusicBrainz Picard for Mac OS X 10.4–10.6 (i386)<br /><br />
Download: [ftp://ftp.musicbrainz.org/pub/musicbrainz/picard/MusicBrainz-Picard-1.2.dmg MusicBrainz-Picard-1.2.dmg]<br /><br />
EU mirror: [http://mirrors.dotsrc.org/MusicBrainz/picard/MusicBrainz-Picard-1.2.dmg MusicBrainz-Picard-1.2.dmg]<br /><br />
Size: 13M <b>intel only binary</b> <br /><br />
Version: 1.2 <br /><br />
MD5: <small>db8c5c9f1221b11904305d3e280421bb</small><br />
</div><br />
<br />
<div style="background-color:#FFFAF5; border: 1px solid #FFDAA4; padding: 10px 20px; width: 360px; margin-bottom: 20px;"><br />
'''MusicBrainz Picard source code <br /><br />
Download: [http://ftp.musicbrainz.org/pub/musicbrainz/picard/picard-1.2.tar.gz picard-1.2.tar.gz]<br /><br />
EU mirror: [http://mirrors.dotsrc.org/MusicBrainz/picard/picard-1.2.tar.gz picard-1.2.tar.gz]<br /><br />
Size: 1.7M tarball <br /><br />
Version: 1.2<br /><br />
MD5: <small>d1086687b7f7b0d359a731b1a25e7b66</small><br />
</div><br />
<br />
A list of changes for version 1.2 can be found in the [http://blog.musicbrainz.org/?p=1856 musicbrainz blog].<br />
<br />
For Windows users: If you get an error about being unable to run the program, install the [http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en Microsoft Visual C++ 2008 Redistributable Package (x86)].<br />
<br />
For earlier releases of Picard, [http://ftp.musicbrainz.org/pub/musicbrainz/picard/?C=M;O=D browse the FTP server].<br />
<br />
== Linux Distributions ==<br />
<br />
Picard is also available in many distributions' software repositories. (Using Fedora? [[Picard_FAQ#I_am_using_Fedora.2C_why_doesn.27t_acoustic_fingerprinting_work.3F|See the FAQ]].)<br />
<br />
* Ubuntu: [https://launchpad.net/~musicbrainz-developers/+archive/stable MusicBrainz stable PPA] &middot; [https://launchpad.net/~musicbrainz-developers/+archive/daily MusicBrainz daily PPA]<br />
* Arch Linux: [https://www.archlinux.org/packages/community/x86_64/picard/ community] &middot; [https://aur.archlinux.org/packages.php?ID=52460 AUR]<br />
* Gentoo: emerge [http://packages.gentoo.org/package/media-sound/picard media-sound/picard]<br />
<br />
== Documentation ==<br />
<br />
'''Getting started''':<br />
* [[How To Tag Files With Picard|Illustrated quick start guide to tagging]]<br />
* [[/Documentation|Picard documentation]]<br />
* [[/FAQ|Picard FAQ]]<br />
* [[MusicBrainz Picard/Troubleshooting|Picard troubleshooting]]<br />
<br />
'''Customization''':<br />
* [[/Plugins|Picard plugins]]<br />
* [[/Plugins/API|Picard plugins API]]<br />
* [[/Documentation/Scripting|Picard scripting]]<br />
* [[/Tags|Picard tags]]<br />
<br />
== Need further help? ==<br />
<br />
If you need help or have any questions about using Picard, you can turn to the [[Users Mailing List|users mailing list]] or the [[MusicBrainz Forum|forum]]. If you think you have found a bug, please see the [[MusicBrainz Picard/Troubleshooting|troubleshooting]] page. In other cases you can [[Contact Us|contact us]].<br />
<br />
== Development ==<br />
<br />
The source code of Picard is maintained in Git and you can get it with all its history using: <br />
<br />
git clone git://github.com/musicbrainz/picard.git<br />
<br />
or you can fork or clone the mirrored [https://github.com/musicbrainz/picard repo from GitHub] in the normal GitHub way. Pull requests and discussion on GitHub is generally preferred and all such requests will be considered.<br />
<br />
If you are interested in providing development assistance, contact us by either posting on the [[Developers Mailing List|developers mailing list]] or joining the #musicbrainz-devel IRC channel on irc.freenode.net.<br />
<br />
If you want to install Picard from source on Windows, there is [[How to Build Picard for Windows]]. For Mac there is [[User:Bitmap/Building Picard on OS X|Bitmap/Building Picard on OS X]]<br />
<br />
== License ==<br />
<br />
Picard is licensed under the [http://www.gnu.org/copyleft/gpl.html GPL 2.0 or later].<br />
<br />
__NOTOC__<br />
[[Category:MusicBrainz Picard]] [[Category:Products]] [[Category:Download]] [[Category:WikiDocs Page]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=MusicBrainz_Picard&diff=64920MusicBrainz Picard2013-11-01T17:30:38Z<p>JonnyJD: /* Development */ link Howto for building on Windows</p>
<hr />
<div><small>[[Products]] > MusicBrainz Picard </small> <br />
<br />
{| class="wikitable" style="float: right; margin: 0 0 10px 10px"<br />
| [[Image:picard_demo_500.png]]<br />
|}<br />
<br />
'''MusicBrainz Picard''' is a cross-platform (Linux/Mac OS X/Windows) application written in Python and is the official MusicBrainz tagger.<br />
<br />
Picard supports the majority of audio file formats, is capable of using audio fingerprints ([[AcoustID]]s), performing CD lookups and [[Disc ID|disc ID]] submissions, and it has excellent Unicode support. Additionally, there are several [[Picard Plugins|plugins]] available that extend Picard's features.<br />
<br />
When tagging files, Picard uses an album-oriented approach. This approach allows it to utilize the MusicBrainz data as effectively as possible and correctly tag your music. For more information, see the [[How To Tag Files With Picard|illustrated quick start guide to tagging]].<br />
<br />
Picard is named after Captain Jean-Luc Picard from the TV series ''Star Trek: The Next Generation''.<br />
<br />
== Download ==<br />
<br />
<br />
<div style="background-color:#FFFAF5; border: 1px solid #FFDAA4; padding:10px 20px; width: 360px; margin: 20px 20px 20px 0"><br />
'''MusicBrainz Picard for Windows <br /><br />
Download: [http://ftp.musicbrainz.org/pub/musicbrainz/picard/picard-setup-1.2.exe picard-setup-1.2.exe]<br /><br />
EU mirror: [http://mirrors.dotsrc.org/MusicBrainz/picard/picard-setup-1.2.exe picard-setup-1.2.exe]<br /><br />
Size: 8.4M installer<br/><br />
Version: 1.2 <br /><br />
MD5: <small>87662658e404e666f8ee506e53771741</small><br />
</div><br />
<br />
<div style="background-color:#FFFAF5; border: 1px solid #FFDAA4; padding: 10px 20px; width: 360px; margin: 0 20px 20px 0;"><br />
'''MusicBrainz Picard for Mac OS X 10.7+ (x86_64)<br /><br />
Download: [ftp://ftp.musicbrainz.org/pub/musicbrainz/picard/MusicBrainz-Picard-1.2-x86_64.dmg MusicBrainz-Picard-1.2-x86_64.dmg]<br /><br />
EU mirror: [http://mirrors.dotsrc.org/MusicBrainz/picard/MusicBrainz-Picard-1.2-x86_64.dmg MusicBrainz-Picard-1.2-x86_64.dmg]<br /><br />
Size: 14M <br /><br />
Version: 1.2 <br /><br />
MD5: <small>605a40e9c168a00c9cb000b913afade3</small><br />
</div><br />
<br />
<div style="background-color:#FFFAF5; border: 1px solid #FFDAA4; padding: 10px 20px; width: 360px; margin: 0 20px 20px 0;"><br />
'''MusicBrainz Picard for Mac OS X 10.4–10.6 (i386)<br /><br />
Download: [ftp://ftp.musicbrainz.org/pub/musicbrainz/picard/MusicBrainz-Picard-1.2.dmg MusicBrainz-Picard-1.2.dmg]<br /><br />
EU mirror: [http://mirrors.dotsrc.org/MusicBrainz/picard/MusicBrainz-Picard-1.2.dmg MusicBrainz-Picard-1.2.dmg]<br /><br />
Size: 13M <b>intel only binary</b> <br /><br />
Version: 1.2 <br /><br />
MD5: <small>db8c5c9f1221b11904305d3e280421bb</small><br />
</div><br />
<br />
<div style="background-color:#FFFAF5; border: 1px solid #FFDAA4; padding: 10px 20px; width: 360px; margin-bottom: 20px;"><br />
'''MusicBrainz Picard source code <br /><br />
Download: [http://ftp.musicbrainz.org/pub/musicbrainz/picard/picard-1.2.tar.gz picard-1.2.tar.gz]<br /><br />
EU mirror: [http://mirrors.dotsrc.org/MusicBrainz/picard/picard-1.2.tar.gz picard-1.2.tar.gz]<br /><br />
Size: 1.7M tarball <br /><br />
Version: 1.2<br /><br />
MD5: <small>d1086687b7f7b0d359a731b1a25e7b66</small><br />
</div><br />
<br />
A list of changes for version 1.2 can be found in the [http://blog.musicbrainz.org/?p=1856 musicbrainz blog].<br />
<br />
For Windows users: If you get an error about being unable to run the program, install the [http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en Microsoft Visual C++ 2008 Redistributable Package (x86)].<br />
<br />
For earlier releases of Picard, [http://ftp.musicbrainz.org/pub/musicbrainz/picard/?C=M;O=D browse the FTP server].<br />
<br />
== Linux Distributions ==<br />
<br />
Picard is also available in many distributions' software repositories. (Using Fedora? [[Picard_FAQ#I_am_using_Fedora.2C_why_doesn.27t_acoustic_fingerprinting_work.3F|See the FAQ]].)<br />
<br />
* Ubuntu: [https://launchpad.net/~musicbrainz-developers/+archive/stable MusicBrainz stable PPA] &middot; [https://launchpad.net/~musicbrainz-developers/+archive/daily MusicBrainz daily PPA]<br />
* Arch Linux: [https://www.archlinux.org/packages/community/x86_64/picard/ community] &middot; [https://aur.archlinux.org/packages.php?ID=52460 AUR]<br />
* Gentoo: emerge [http://packages.gentoo.org/package/media-sound/picard media-sound/picard]<br />
<br />
== Documentation ==<br />
<br />
'''Getting started''':<br />
* [[How To Tag Files With Picard|Illustrated quick start guide to tagging]]<br />
* [[/Documentation|Picard documentation]]<br />
* [[/FAQ|Picard FAQ]]<br />
* [[MusicBrainz Picard/Troubleshooting|Picard troubleshooting]]<br />
<br />
'''Customization''':<br />
* [[/Plugins|Picard plugins]]<br />
* [[/Plugins/API|Picard plugins API]]<br />
* [[/Documentation/Scripting|Picard scripting]]<br />
* [[/Tags|Picard tags]]<br />
<br />
== Need further help? ==<br />
<br />
If you need help or have any questions about using Picard, you can turn to the [[Users Mailing List|users mailing list]] or the [[MusicBrainz Forum|forum]]. If you think you have found a bug, please see the [[MusicBrainz Picard/Troubleshooting|troubleshooting]] page. In other cases you can [[Contact Us|contact us]].<br />
<br />
== Development ==<br />
<br />
The source code of Picard is maintained in Git and you can get it with all its history using: <br />
<br />
git clone git://github.com/musicbrainz/picard.git<br />
<br />
or you can fork or clone the mirrored [https://github.com/musicbrainz/picard repo from GitHub] in the normal GitHub way. Pull requests and discussion on GitHub is generally preferred and all such requests will be considered.<br />
<br />
If you are interested in providing development assistance, contact us by either posting on the [[Developers Mailing List|developers mailing list]] or joining the #musicbrainz-devel IRC channel on irc.freenode.net.<br />
<br />
If you want to install Picard from source on Windows, there is [[How to Build Picard for Windows]].<br />
<br />
== License ==<br />
<br />
Picard is licensed under the [http://www.gnu.org/copyleft/gpl.html GPL 2.0 or later].<br />
<br />
__NOTOC__<br />
[[Category:MusicBrainz Picard]] [[Category:Products]] [[Category:Download]] [[Category:WikiDocs Page]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=User:JonnyJD&diff=64904User:JonnyJD2013-10-29T15:25:26Z<p>JonnyJD: /* User Pages */ add Wikidata</p>
<hr />
<div>I wrote and maintain [http://jonnyjd.github.com/musicbrainz-isrcsubmit/ isrcsubmit.py] for Linux/Windows/Mac OS.<br />
I also recently created [https://python-discid.readthedocs.org/ python-discid] and now maintain [[libdiscid]].<br />
<br />
== WIP ==<br />
* [[User:JonnyJD/DiscID|JonnyJD/DiscID]]<br />
<br />
== User Pages ==<br />
* [http://musicbrainz.org/user/JonnyJD Musicbrainz User]<br />
* [http://forums.musicbrainz.org/profile.php?id=2817 MusicBrainz Forum User]<br />
* [http://last.fm/user/JonnyJD LastFM User]<br />
* [http://www.discogs.com/user/JonnyJD Discogs User]<br />
* [http://de.wikipedia.org/wiki/Benutzer:JonnyJD Wikipedia User]<br />
* [https://www.wikidata.org/wiki/User:JonnyJD Wikidata User]<br />
* [https://github.com/JonnyJD Github User]<br />
<br />
== Links ==<br />
* [http://musicbrainz.org/search/edits?order=desc&auto_edit_filter=&negation=0&combinator=and&conditions.0.field=type&conditions.0.operator=%3D&conditions.0.args=78&conditions.0.args=113&conditions.1.field=status&conditions.1.operator=%3D&conditions.1.args=1&conditions.2.field=editor&conditions.2.operator=!%3D&conditions.2.name=JonnyJD&conditions.2.=&conditions.2.args.0=361119&conditions.3.field=vote&conditions.3.operator=%3D&conditions.3.voter_id=361119&conditions.3.args=no&field=Please+choose+a+condition open remove ISRC/PUID edit not by me]<br />
* [http://musicbrainz.org/search/edits?auto_edit_filter=&order=desc&negation=0&combinator=and&conditions.0.field=status&conditions.0.operator=%3D&conditions.0.args=1&conditions.1.field=vote&conditions.1.operator=%3D&conditions.1.voter_id=361119&conditions.1.args=no&conditions.2.field=type&conditions.2.operator=%3D&conditions.2.args=245&conditions.2.args=58%2C253&field=Please+choose+a+condition set track time edits]<br />
* [http://musicbrainz.org/search/edits?order=desc&auto_edit_filter=&negation=0&combinator=and&conditions.0.field=type&conditions.0.operator=%3D&conditions.0.args=24&conditions.0.args=221%2C56&conditions.0.args=208&conditions.0.args=220%2C54&conditions.0.args=23&conditions.1.field=status&conditions.1.operator=%3D&conditions.1.args=1&conditions.2.field=editor&conditions.2.operator=!%3D&conditions.2.name=JonnyJD&conditions.2.=&conditions.2.args.0=361119&conditions.3.field=vote&conditions.3.operator=%3D&conditions.3.voter_id=361119&conditions.3.args=no&field=Please+choose+a+condition reorder release (soft)]<br />
* [http://musicbrainz.org/search/edits?order=desc&auto_edit_filter=&negation=0&combinator=and&conditions.0.field=type&conditions.0.operator=%3D&conditions.0.args=24&conditions.0.args=225%2C311%2C223&conditions.0.args=221%2C56&conditions.0.args=208&conditions.0.args=220%2C54&conditions.0.args=310%2C212&conditions.0.args=23&conditions.0.args=224&conditions.0.args=313&conditions.1.field=status&conditions.1.operator=%3D&conditions.1.args=1&conditions.2.field=editor&conditions.2.operator=!%3D&conditions.2.name=JonnyJD&conditions.2.=&conditions.2.args.0=361119&conditions.3.field=vote&conditions.3.operator=%3D&conditions.3.voter_id=361119&conditions.3.args=no&field=Please+choose+a+condition release reorder action]<br />
* [http://musicbrainz.org/mod/search/results.html?mod_status=1&automod=&moderator_id=361119&moderator_type=7&voter_type=0&voter_id=361119&vote_cast=-2&artist_type=1&orderby=asc&minid=&maxid=&isreset=0 Various Artist edits from subscribed editors]<br />
* [http://en.true-audio.com/Free_Downloads] with auCDtect you can check if the wav files are taken from a bootleg, created from mp3 or from an original release:<br />
{{lang de-native}}<br />
{{lang en-fluent}}<br />
{{lang sv-some}}<br />
{{lang fr-some}}<br />
{{lang ru-some}}</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=MusicBrainz_API/XML&diff=64717MusicBrainz API/XML2013-10-09T09:32:31Z<p>JonnyJD: /* 3rd party libraries */ musicbrainzngs: link to documentation page</p>
<hr />
<div><small>[[Products]] > XML Web Service Version 2</small> <br />
<br />
The web service discussed in this document is an interface to the [[MusicBrainz Database]]. It is aimed at developers of media players, CD rippers, taggers, and other applications requiring music metadata. The service's architecture follows the REST design principles. Interaction with the web service is done using HTTP and all content is served in a simple but flexible XML format.<br />
<br />
The web service root URL is <code><nowiki>http://musicbrainz.org/ws/2/</nowiki></code>.<br />
<br />
This page documents version 2 of our XML web service. Version 1 has been deprecated, but its documentation [[XML_Web_Service/Version_1|can still be referenced]]. [[Live_Data_Feed|Non-commercial]] use of this web service is free; please [[Contact_Us|contact us]] if you would like to use this service commercially.<br />
<br />
==Introduction==<br />
<br />
We have eight resources on our web service which represent core entities in our database:<br />
<br />
artist, label, recording, release, release-group, work, area, url<br />
<br />
We also provide a web service interface for the following non-core resources:<br />
<br />
rating, tag, collection<br />
<br />
And we allow you to perform lookups based on other unique identifiers with these resources:<br />
<br />
discid, puid, isrc, iswc<br />
<br />
On each entity resource, you can perform three different GET requests:<br />
<br />
lookup: /<ENTITY>/<MBID>?inc=<INC><br />
browse: /<ENTITY>?<ENTITY>=<MBID>&limit=<LIMIT>&offset=<OFFSET>&inc=<INC><br />
search: /<ENTITY>?query=<QUERY>&limit=<LIMIT>&offset=<OFFSET><br />
<br />
... except that search is not implemented for URL entities at this time.<br />
<br />
Of these:<br />
<br />
* Lookups, Non-MBID lookups and Browse requests are documented in following sections.<br />
<br />
==Searches==<br />
Searches are documented at [[/Search|Web Service Search]].<br />
<br />
==Lookups==<br />
<br />
You can perform a lookup of an entity when you have the MBID for that entity:<br />
<br />
lookup: /<ENTITY>/<MBID>?inc=<INC><br />
<br />
Note that unless you have provided an MBID in exactly the format listed, you are not performing a lookup request. If your URL includes something like artist=<MBID>, then please see the [[#Browse|Browse]] section. If it includes query=<QUERY>, please see the [[/Search|Web Service Search]] page.<br />
<br />
===Subqueries===<br />
<br />
The inc= is parameter allows you to request more information to be included about<br />
the entity. Any of the entities directly linked to the entity can be included.<br />
<br />
/ws/2/artist recordings, releases, release-groups, works<br />
/ws/2/label releases<br />
/ws/2/recording artists, releases<br />
/ws/2/release artists, labels, recordings, release-groups<br />
/ws/2/release-group artists, releases<br />
/ws/2/work<br />
/ws/2/area<br />
/ws/2/url<br />
<br />
In addition, [[#Relationships|Relationships]] are available for all entity types via inc parameters.<br />
<br />
To include more than one subquery in a single request, separate the arguments to <code>inc=</code> with a + (plus sign), like <code>inc=recordings+labels</code>.<br />
<br />
All lookups which include release-groups allow a type= argument to narrow down the release-groups.<br />
All lookups which include releases also allow the type= argument, and a status= argument is allowed.<br />
<br />
Note that the number of linked entities returned is always limited to 25,<br />
if you need the remaining results, you will have to perform a browse request.<br />
<br />
Linked entities are always ordered alphabetically by gid.<br />
<br />
=== inc= arguments which affect subqueries ===<br />
<br />
Some additional inc= parameters are supported to specify how much of the data about<br />
the linked entities should be included:<br />
<br />
- discids include discids for all media in the releases<br />
- media include media for all releases, this includes the # of tracks on each medium and its format.<br />
- puids include puids for all recordings<br />
- isrcs include isrcs for all recordings<br />
- artist-credits include artists credits for all releases and recordings<br />
- various-artists include only those releases where the artist appears on one of the tracks, <br />
but not in the artist credit for the release itself (this is only valid on a<br />
/ws/2/artist?inc=releases request).<br />
<br />
=== Misc inc= arguments ===<br />
<br />
- aliases include artist, label, area or work aliases; treat these as a set, as they are not deliberately ordered<br />
- annotation include annotation<br />
- tags, ratings include tags and/or ratings for the entity (not valid on releases)<br />
- user-tags, user-ratings same as above, but only return the tags and/or ratings submitted by the specified user<br />
<br />
Requests with user-tags or user-ratings require authentication. You can authenticate using HTTP Digest, use the same username and password used to access the main http://musicbrainz.org website.<br />
<br />
=== Relationships ===<br />
<br />
- artist-rels<br />
- label-rels<br />
- recording-rels<br />
- release-rels<br />
- release-group-rels<br />
- url-rels<br />
- work-rels<br />
<br />
By default, these 'inc=' arguments will only load relationship for the requested entity. When you are loading a release, you might want to load relationships for all its recordings and also works linked to the recordings. This is useful to get full release credits. There are additional arguments that can be used only on release requests and allow you to specify for which entities to load relationships:<br />
<br />
- recording-level-rels<br />
- work-level-rels<br />
<br />
==Non-MBID Lookups==<br />
<br />
Instead of MBIDs, you can also perform lookups using several other unique identifiers. However, because clashes sometimes occur, each of these lookups return a list of entities (there is no limit, all linked entities will be returned, paging is not supported).<br />
<br />
=== discid ===<br />
<br />
lookup: /discid/<discid>?inc=<INC>&toc=<TOC><br />
<br />
A discid lookup returns a list of associated releases, the 'inc=' arguments supported are identical to a lookup request for a release.<br />
<br />
If there are no matching releases in MusicBrainz, but a matching [[CD Stub|CDStub]] exists, it will be returned. This is the default behaviour. If you do ''not'' want to see CD stubs, pass 'cdstubs=no.' CD stubs are contained within a <cdstub> element, and otherwise have the same form as a release. Note that CD stubs do not have artist credits, just artists.<br />
<br />
If you provide the "toc" query parameter, and if the provided discid is not known by MusicBrainz, a fuzzy lookup will done to find matching MusicBrainz releases. Note that if CD stubs are found this will not happen. If you do want TOC fuzzy lookup, but not cdstub searching, specify "cdstubs=no". For example:<br />
<br />
/ws/2/discid/I5l9cCSFccLKFEKS.7wqSZAorPU-?toc=1+12+267257+150+22767+41887+58317+72102+91375+104652+115380+132165+143932+159870+174597<br />
<br />
Will look for the disc id first, and if it fails, will try to find tracklists that are within a similar distance to the one provided.<br />
<br />
The toc consists of the following:<br />
* First track (always 1)<br />
* total number of tracks<br />
* sector offset of the leadout (end of the disc<br />
* a list of sector offsets for each track, beginning with track 1 (generally 150 sectors)<br />
<br />
=== puid, isrc ===<br />
<br />
lookup: /puid/<puid>?inc=<INC><br />
lookup: /isrc/<isrc>?inc=<INC><br />
<br />
puid and isrc lookups return a list of recordings, the 'inc=' arguments supported are identical to a lookup request for a recording.<br />
<br />
=== iswc ===<br />
<br />
lookup: /iswc/<iswc>?inc=<INC><br />
<br />
An iswc lookup returns a list of works, the 'inc=' arguments supported are identical to a lookup request for a work.<br />
<br />
==Browse==<br />
<br />
Browse requests are a direct lookup of all the entities directly linked to another entity. (with directly linked I am referring to any relationship inherent in the database, so no ARs). For example, you may want to see all releases on netlabel ubiktune:<br />
<br />
/ws/2/release?label=47e718e1-7ee4-460c-b1cc-1192a841c6e5<br />
<br />
Note that browse requests are not searches, in order to browse all the releases on the ubiktune label you will need to know the MBID of ubiktune.<br />
<br />
Browsed entities are always ordered alphabetically by gid. If you need to sort the entities, you will have to fetch all entities (see "Paging" below) and sort them yourself.<br />
<br />
===Linked entities===<br />
<br />
The following list shows which linked entities you can use in a browse request:<br />
<br />
/ws/2/artist recording, release, release-group, work<br />
/ws/2/label release<br />
/ws/2/recording artist, release<br />
/ws/2/release artist, label, recording, release-group<br />
/ws/2/release-group artist, release<br />
/ws/2/work<br />
/ws/2/area<br />
/ws/2/url resource<br />
<br />
As a special case, release also allows track_artist, which is intended to allow you to browse various artist appearances for an artist. It will return any release where the artist appears in the artist_credit for a track, but NOT in the artist_credit for the entire release (as those would already have been returned in a request with artist=<MBID>).<br />
<br />
The URL endpoint's 'resource' entity is for providing a URL directly, rather than a URL MBID, for example https://musicbrainz.org/ws/2/url?resource=http://www.madonna.com/ versus https://musicbrainz.org/ws/2/url/b663423b-9b54-4067-9674-fffaecf68851. This URL will need to be appropriately URL-escaped for inclusion as a query parameter; this means that URLs that include url-escaped parameters, or query parameters of their own, will need to be escaped a second time.<br />
<br />
Release-groups can be filtered on type, and releases can be filtered on type and/or status. For example, if you want all the Live Bootleg releases by Metallica:<br />
<br />
/ws/2/release?artist=65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab&status=bootleg&type=live<br />
<br />
Or all albums and EPs by Autechre:<br />
<br />
/ws/2/release-group?artist=410c9baf-5469-44f6-9852-826524b80c61&type=album|ep<br />
<br />
Note that filtering is mandatory, if you don't specify type or status the release and release-group resources will not return any results.<br />
<br />
===Paging===<br />
<br />
Browse requests are the only requests which support paging, any browse request supports an 'offset=' argument to get more results. Browse requests also support 'limit=', the default limit is 25, and you can increase that up to 100.<br />
<br />
=== inc= ===<br />
<br />
Just like with normal lookup requests, the server can be instructed to include more data about the entity using an 'inc=' argument. Supported values for inc= are:<br />
<br />
/ws/2/artist aliases<br />
/ws/2/label aliases<br />
/ws/2/recording artist-credits<br />
/ws/2/release artist-credits, labels, recordings, release-groups, media, discids<br />
/ws/2/release-group artist-credits<br />
/ws/2/work aliases<br />
/ws/2/area aliases<br />
<br />
In addition to the inc= values listed above, all entities (except release) support:<br />
<br />
tags, ratings, user-tags, user-ratings<br />
<br />
In addition, [[#Relationships|Relationships]] are available for all entity types via inc parameters, as with lookup requests.<br />
<br />
== Release Type and Status ==<br />
<br />
Any query which includes release-groups in the results can be filtered to only include release groups of a certain type. Any query which includes releases in the results can be filtered to only include releases of a certain type and/or status. Valid values are:<br />
<br />
status official, promotion, bootleg, pseudo-release<br />
type nat, album, single, ep, compilation, soundtrack, spokenword, interview, audiobook, live, remix, other<br />
<br />
== Submitting data ==<br />
<br />
You can use the web service to submit certain kinds of data. Currently tags, ratings, PUIDs and ISRCs can be entered through the web service.<br />
<br />
=== Authentication ===<br />
<br />
All POST requests require authentication. You should authenticate using HTTP Digest, use the same username and password you use to access the main http://musicbrainz.org website. The realm is "musicbrainz.org".<br />
<br />
POST requests should always include a 'client' parameter in the URL (not the body). The value of 'client' should be the ID of the client software submitting data. This has to be the application's name and version number, not that of a client library (client libraries should use HTTP's User-Agent header). The recommended format is "application-version", where version does not contain a - character.<br />
<br />
=== User Data ===<br />
<br />
You can submit tags and ratings through the web service using POST requests. As described above, client software needs to identify itself using the 'client=' parameter. In the following examples I will use 'example.app-0.4.7' as the client identifier, this is obviously a fictitious client.<br />
<br />
==== tags ====<br />
<br />
To submit tags, perform a POST request to the /ws/2/tag url, like this:<br />
<br />
/ws/2/tag?client=example.app-0.4.7<br />
<br />
The body of your request should be an XML formatted list of entities with <user-tag> elements. You can validate your XML request against our schema (http://svn.musicbrainz.org/mmd-schema/trunk/schema/musicbrainz_mmd-2.0.rng).<br />
<br />
An example request is reproduced below:<br />
<br />
<pre><br />
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><br />
<artist-list><br />
<artist id="a16d1433-ba89-4f72-a47b-a370add0bb56"><br />
<user-tag-list><br />
<user-tag><name>female</name></user-tag><br />
<user-tag><name>korean</name></user-tag><br />
<user-tag><name>jpop</name></user-tag><br />
</user-tag-list><br />
</artist><br />
</artist-list><br />
<recording-list><br />
<recording id="047ea202-b98d-46ae-97f7-0180a20ee5cf"><br />
<user-tag-list><br />
<user-tag><name>noise</name></user-tag><br />
</user-tag-list><br />
</recording><br />
</recording-list><br />
</metadata><br />
</pre><br />
<br />
Because you're sending XML in the body of your POST request, make sure to also set the Content-Type to "application/xml; charset=utf-8".<br />
<br />
For examples, see [[/examples|examples]].<br />
<br />
==== ratings ====<br />
<br />
To submit ratings, perform a POST request to the /ws/2/rating url, like this:<br />
<br />
/ws/2/rating?client=example.app-0.4.7<br />
<br />
The body of your request should be an XML formatted list of entities with <user-rating> elements. You can validate your XML request against our schema (http://svn.musicbrainz.org/mmd-schema/trunk/schema/musicbrainz_mmd-2.0.rng).<br />
<br />
An example request is reproduced below:<br />
<br />
<pre><br />
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><br />
<artist-list><br />
<artist id="455641ea-fff4-49f6-8fb4-49f961d8f1ad"><br />
<user-rating>100</user-rating><br />
</artist><br />
</artist-list><br />
<recording-list><br />
<recording id="c410a773-c6eb-4bc0-9df8-042fe6645c63"><br />
<user-rating>20</user-rating><br />
</recording><br />
</recording-list><br />
</metadata><br />
</pre><br />
<br />
==== collections ====<br />
<br />
To add and remove release from your collection perform a PUT and DELETE requests to /ws/2/collection/releases, respectively. For example:<br />
<br />
PUT /ws/2/collection/f4784850-3844-11e0-9e42-0800200c9a66/releases/455641ea-fff4-49f6-8fb4-49f961d8f1ad;c410a773-c6eb-4bc0-9df8-042fe6645c63?client=example.app-0.4.7<br />
DELETE /ws/2/collection/f4784850-3844-11e0-9e42-0800200c9a66/releases/455641ea-fff4-49f6-8fb4-49f961d8f1ad;?client=example.app-0.4.7<br />
<br />
You may submit up to ~400 releases in a single request, separated by a semicolon (;), as the PUT example above shows. You are restricted to a maximum URI length of 16kb at the moment (which roughly equates to 400 release gids)<br />
<br />
To get the contents of a collection, simple send a GET request to the releases resource:<br />
<br />
GET /ws/2/collection/f4784850-3844-11e0-9e42-0800200c9a66/releases<br />
<br />
You can also perform a get request on the collection list, which will present you a list of collections for the currently authenticated user, with the amount of releases in each collection:<br />
<br />
GET /ws/2/collection<br />
<br />
=== PUID submission ===<br />
<br />
PUIDs may be associated with recordings by issuing an XML POST request to:<br />
<br />
/ws/2/recording/?client=example.app-0.4.7<br />
<br />
The body of the request must be an XML document with a list of <recording>s in a <recording-list>, and a list of <PUID>s in a <puid-list> to be associated with the recordings. For example:<br />
<br />
<pre><br />
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><br />
<recording-list><br />
<recording id="047ea202-b98d-46ae-97f7-0180a20ee5cf"><br />
<puid-list><br />
<puid id="1d9e8ed6-3893-4d3b-aa7d-72e79609e386"/><br />
<puid id="2a232ad3-3893-4d3b-aa7d-72e79609e386"/><br />
</puid-list><br />
</recording><br />
<recording id="66454646-b98d-46ae-97f7-0180a20ee5cf"><br />
<puid-list><br />
<puid id="78787887-3893-4d3b-aa7d-72e79609e386"/><br />
</puid-list><br />
</recording><br />
</recording-list><br />
</metadata><br />
</pre><br />
<br />
You can validate your XML request against our schema (http://svn.musicbrainz.org/mmd-schema/trunk/schema/musicbrainz_mmd-2.0.rng).<br />
<br />
=== Barcode submission ===<br />
<br />
Barcodes may be associated with releases by issuing an XML POST request to:<br />
<br />
/ws/2/release/?client=example.app-0.4.7<br />
<br />
The body of the request must be an XML document with a list of <releases>s in a <release-list>, and a single barcode in a <barcode> element for each release. For example:<br />
<br />
<pre><br />
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><br />
<release-list><br />
<release id="047ea202-b98d-46ae-97f7-0180a20ee5cf"><br />
<barcode>9780262560933</barcode><br />
</release><br />
</release-list><br />
</metadata><br />
</pre><br />
<br />
You can validate your XML request against our schema (http://svn.musicbrainz.org/mmd-schema/trunk/schema/musicbrainz_mmd-2.0.rng).<br />
<br />
Upon issuing this request MusicBrainz will create a single edit in the edit queue for applying these changes. These changes will ''not'' be automatically applied, though they will be applied if either no one votes against your changes, or your changes expire (this edit is applied on expiration).<br />
<br />
=== ISRC submission ===<br />
<br />
ISRCs may be associated with recordings by issuing an XML POST request to:<br />
<br />
/ws/2/recording/?client=example.app-0.4.7<br />
<br />
The body of the request must be an XML document with a list of <recording>s in a <recording-list>, and a list of <ISRC>s in a <isrc-list> to be associated with the recordings (very similar to PUID submits). For example:<br />
<br />
<pre><br />
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><br />
<recording-list><br />
<recording id="b9991644-7275-44db-bc43-fff6c6b4ce69"><br />
<isrc-list count="1"><br />
<isrc id="JPB600601201" /><br />
</isrc-list><br />
</recording><br />
<recording id="75c961c9-6e00-4861-9c9d-e6ca90d57342"><br />
<isrc-list count="1"><br />
<isrc id="JPB600523201" /><br />
</isrc-list><br />
</recording><br />
</recording-list><br />
</metadata><br />
</pre><br />
<br />
Example code which illustrates this process can be found in our subversion repository: [http://svn.musicbrainz.org/miscellaneous/trunk/isrcsubmit-python/ isrcsubmit-python].<br />
<br />
==Limiting Connections to the MusicBrainz Web Service==<br />
<br />
All users of the XML web service must ensure that each of their client applications never make more than ONE web service call per second. Making more than one call per second drives up the load on the servers and prevents others from using MusicBrainz. If you impact the server by making more than one call per second, your IP address may be blocked preventing all further access to MusicBrainz. For more details on this, please see our [[XML_Web_Service/Rate_Limiting|rate limiting page]].<br />
<br />
==Identifying your application to the MusicBrainz Web Service==<br />
<br />
It is important that your application set a proper User-Agent string in its HTTP request headers. Please read our [[XML_Web_Service/Rate_Limiting|rate limiting]] documentation for more details.<br />
<br />
==Libraries to use the Web Service==<br />
<br />
The Web Service can be accessed with [[libmusicbrainz]].<br />
<br />
===3rd party libraries===<br />
<br />
* Python: [http://python-musicbrainzngs.readthedocs.org/ python-musicbrainzngs] Python2/3 bindings<br />
* Java: [http://code.google.com/p/musicbrainzws2-java/ musicbrainzws2-java]<br />
* Ruby:<br />
** [https://github.com/dwo/musicbrainz-ruby musicbrain-ruby]<br />
** [https://github.com/magnolia-fan/musicbrainz magnolia-fan/musicbrainz] ruby 1.9+<br />
* PHP: [https://github.com/mikealmond/MusicBrainz mikealmond/MusicBrainz], a fork of [[phpbrainz]]<br />
* C#: [https://github.com/avatar29A/MusicBrainz avatar29A/MusicBrainz]<br />
* Objective-C: [https://github.com/demosdemon/libmusicbrainz-objc libmusicbrainz-objc]<br />
* Haskell:<br />
** [http://hackage.haskell.org/package/MusicBrainz Clint Adams' bindings (hackage)]<br />
** [https://github.com/ocharles/haskell-musicbrainz-ws2 haskell-musicbrainz-ws2 (ocharles)]<br />
* common lisp: [https://github.com/0/cl-musicbrainz cl-musicbrainz]<br />
* Perl: [https://github.com/mavit/webservice-musicbrainz/tree/ws2 Work in progress]. Patches welcome!<br />
<br />
[[Category:Development]] [[Category:Products]] [[Category:WikiDocs Page]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=MusicBrainz_Documentation&diff=64716MusicBrainz Documentation2013-10-09T09:31:30Z<p>JonnyJD: /* Software */ actually, linking to the documentation might be better</p>
<hr />
<div>==User documentation==<br />
<br />
;[[Frequently Asked Questions]]<br />
: A set of community maintained FAQs.<br />
<br />
===For the web interface===<br />
;[[About]] and [[Beginners Guide]]<br />
:A quick introduction to MusicBrainz and to its use, respectively.<br />
<br />
;[[How To]]s<br />
:A collection of tutorials. Lightweight, short and user-orientated step by step instructions. <br />
<br />
;[[Introduction to Editing]]<br />
:A quick introduction to how changes to MusicBrainz data are made. <br />
<br />
;[[Introduction to Voting]]<br />
:A quick introduction to MusicBrainz's voting system and how edits are applied (or rejected). <br />
<br />
;[[Style|Style guidelines]]<br />
:All our official guidelines for editing.<br />
<br />
;[[Search]]<br />
:Describes the different kinds of search you can use to browse MusicBrainz. Also includes the [[Indexed Search Syntax|advanced search syntax]].<br />
<br />
;[[MusicBrainz Terminology]]<br />
:A collection of terms the MusicBrainz community uses, what they mean, and wheter there is a wiki page explaining them.<br />
<br />
===For the software===<br />
;[[Picard Documentation]]<br />
:Documentation of [[MusicBrainz Picard]], MusicBrainz' official tagger. <br />
<br />
===Other===<br />
;[[About/Privacy Policy|Privacy Policy]]<br />
:Privacy implications of being a MusicBrainz editor.<br />
<br />
;[[Flickr Machine Tag]]<br />
:How to use flickr tags to refer to MusicBrainz artists, releases, tracks or labels.<br />
<br />
==Developer Documentation==<br />
<br />
;[[Developer Resources]]<br />
:Catch-all page with a number of useful links for developers<br />
<br />
===Metadata===<br />
<br />
;[[XML Web Service/Version 2]]<br />
:Our current-version web service, for use in applications<br />
<br />
;[[XML Web Service/Version 1]]<br />
:Our old web service, still in common use, e.g. by [[python-musicbrainz2]]<br />
<br />
===Software===<br />
<br />
;[[libmusicbrainz]] <br />
:Describes the use of our official library for accessing the web service. 4.x uses version 2, 3.x uses version 1.<br />
<br />
;[[python-musicbrainz2]]<br />
:Our now-somewhat-outdated official python library, see [http://python-musicbrainzngs.readthedocs.org/ python-musicbrainzngs] for a newer library.<br />
<br />
===Discs===<br />
<br />
;[[Disc ID Calculation]] <br />
:An overview of the technical process of calculating [[Disc ID]]s.<br />
<br />
;[[libdiscid]]<br />
:C library for creating MusicBrainz DiscIDs from audio CDs. Much better than implementing Disc IDs yourself.<br />
<br />
===Tagging===<br />
<br />
;[[MusicBrainz Picard/Tags/Mapping|Tag Mappings]]<br />
:These are the tag mappings used by [[MusicBrainz Picard]], our official tagging application<br />
<br />
===Database===<br />
<br />
;[[MusicBrainz Database]]<br />
:Start page for documentation about the database.<br />
<br />
;[[Database Schema]]<br />
:Description of our current schema and database structure.<br />
<br />
;[[Database Setup]]<br />
:Several ways of setting up and using our database.<br />
<br />
==Other Documentation==<br />
<br />
;[[Other Databases]]<br />
:Other music databases which we might try to work with <br />
<br />
;[[MusicBrainz Summit]]s<br />
<br />
[[Category:Documentation]] [[Category:To Be Reviewed]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=MusicBrainz_Documentation&diff=64715MusicBrainz Documentation2013-10-09T09:28:31Z<p>JonnyJD: /* Software */ fix musicbrainzngs link</p>
<hr />
<div>==User documentation==<br />
<br />
;[[Frequently Asked Questions]]<br />
: A set of community maintained FAQs.<br />
<br />
===For the web interface===<br />
;[[About]] and [[Beginners Guide]]<br />
:A quick introduction to MusicBrainz and to its use, respectively.<br />
<br />
;[[How To]]s<br />
:A collection of tutorials. Lightweight, short and user-orientated step by step instructions. <br />
<br />
;[[Introduction to Editing]]<br />
:A quick introduction to how changes to MusicBrainz data are made. <br />
<br />
;[[Introduction to Voting]]<br />
:A quick introduction to MusicBrainz's voting system and how edits are applied (or rejected). <br />
<br />
;[[Style|Style guidelines]]<br />
:All our official guidelines for editing.<br />
<br />
;[[Search]]<br />
:Describes the different kinds of search you can use to browse MusicBrainz. Also includes the [[Indexed Search Syntax|advanced search syntax]].<br />
<br />
;[[MusicBrainz Terminology]]<br />
:A collection of terms the MusicBrainz community uses, what they mean, and wheter there is a wiki page explaining them.<br />
<br />
===For the software===<br />
;[[Picard Documentation]]<br />
:Documentation of [[MusicBrainz Picard]], MusicBrainz' official tagger. <br />
<br />
===Other===<br />
;[[About/Privacy Policy|Privacy Policy]]<br />
:Privacy implications of being a MusicBrainz editor.<br />
<br />
;[[Flickr Machine Tag]]<br />
:How to use flickr tags to refer to MusicBrainz artists, releases, tracks or labels.<br />
<br />
==Developer Documentation==<br />
<br />
;[[Developer Resources]]<br />
:Catch-all page with a number of useful links for developers<br />
<br />
===Metadata===<br />
<br />
;[[XML Web Service/Version 2]]<br />
:Our current-version web service, for use in applications<br />
<br />
;[[XML Web Service/Version 1]]<br />
:Our old web service, still in common use, e.g. by [[python-musicbrainz2]]<br />
<br />
===Software===<br />
<br />
;[[libmusicbrainz]] <br />
:Describes the use of our official library for accessing the web service. 4.x uses version 2, 3.x uses version 1.<br />
<br />
;[[python-musicbrainz2]]<br />
:Our now-somewhat-outdated official python library, see [https://github.com/alastair/python-musicbrainzngs python-musicbrainzngs] for a newer library.<br />
<br />
===Discs===<br />
<br />
;[[Disc ID Calculation]] <br />
:An overview of the technical process of calculating [[Disc ID]]s.<br />
<br />
;[[libdiscid]]<br />
:C library for creating MusicBrainz DiscIDs from audio CDs. Much better than implementing Disc IDs yourself.<br />
<br />
===Tagging===<br />
<br />
;[[MusicBrainz Picard/Tags/Mapping|Tag Mappings]]<br />
:These are the tag mappings used by [[MusicBrainz Picard]], our official tagging application<br />
<br />
===Database===<br />
<br />
;[[MusicBrainz Database]]<br />
:Start page for documentation about the database.<br />
<br />
;[[Database Schema]]<br />
:Description of our current schema and database structure.<br />
<br />
;[[Database Setup]]<br />
:Several ways of setting up and using our database.<br />
<br />
==Other Documentation==<br />
<br />
;[[Other Databases]]<br />
:Other music databases which we might try to work with <br />
<br />
;[[MusicBrainz Summit]]s<br />
<br />
[[Category:Documentation]] [[Category:To Be Reviewed]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=MusicBrainz_API/XML&diff=64714MusicBrainz API/XML2013-10-09T09:26:31Z<p>JonnyJD: /* 3rd party libraries */ fix musicbrainzngs link</p>
<hr />
<div><small>[[Products]] > XML Web Service Version 2</small> <br />
<br />
The web service discussed in this document is an interface to the [[MusicBrainz Database]]. It is aimed at developers of media players, CD rippers, taggers, and other applications requiring music metadata. The service's architecture follows the REST design principles. Interaction with the web service is done using HTTP and all content is served in a simple but flexible XML format.<br />
<br />
The web service root URL is <code><nowiki>http://musicbrainz.org/ws/2/</nowiki></code>.<br />
<br />
This page documents version 2 of our XML web service. Version 1 has been deprecated, but its documentation [[XML_Web_Service/Version_1|can still be referenced]]. [[Live_Data_Feed|Non-commercial]] use of this web service is free; please [[Contact_Us|contact us]] if you would like to use this service commercially.<br />
<br />
==Introduction==<br />
<br />
We have eight resources on our web service which represent core entities in our database:<br />
<br />
artist, label, recording, release, release-group, work, area, url<br />
<br />
We also provide a web service interface for the following non-core resources:<br />
<br />
rating, tag, collection<br />
<br />
And we allow you to perform lookups based on other unique identifiers with these resources:<br />
<br />
discid, puid, isrc, iswc<br />
<br />
On each entity resource, you can perform three different GET requests:<br />
<br />
lookup: /<ENTITY>/<MBID>?inc=<INC><br />
browse: /<ENTITY>?<ENTITY>=<MBID>&limit=<LIMIT>&offset=<OFFSET>&inc=<INC><br />
search: /<ENTITY>?query=<QUERY>&limit=<LIMIT>&offset=<OFFSET><br />
<br />
... except that search is not implemented for URL entities at this time.<br />
<br />
Of these:<br />
<br />
* Lookups, Non-MBID lookups and Browse requests are documented in following sections.<br />
<br />
==Searches==<br />
Searches are documented at [[/Search|Web Service Search]].<br />
<br />
==Lookups==<br />
<br />
You can perform a lookup of an entity when you have the MBID for that entity:<br />
<br />
lookup: /<ENTITY>/<MBID>?inc=<INC><br />
<br />
Note that unless you have provided an MBID in exactly the format listed, you are not performing a lookup request. If your URL includes something like artist=<MBID>, then please see the [[#Browse|Browse]] section. If it includes query=<QUERY>, please see the [[/Search|Web Service Search]] page.<br />
<br />
===Subqueries===<br />
<br />
The inc= is parameter allows you to request more information to be included about<br />
the entity. Any of the entities directly linked to the entity can be included.<br />
<br />
/ws/2/artist recordings, releases, release-groups, works<br />
/ws/2/label releases<br />
/ws/2/recording artists, releases<br />
/ws/2/release artists, labels, recordings, release-groups<br />
/ws/2/release-group artists, releases<br />
/ws/2/work<br />
/ws/2/area<br />
/ws/2/url<br />
<br />
In addition, [[#Relationships|Relationships]] are available for all entity types via inc parameters.<br />
<br />
To include more than one subquery in a single request, separate the arguments to <code>inc=</code> with a + (plus sign), like <code>inc=recordings+labels</code>.<br />
<br />
All lookups which include release-groups allow a type= argument to narrow down the release-groups.<br />
All lookups which include releases also allow the type= argument, and a status= argument is allowed.<br />
<br />
Note that the number of linked entities returned is always limited to 25,<br />
if you need the remaining results, you will have to perform a browse request.<br />
<br />
Linked entities are always ordered alphabetically by gid.<br />
<br />
=== inc= arguments which affect subqueries ===<br />
<br />
Some additional inc= parameters are supported to specify how much of the data about<br />
the linked entities should be included:<br />
<br />
- discids include discids for all media in the releases<br />
- media include media for all releases, this includes the # of tracks on each medium and its format.<br />
- puids include puids for all recordings<br />
- isrcs include isrcs for all recordings<br />
- artist-credits include artists credits for all releases and recordings<br />
- various-artists include only those releases where the artist appears on one of the tracks, <br />
but not in the artist credit for the release itself (this is only valid on a<br />
/ws/2/artist?inc=releases request).<br />
<br />
=== Misc inc= arguments ===<br />
<br />
- aliases include artist, label, area or work aliases; treat these as a set, as they are not deliberately ordered<br />
- annotation include annotation<br />
- tags, ratings include tags and/or ratings for the entity (not valid on releases)<br />
- user-tags, user-ratings same as above, but only return the tags and/or ratings submitted by the specified user<br />
<br />
Requests with user-tags or user-ratings require authentication. You can authenticate using HTTP Digest, use the same username and password used to access the main http://musicbrainz.org website.<br />
<br />
=== Relationships ===<br />
<br />
- artist-rels<br />
- label-rels<br />
- recording-rels<br />
- release-rels<br />
- release-group-rels<br />
- url-rels<br />
- work-rels<br />
<br />
By default, these 'inc=' arguments will only load relationship for the requested entity. When you are loading a release, you might want to load relationships for all its recordings and also works linked to the recordings. This is useful to get full release credits. There are additional arguments that can be used only on release requests and allow you to specify for which entities to load relationships:<br />
<br />
- recording-level-rels<br />
- work-level-rels<br />
<br />
==Non-MBID Lookups==<br />
<br />
Instead of MBIDs, you can also perform lookups using several other unique identifiers. However, because clashes sometimes occur, each of these lookups return a list of entities (there is no limit, all linked entities will be returned, paging is not supported).<br />
<br />
=== discid ===<br />
<br />
lookup: /discid/<discid>?inc=<INC>&toc=<TOC><br />
<br />
A discid lookup returns a list of associated releases, the 'inc=' arguments supported are identical to a lookup request for a release.<br />
<br />
If there are no matching releases in MusicBrainz, but a matching [[CD Stub|CDStub]] exists, it will be returned. This is the default behaviour. If you do ''not'' want to see CD stubs, pass 'cdstubs=no.' CD stubs are contained within a <cdstub> element, and otherwise have the same form as a release. Note that CD stubs do not have artist credits, just artists.<br />
<br />
If you provide the "toc" query parameter, and if the provided discid is not known by MusicBrainz, a fuzzy lookup will done to find matching MusicBrainz releases. Note that if CD stubs are found this will not happen. If you do want TOC fuzzy lookup, but not cdstub searching, specify "cdstubs=no". For example:<br />
<br />
/ws/2/discid/I5l9cCSFccLKFEKS.7wqSZAorPU-?toc=1+12+267257+150+22767+41887+58317+72102+91375+104652+115380+132165+143932+159870+174597<br />
<br />
Will look for the disc id first, and if it fails, will try to find tracklists that are within a similar distance to the one provided.<br />
<br />
The toc consists of the following:<br />
* First track (always 1)<br />
* total number of tracks<br />
* sector offset of the leadout (end of the disc<br />
* a list of sector offsets for each track, beginning with track 1 (generally 150 sectors)<br />
<br />
=== puid, isrc ===<br />
<br />
lookup: /puid/<puid>?inc=<INC><br />
lookup: /isrc/<isrc>?inc=<INC><br />
<br />
puid and isrc lookups return a list of recordings, the 'inc=' arguments supported are identical to a lookup request for a recording.<br />
<br />
=== iswc ===<br />
<br />
lookup: /iswc/<iswc>?inc=<INC><br />
<br />
An iswc lookup returns a list of works, the 'inc=' arguments supported are identical to a lookup request for a work.<br />
<br />
==Browse==<br />
<br />
Browse requests are a direct lookup of all the entities directly linked to another entity. (with directly linked I am referring to any relationship inherent in the database, so no ARs). For example, you may want to see all releases on netlabel ubiktune:<br />
<br />
/ws/2/release?label=47e718e1-7ee4-460c-b1cc-1192a841c6e5<br />
<br />
Note that browse requests are not searches, in order to browse all the releases on the ubiktune label you will need to know the MBID of ubiktune.<br />
<br />
Browsed entities are always ordered alphabetically by gid. If you need to sort the entities, you will have to fetch all entities (see "Paging" below) and sort them yourself.<br />
<br />
===Linked entities===<br />
<br />
The following list shows which linked entities you can use in a browse request:<br />
<br />
/ws/2/artist recording, release, release-group, work<br />
/ws/2/label release<br />
/ws/2/recording artist, release<br />
/ws/2/release artist, label, recording, release-group<br />
/ws/2/release-group artist, release<br />
/ws/2/work<br />
/ws/2/area<br />
/ws/2/url resource<br />
<br />
As a special case, release also allows track_artist, which is intended to allow you to browse various artist appearances for an artist. It will return any release where the artist appears in the artist_credit for a track, but NOT in the artist_credit for the entire release (as those would already have been returned in a request with artist=<MBID>).<br />
<br />
The URL endpoint's 'resource' entity is for providing a URL directly, rather than a URL MBID, for example https://musicbrainz.org/ws/2/url?resource=http://www.madonna.com/ versus https://musicbrainz.org/ws/2/url/b663423b-9b54-4067-9674-fffaecf68851. This URL will need to be appropriately URL-escaped for inclusion as a query parameter; this means that URLs that include url-escaped parameters, or query parameters of their own, will need to be escaped a second time.<br />
<br />
Release-groups can be filtered on type, and releases can be filtered on type and/or status. For example, if you want all the Live Bootleg releases by Metallica:<br />
<br />
/ws/2/release?artist=65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab&status=bootleg&type=live<br />
<br />
Or all albums and EPs by Autechre:<br />
<br />
/ws/2/release-group?artist=410c9baf-5469-44f6-9852-826524b80c61&type=album|ep<br />
<br />
Note that filtering is mandatory, if you don't specify type or status the release and release-group resources will not return any results.<br />
<br />
===Paging===<br />
<br />
Browse requests are the only requests which support paging, any browse request supports an 'offset=' argument to get more results. Browse requests also support 'limit=', the default limit is 25, and you can increase that up to 100.<br />
<br />
=== inc= ===<br />
<br />
Just like with normal lookup requests, the server can be instructed to include more data about the entity using an 'inc=' argument. Supported values for inc= are:<br />
<br />
/ws/2/artist aliases<br />
/ws/2/label aliases<br />
/ws/2/recording artist-credits<br />
/ws/2/release artist-credits, labels, recordings, release-groups, media, discids<br />
/ws/2/release-group artist-credits<br />
/ws/2/work aliases<br />
/ws/2/area aliases<br />
<br />
In addition to the inc= values listed above, all entities (except release) support:<br />
<br />
tags, ratings, user-tags, user-ratings<br />
<br />
In addition, [[#Relationships|Relationships]] are available for all entity types via inc parameters, as with lookup requests.<br />
<br />
== Release Type and Status ==<br />
<br />
Any query which includes release-groups in the results can be filtered to only include release groups of a certain type. Any query which includes releases in the results can be filtered to only include releases of a certain type and/or status. Valid values are:<br />
<br />
status official, promotion, bootleg, pseudo-release<br />
type nat, album, single, ep, compilation, soundtrack, spokenword, interview, audiobook, live, remix, other<br />
<br />
== Submitting data ==<br />
<br />
You can use the web service to submit certain kinds of data. Currently tags, ratings, PUIDs and ISRCs can be entered through the web service.<br />
<br />
=== Authentication ===<br />
<br />
All POST requests require authentication. You should authenticate using HTTP Digest, use the same username and password you use to access the main http://musicbrainz.org website. The realm is "musicbrainz.org".<br />
<br />
POST requests should always include a 'client' parameter in the URL (not the body). The value of 'client' should be the ID of the client software submitting data. This has to be the application's name and version number, not that of a client library (client libraries should use HTTP's User-Agent header). The recommended format is "application-version", where version does not contain a - character.<br />
<br />
=== User Data ===<br />
<br />
You can submit tags and ratings through the web service using POST requests. As described above, client software needs to identify itself using the 'client=' parameter. In the following examples I will use 'example.app-0.4.7' as the client identifier, this is obviously a fictitious client.<br />
<br />
==== tags ====<br />
<br />
To submit tags, perform a POST request to the /ws/2/tag url, like this:<br />
<br />
/ws/2/tag?client=example.app-0.4.7<br />
<br />
The body of your request should be an XML formatted list of entities with <user-tag> elements. You can validate your XML request against our schema (http://svn.musicbrainz.org/mmd-schema/trunk/schema/musicbrainz_mmd-2.0.rng).<br />
<br />
An example request is reproduced below:<br />
<br />
<pre><br />
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><br />
<artist-list><br />
<artist id="a16d1433-ba89-4f72-a47b-a370add0bb56"><br />
<user-tag-list><br />
<user-tag><name>female</name></user-tag><br />
<user-tag><name>korean</name></user-tag><br />
<user-tag><name>jpop</name></user-tag><br />
</user-tag-list><br />
</artist><br />
</artist-list><br />
<recording-list><br />
<recording id="047ea202-b98d-46ae-97f7-0180a20ee5cf"><br />
<user-tag-list><br />
<user-tag><name>noise</name></user-tag><br />
</user-tag-list><br />
</recording><br />
</recording-list><br />
</metadata><br />
</pre><br />
<br />
Because you're sending XML in the body of your POST request, make sure to also set the Content-Type to "application/xml; charset=utf-8".<br />
<br />
For examples, see [[/examples|examples]].<br />
<br />
==== ratings ====<br />
<br />
To submit ratings, perform a POST request to the /ws/2/rating url, like this:<br />
<br />
/ws/2/rating?client=example.app-0.4.7<br />
<br />
The body of your request should be an XML formatted list of entities with <user-rating> elements. You can validate your XML request against our schema (http://svn.musicbrainz.org/mmd-schema/trunk/schema/musicbrainz_mmd-2.0.rng).<br />
<br />
An example request is reproduced below:<br />
<br />
<pre><br />
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><br />
<artist-list><br />
<artist id="455641ea-fff4-49f6-8fb4-49f961d8f1ad"><br />
<user-rating>100</user-rating><br />
</artist><br />
</artist-list><br />
<recording-list><br />
<recording id="c410a773-c6eb-4bc0-9df8-042fe6645c63"><br />
<user-rating>20</user-rating><br />
</recording><br />
</recording-list><br />
</metadata><br />
</pre><br />
<br />
==== collections ====<br />
<br />
To add and remove release from your collection perform a PUT and DELETE requests to /ws/2/collection/releases, respectively. For example:<br />
<br />
PUT /ws/2/collection/f4784850-3844-11e0-9e42-0800200c9a66/releases/455641ea-fff4-49f6-8fb4-49f961d8f1ad;c410a773-c6eb-4bc0-9df8-042fe6645c63?client=example.app-0.4.7<br />
DELETE /ws/2/collection/f4784850-3844-11e0-9e42-0800200c9a66/releases/455641ea-fff4-49f6-8fb4-49f961d8f1ad;?client=example.app-0.4.7<br />
<br />
You may submit up to ~400 releases in a single request, separated by a semicolon (;), as the PUT example above shows. You are restricted to a maximum URI length of 16kb at the moment (which roughly equates to 400 release gids)<br />
<br />
To get the contents of a collection, simple send a GET request to the releases resource:<br />
<br />
GET /ws/2/collection/f4784850-3844-11e0-9e42-0800200c9a66/releases<br />
<br />
You can also perform a get request on the collection list, which will present you a list of collections for the currently authenticated user, with the amount of releases in each collection:<br />
<br />
GET /ws/2/collection<br />
<br />
=== PUID submission ===<br />
<br />
PUIDs may be associated with recordings by issuing an XML POST request to:<br />
<br />
/ws/2/recording/?client=example.app-0.4.7<br />
<br />
The body of the request must be an XML document with a list of <recording>s in a <recording-list>, and a list of <PUID>s in a <puid-list> to be associated with the recordings. For example:<br />
<br />
<pre><br />
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><br />
<recording-list><br />
<recording id="047ea202-b98d-46ae-97f7-0180a20ee5cf"><br />
<puid-list><br />
<puid id="1d9e8ed6-3893-4d3b-aa7d-72e79609e386"/><br />
<puid id="2a232ad3-3893-4d3b-aa7d-72e79609e386"/><br />
</puid-list><br />
</recording><br />
<recording id="66454646-b98d-46ae-97f7-0180a20ee5cf"><br />
<puid-list><br />
<puid id="78787887-3893-4d3b-aa7d-72e79609e386"/><br />
</puid-list><br />
</recording><br />
</recording-list><br />
</metadata><br />
</pre><br />
<br />
You can validate your XML request against our schema (http://svn.musicbrainz.org/mmd-schema/trunk/schema/musicbrainz_mmd-2.0.rng).<br />
<br />
=== Barcode submission ===<br />
<br />
Barcodes may be associated with releases by issuing an XML POST request to:<br />
<br />
/ws/2/release/?client=example.app-0.4.7<br />
<br />
The body of the request must be an XML document with a list of <releases>s in a <release-list>, and a single barcode in a <barcode> element for each release. For example:<br />
<br />
<pre><br />
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><br />
<release-list><br />
<release id="047ea202-b98d-46ae-97f7-0180a20ee5cf"><br />
<barcode>9780262560933</barcode><br />
</release><br />
</release-list><br />
</metadata><br />
</pre><br />
<br />
You can validate your XML request against our schema (http://svn.musicbrainz.org/mmd-schema/trunk/schema/musicbrainz_mmd-2.0.rng).<br />
<br />
Upon issuing this request MusicBrainz will create a single edit in the edit queue for applying these changes. These changes will ''not'' be automatically applied, though they will be applied if either no one votes against your changes, or your changes expire (this edit is applied on expiration).<br />
<br />
=== ISRC submission ===<br />
<br />
ISRCs may be associated with recordings by issuing an XML POST request to:<br />
<br />
/ws/2/recording/?client=example.app-0.4.7<br />
<br />
The body of the request must be an XML document with a list of <recording>s in a <recording-list>, and a list of <ISRC>s in a <isrc-list> to be associated with the recordings (very similar to PUID submits). For example:<br />
<br />
<pre><br />
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"><br />
<recording-list><br />
<recording id="b9991644-7275-44db-bc43-fff6c6b4ce69"><br />
<isrc-list count="1"><br />
<isrc id="JPB600601201" /><br />
</isrc-list><br />
</recording><br />
<recording id="75c961c9-6e00-4861-9c9d-e6ca90d57342"><br />
<isrc-list count="1"><br />
<isrc id="JPB600523201" /><br />
</isrc-list><br />
</recording><br />
</recording-list><br />
</metadata><br />
</pre><br />
<br />
Example code which illustrates this process can be found in our subversion repository: [http://svn.musicbrainz.org/miscellaneous/trunk/isrcsubmit-python/ isrcsubmit-python].<br />
<br />
==Limiting Connections to the MusicBrainz Web Service==<br />
<br />
All users of the XML web service must ensure that each of their client applications never make more than ONE web service call per second. Making more than one call per second drives up the load on the servers and prevents others from using MusicBrainz. If you impact the server by making more than one call per second, your IP address may be blocked preventing all further access to MusicBrainz. For more details on this, please see our [[XML_Web_Service/Rate_Limiting|rate limiting page]].<br />
<br />
==Identifying your application to the MusicBrainz Web Service==<br />
<br />
It is important that your application set a proper User-Agent string in its HTTP request headers. Please read our [[XML_Web_Service/Rate_Limiting|rate limiting]] documentation for more details.<br />
<br />
==Libraries to use the Web Service==<br />
<br />
The Web Service can be accessed with [[libmusicbrainz]].<br />
<br />
===3rd party libraries===<br />
<br />
* Python: [https://github.com/alastair/python-musicbrainzngs python-musicbrainzngs] Python2/3 bindings<br />
* Java: [http://code.google.com/p/musicbrainzws2-java/ musicbrainzws2-java]<br />
* Ruby:<br />
** [https://github.com/dwo/musicbrainz-ruby musicbrain-ruby]<br />
** [https://github.com/magnolia-fan/musicbrainz magnolia-fan/musicbrainz] ruby 1.9+<br />
* PHP: [https://github.com/mikealmond/MusicBrainz mikealmond/MusicBrainz], a fork of [[phpbrainz]]<br />
* C#: [https://github.com/avatar29A/MusicBrainz avatar29A/MusicBrainz]<br />
* Objective-C: [https://github.com/demosdemon/libmusicbrainz-objc libmusicbrainz-objc]<br />
* Haskell:<br />
** [http://hackage.haskell.org/package/MusicBrainz Clint Adams' bindings (hackage)]<br />
** [https://github.com/ocharles/haskell-musicbrainz-ws2 haskell-musicbrainz-ws2 (ocharles)]<br />
* common lisp: [https://github.com/0/cl-musicbrainz cl-musicbrainz]<br />
* Perl: [https://github.com/mavit/webservice-musicbrainz/tree/ws2 Work in progress]. Patches welcome!<br />
<br />
[[Category:Development]] [[Category:Products]] [[Category:WikiDocs Page]]</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=User:JonnyJD/DiscID&diff=64693User:JonnyJD/DiscID2013-10-08T00:20:11Z<p>JonnyJD: /* Incencitive to add IDs to multiple releases (recall/false negatives, though similar) */ isrcsubmit improvements</p>
<hr />
<div>There was some discussion about the issues and a possible removal of [[Disc ID]]s on the [[MusicBrainz Summit/13#DiscIDs|13th MusicBrainz Summit]].<br />
I want to summarize issues and benefits of discID usage a bit.<br />
<br />
== Purpose of Disc IDs / TOCs ==<br />
<br />
=== TOC ===<br />
A TOC is set of sector offsets/times for a specific pressing of CD.<br />
A release medium can have multiple TOCs attached and the (primarey) times of the release should be the times from one of the TOCs.<br />
This way multiple pressings are grouped in one release-medium.<br />
Releases can be found with the TOC of the disc,<br />
though currently only a fuzzy search by TOC is available (see below).<br />
<br />
Depending on context, there are two different types of TOC:<br />
* '''disc TOC''': The TOC of a certain disc used for lookup<br />
* '''server TOC''': The TOC of a certain (disc) pressing saved and attache to a medium on MusicBrainz while "[[How to Add Disc IDs|adding a disc ID]]"<br />
<br />
=== Disc ID ===<br />
A disc ID is basically a hash of the TOC, so you can generate a disc ID from the TOC, but no TOC from the disc ID.<br />
On MusicBrainz these disc IDs can be used as IDs for a specific TOC.<br />
<br />
=== fuzzy (disc) TOC lookup ===<br />
The MB server can make a fuzzy lookup with the TOC from the disc.<br />
This lookup is based on the primary track times for the release and is unrelated to discIDs and (server) TOCs.<br />
This kind of lookup includes the correct release most of the time (high recall),<br />
but also many completely unrelated releases that happen to have similar times (low precision, [http://freedb.musicbrainz.org/~cddb/cddb.cgi?cmd=cddb+query+B20DEE0B+1+150+345&proto=6 example]).<br />
When a specific release that should be in the results is not, this normally can't be fixed<br />
(without also considering exact (server) TOCs).<br />
<br />
=== FreeDB ID ===<br />
A [https://en.wikipedia.org/wiki/CDDB#Example_calculation_of_a_CDDB1_.28FreeDB.29_disc_ID|FreeDB ID] is also an identifier,<br />
which can be generated given a TOC.<br />
However, standard FreeDB IDs have lots of collisions so one FreeDB ID can have several corresponding (server) TOCs.<br />
<br />
The '''MusicBrainz [[FreeDB_Gateway]]''' mainly uses the (disc) TOC given in the search command to do a '''fuzzy search<br />
on the (primary) track times''' of the release (see above).<br />
The (misc) freeDB ID returned by the lookup is no "real" freeDB ID, as it isn't generated the usual way.<br />
The misc ID is a representation of the medium ID in the database and because of that it is collision free and leads to exactly one medium.<br />
Additionally also a search by the FreeDB ID given by the client is done in the (server) TOCs.<br />
This adds exactly one result to the list, which isn't necessarily the correct one, due to collisions mentioned above.<br />
<br />
Exact lookup with matching disc and server TOCs would be technically possible to remove false positives.<br />
<br />
=== Disc Lookup ===<br />
The disc ID is used as a short identifier to lookup a release "by disc".<br />
Taggers expect the returned release to match what they see as the disc: same number of tracks etc.<br />
Lookup by TOC is in theory possible, but currently isn't as exact (lookup is currently fuzzy, see above) and isn't widely supported (also see below).<br />
<br />
Lookup by Disc ID + disc TOC gives only exact matches when the Disc ID is the database.<br />
However, only some of the releases of a release group might have the Disc ID attached and other releases in that group might not appear in the results. (nearly no (unrelated) false positives, but sometimes false negatives)<br />
The releases not appearing in the results are mostly seen as "practically" identical to one release in the results.<br />
They mostly have the same release title, artist and track names.<br />
Differences in cat# etc. might get lost, but are usually not even shown in the list of results.<br />
When the disc ID is not found, a fuzzy lookup (see above) is done.<br />
<br />
Additionally listing all releases in a release group with similar track times as one already in the result would be possible<br />
to remove the rate of false negatives.<br />
<br />
== Issues with (or because of) Disc IDs ==<br />
<br />
=== Pregap Tracks (locks) ===<br />
The ability to attach pregrap tracks directly to the release is a long wanted feature and tracked in [http://tickets.musicbrainz.org/browse/MBS-967 MBS-967].<br />
You can't add a [[Pregap Track]] as track 0 when a Disc ID is attached to the release (tracklist is locked).<br />
Removing the Disc ID could work, but the release can only be found by clients with (fuzzy) TOC lookup support (see below).<br />
Removing Disc IDs altogether would extend the problem to all releases.<br />
<br />
The additional "track" would confuse many tagger tools, so the pregap track should only be included when explicitely requested, not as a normal track.<br />
Just removing the lock (completely) is no solution, but making the addition / naming of a special pregap track possible is possible.<br />
<br />
It should be noted, that the fact that a pregap track exists is already included in (both) TOCs, as the fact that the first track starts after way more than the usual 2 seconds (offset >> 150).<br />
<br />
=== Correcting Times (locks) ===<br />
When disc IDs are attached, the track times can't be set manually. Setting times to one of the disc IDs is the only option.<br />
::I didn't grasp yet when it is the case that no correct disc ID is available and there is a better source for the correct time. The notes mention Video CDs, which possibly shouldn't get disc IDs attached in the first place? (when there are no audio tracks). Otherwise I don't see why we should mess around with length of data tracks. --[[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 14:24, 25 September 2013 (UTC)<br />
<br />
=== Pre NGS disc IDs (precision/false positives, though releated) ===<br />
Disc IDs added pre-NGS were copied to all releases split off with NGS.<br />
So many disc IDs from that time are still attached to all releases in a release group.<br />
The results include some wrong entries, but no completely irrelevant entries.<br />
<br />
=== Incencitive to add IDs to multiple releases (recall/false negatives, though similar) ===<br />
When a disc ID is attached to one release in a release group, the lookup with this ID yields a result that is good enough for most users.<br />
The release title, artist and track titles match and the cat# etc. are not relevant for many users.<br />
So there is not much incencitive to add the disc ID to more releases in a release group.<br />
::Isrcsubmit (version 2) will include incencitives to attach disc IDs to the exact release the user has ([https://github.com/JonnyJD/musicbrainz-isrcsubmit/pull/75 #75]) --[[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 00:20, 8 October 2013 (UTC)<br />
<br />
This can easily be fixed on server side to include other releases from the release group, although the precision goes down a bit then.<br />
<br />
== Client support with and without full TOC ==<br />
<br />
The main client library for disc ID support is '''[[libdiscid]]''':<br />
* submission url provided includes DiscID and TOC, to save the TOC on the server<br />
* web service url provided also includes both, but is outdated (WS/1)<br />
* '''only the disc ID can be gathered directly with the API (as of 0.5.2)'''<br />
* there will be an upcoming release (0.6.0) with a "toc string API" ([http://tickets.musicbrainz.org/browse/LIB-41 LIB-41])<br />
<br />
The '''[[Development/XML Web Service/Version 2#discid|web service]]''' does allow lookup by disc ID and, if it doesn't match, a fuzzy lookup by TOC.<br />
The result of a match by disc ID and a fuzzy match by TOC looks completely different<br />
(see [http://tickets.musicbrainz.org/browse/LMB-36?focusedCommentId=28901&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_28901 comment in LMB-36])<br />
A syntactically valid (though not existing) disc ID is always required and a '''match by TOC is currently always fuzzy'''.<br />
<br />
'''[[libmusicbrainz]]''' is technically able to work with a TOC lookup, but isn't straightforward due to how the web service works.<br />
(see above and [http://tickets.musicbrainz.org/browse/LMB-36 LMB-36])<br />
<br />
'''[https://github.com/alastair/python-musicbrainz-ngs python-musicbrainzngs]''' can only lookup by disc ID.<br />
There is an [https://github.com/alastair/python-musicbrainz-ngs/issues/105 outstanding ticket] for (fuzzy) lookup by TOC.<br />
<br />
== Usage statistics ==<br />
''(statistics gathered 20130927)''<br />
<br />
* /ws/2/discid: 9 days, 683,503 requests, only 246 (0.00036 %) with toc parameter (enabling fuzzy lookup when ID is not found)<br />
* mb2freedb: ca. 550-620 k per day (this always uses a fuzzy lookup)<br />
<br />
So we have over 7 times more requests per freedb gateway than with discids directly (-> 88 % of all lookups are freedb gateway lookups).<br />
Altogether we have ca. 660 k requests per day and 88 % of these work with fuzzy lookup.<br />
<br />
== Summary/Evaluation/TLDNR ==<br />
<br />
Disc IDs are only IDs, so they are not important data in themselves.<br />
The important data is in the (server) TOCs. However, the Disc IDs also aren't the problem, since the locks are in place because of the TOCs.<br />
When lookup would work directly by TOC, we would have the same issues with confused taggers (in case of pregap tracks implemented as normal tracks) or inconsistent data (in case of track times in no relation to actual TOCs).<br />
So the question would rather be if we want to keep maintaining (server) TOCs.<br />
Removing DiscIDs without removing (server) TOCs attached to releases wouldn't make any sense.<br />
<br />
Removing Disc IDs/TOCs would leave 88 % of lookups (freedb gateway) unchanged,<br />
but break most applications that opted to implement lookup by Disc ID as recommended by MusicBrainz.<br />
Nearly none of them support fuzzy lookups.<br />
<br />
=== fuzzy disc TOC lookup vs. discid lookup ===<br />
Fuzzy lookup has the problem with unrelated false positives (low precision).<br />
This and the (few) false negatives can only be solved with additional manually attached (server) TOCs or similar<br />
to filter or amend the results.<br />
<br />
DiscID lookup does has nearly no false positives (high precision),<br />
but can miss similar releases with different cat#.<br />
DiscID lookup does have to be maintained, but all problems can (in theory) be fixed with adding/moving/removing DiscIDs/TOCs<br />
and/or making the server smarter (in cases of missing releases from the same release group).<br />
<br />
=== exact disc TOC lookup ===<br />
Could be used for ranking results for fuzzy TOC lookup (exact matches at the top),<br />
but is otherwise functionally equivalent of a discID lookup.</div>JonnyJDhttps://wiki.musicbrainz.org/index.php?title=libdiscid&diff=64511libdiscid2013-10-03T19:15:53Z<p>JonnyJD: /* Download */ set version to 0.6.1</p>
<hr />
<div><small>[[Products]] > libdiscid </small> <br />
<br />
'''libdiscid''' is a C library for creating MusicBrainz and freedb [[Disc ID|disc ID]]s from audio CDs.<br />
It reads a CD's table of contents (TOC) and generates an identifier which can be used to lookup the CD at MusicBrainz.<br />
Additionally, it provides a submission URL for adding the disc ID to the database and gathers [[ISRC]]s and the MCN (=UPC/EAN) from disc.<br />
<br />
The interface of this library is new, but the disc ID algorithm and the operating system dependent CD-ROM/DVD-ROM access code have been ported from libmusicbrainz version 2.<br />
<br />
For more info about the interface read the [http://jonnyjd.github.io/libdiscid/ API documentation].<br />
The repository is at [https://github.com/metabrainz/libdiscid GitHub] and bugs should be reported at the [http://tickets.musicbrainz.org/browse/LIB MusicBrainz bug tracker].<br />
<br />
libdiscid is licensed under the [http://www.gnu.org/copyleft/lgpl.html GNU Lesser General Public License 2.1 or later].<br />
<br />
==Download==<br />
<br />
Source code:<br />
<br />
* [http://ftp.musicbrainz.org/pub/musicbrainz/libdiscid/libdiscid-0.6.1.tar.gz libdiscid-0.6.1.tar.gz] (358K)<br />
<br />
Compiled packages:<br />
<br />
* [http://ftp.musicbrainz.org/pub/musicbrainz/libdiscid/libdiscid-0.6.1-win32.zip libdiscid-0.6.1-win32.zip] (413K)<br />
* [http://ftp.musicbrainz.org/pub/musicbrainz/libdiscid/libdiscid-0.6.1-mac.zip libdiscid-0.6.1-mac.zip] (409K)<br />
<br />
Changes:<br />
<br />
* [https://raw.github.com/metabrainz/libdiscid/master/ChangeLog ChangeLog] (GitHub)<br />
<br />
===Feature Matrix===<br />
<br />
{| class="wikitable"<br />
|rowspan=2| ||colspan=3|Linux||colspan=3|Windows||colspan=3|Mac||(k)FreeBSD||Open/NetBSD||Solaris||generic<br />
|-<br />
| read ||mcn ||isrc ||read ||mcn ||isrc ||read ||mcn ||isrc ||read ||read ||read ||put<br />
|-<br />
|libdiscid 0.1.0||&bull;|| || ||&bull;|| || ||&bull;|| || || || || ||<br />
|-<br />
|libdiscid 0.2.0||&bull;|| || ||&bull;|| || ||&bull;|| || ||&bull;|| || ||<br />
|-<br />
|libdiscid 0.3.0||&bull;|| || ||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||<br />
|-<br />
|libdiscid 0.3.1||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||<br />
|-<br />
|libdiscid 0.4.0||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;<br />
|}<br />
The "read" feature can create an ID from a disc in the drive.<br />
Generic platform support was added in 0.4.0 and can only generate disc IDs with put() (without drive access).<br />
Put is also available for every platform where read is available.<br />
Only versions where new feature/platform support is implemented are listed.<br />
<br />
==Language bindings==<br />
<br />
* Ruby - [https://github.com/phw/ruby-discid ruby-discid]<br />
* Perl - [http://search.cpan.org/dist/MusicBrainz-DiscID/ http://search.cpan.org/dist/MusicBrainz-DiscID/] ([https://github.com/njh/perl-musicbrainz-discid GitHub])<br />
* Java:<br />
** [https://github.com/dietmar-steiner/JMBDiscId JMBDiscId]<br />
** [http://benow.ca/projects/libdiscid-java/ http://benow.ca/projects/libdiscid-java/]<br />
* Python:<br />
** [https://python-discid.readthedocs.org python-discid], using ctypes (no compilation), Python 2 and 3<br />
** [http://pythonhosted.org/python-libdiscid/ python-libdiscid], using cython (compiled), Python 2 and 3<br />
** ''[[python-musicbrainz2]], deprecated, contains functions to access libdiscid using its own API, Python 2 only, no ISRCs''<br />
* Haskell - [http://hackage.haskell.org/package/MusicBrainz-libdiscid Hackage] ([https://github.com/atwupack/MusicBrainz-libdiscid GitHub])<br />
* .NET/Mono - [https://github.com/phw/dotnet-discid dotnet-discid]<br />
<br />
==Tools based on libdiscid==<br />
* [[ISRC#Resources]], many ISRC submit tools are based on libdiscid or one of the bindings and can be used to add disc IDs and ISRCs.<br />
* [[Picard]] uses libdiscid to calculate the disc ID (lookup by CD)<br />
<br />
==See also==<br />
* [[User:PBryan/mbdiscid]], an alternative in Perl<br />
<br />
[[Category:Products]] [[Category:Development]] [[Category:WikiDocs Page]] [[Category:To Be Reviewed]]</div>JonnyJD