libdiscid: Difference between revisions

From MusicBrainz Wiki
Jump to navigationJump to search
(→‎Tools based on libdiscid: Replace with including separate page where the content moved to)
 
(41 intermediate revisions by 5 users not shown)
Line 1: Line 1:
<small>[[Products]] > libdiscid </small>
<small>[[Products]] > libdiscid </small>


'''libdiscid''' is a C library for creating MusicBrainz and freedb DiscIDs from audio CDs.
'''libdiscid''' is a C library for creating MusicBrainz and freedb [[Disc ID|disc ID]]s from audio CDs.
It reads a CD's table of contents (TOC) and generates an identifier which can be used to lookup the CD at MusicBrainz.
It reads a CD's table of contents (TOC) and generates an identifier which can be used to lookup the CD at MusicBrainz.
Additionally, it provides a submission URL for adding the DiscID to the database and gathers [[ISRC]]s and the MCN (=UPC/EAN) from disc.
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.


The interface of this library is new, but the DiscID algorithm and the operating system dependent CD-ROM/DVD-ROM access code have been ported from libmusicbrainz version 2.
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.


For more info about the interface read the [http://jonnyjd.github.com/libdiscid API documentation].
For more info about the interface read the [https://metabrainz.github.io/libdiscid/ API documentation].
The repository is at [https://github.com/metabrainz/libdiscid Github] and bugs should be reported at the [http://tickets.musicbrainz.org/browse/LIB MusicBrainz Bugtracker].
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].


libdiscid is licensed under the [http://www.gnu.org/copyleft/lgpl.html GNU Lesser General Public License 2.1 or later].
libdiscid is licensed under the [http://www.gnu.org/copyleft/lgpl.html GNU Lesser General Public License 2.1 or later].
Line 16: Line 16:
Source code:
Source code:


* [http://ftp.musicbrainz.org/pub/musicbrainz/libdiscid/libdiscid-0.4.1.tar.gz libdiscid-0.4.1.tar.gz] (356K)
* [http://ftp.eu.metabrainz.org/pub/musicbrainz/libdiscid/libdiscid-0.6.4.tar.gz libdiscid-0.6.4.tar.gz] (384K)


Compiled packages:
Compiled packages:


* [http://ftp.musicbrainz.org/pub/musicbrainz/libdiscid/libdiscid-0.4.0-win32.zip libdiscid-0.4.0-win32.zip] (424K)
* [http://ftp.eu.metabrainz.org/pub/musicbrainz/libdiscid/libdiscid-0.6.4-win.zip libdiscid-0.6.4-win.zip] (68K)
* [http://ftp.musicbrainz.org/pub/musicbrainz/libdiscid/libdiscid-0.4.0-mac.zip libdiscid-0.4.0-mac.zip] (441K)
* [http://ftp.eu.metabrainz.org/pub/musicbrainz/libdiscid/libdiscid-0.6.4-mac.zip libdiscid-0.6.4-mac.zip] (58K)


Changes:
Changes:


* [https://raw.github.com/metabrainz/libdiscid/master/ChangeLog ChangeLog] (github)
* [https://raw.github.com/metabrainz/libdiscid/master/ChangeLog ChangeLog] (GitHub)

===Feature Matrix===

{| class="wikitable"
|rowspan=2| ||colspan=3|Linux ||colspan=3|Windows ||colspan=3|macOS ||colspan=3|(k)FreeBSD ||colspan=3|Open/NetBSD ||Haiku||Solaris||generic
|-
| read ||mcn ||isrc ||read ||mcn ||isrc ||read ||mcn ||isrc ||read ||mcn ||isrc ||read ||mcn ||isrc ||read ||read ||put
|-
|libdiscid 0.1.0||&bull;|| || ||&bull;|| || ||&bull;|| || || || || || || || || || ||
|-
|libdiscid 0.2.0||&bull;|| || ||&bull;|| || ||&bull;|| || ||&bull;|| || || || || || || ||
|-
|libdiscid 0.3.0||&bull;|| || ||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;|| || ||&bull;|| || || ||&bull;||
|-
|libdiscid 0.3.1||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;|| || ||&bull;|| || || ||&bull;||
|-
|libdiscid 0.4.0||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;|| || ||&bull;|| || || ||&bull;||&bull;
|-
|libdiscid 0.6.2||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;|| ||&bull;||&bull;
|-
|libdiscid 0.6.3||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;||&bull;
|}

The "read" feature can create an ID from a disc in the drive.
Generic platform support was added in 0.4.0 and can only generate disc IDs with put() (without drive access).
Put is also available for every platform where read is available.
Only versions where new feature/platform support is implemented are listed.


==Language Bindings==
==Language Bindings==


* Ruby - [https://github.com/phw/mb-discid mb-discid]
* C#/Mono/.NET - [https://github.com/phw/dotnet-discid DotNetDiscId]: bindings using a native libdiscid DLL ([https://www.nuget.org/packages/DotNetDiscId NuGet Package])
* D - [https://gitlab.com/jmdavisprog/libdiscid https://gitlab.com/jmdavisprog/libdiscid]
* Perl:
* Go - [https://git.sr.ht/~phw/go-discid go-discid]
** [http://search.cpan.org/dist/MusicBrainz-DiscID/ http://search.cpan.org/dist/MusicBrainz-DiscID/] ([https://github.com/njh/perl-musicbrainz-discid GitHub])
* Hare - [https://git.sr.ht/~phw/hare-discid hare-discid]
** [[User:PBryan/mbdiscid]], no binding but a rewrite in Perl
* Haskell - [http://hackage.haskell.org/package/MusicBrainz-libdiscid Hackage] ([https://github.com/atwupack/MusicBrainz-libdiscid GitHub])
* Java:
* Java:
** [https://github.com/dietmar-steiner/JMBDiscId JMBDiscId]
** [https://github.com/dietmar-steiner/JMBDiscId JMBDiscId]
** [http://benow.ca/projects/libdiscid-java/ http://benow.ca/projects/libdiscid-java/]
** [http://benow.ca/projects/libdiscid-java/ http://benow.ca/projects/libdiscid-java/]
* Perl - [http://search.cpan.org/dist/MusicBrainz-DiscID/ http://search.cpan.org/dist/MusicBrainz-DiscID/] ([https://github.com/njh/perl-musicbrainz-discid GitHub])
* Python:
* Python:
** [https://python-discid.readthedocs.org python-discid] a Binding for Python 2 and 3
** [https://python-discid.readthedocs.org python-discid], using ctypes (no compilation), Python 2 and 3
** [http://pythonhosted.org/python-libdiscid/ python-libdiscid], using cython (compiled), Python 2 and 3
** [[python-musicbrainz2|PythonMusicBrainz2]], this is not a direct wrapper, but contains functions to access libdiscid using its own API
** ''[[python-musicbrainz2]], deprecated, contains functions to access libdiscid using its own API, Python 2 only, no ISRCs''
* Haskell - [http://hackage.haskell.org/package/MusicBrainz-libdiscid Hackage] ([https://github.com/atwupack/MusicBrainz-libdiscid GitHub])
* Ruby - ruby-discid: [https://rubygems.org/gems/discid Gem] ([https://github.com/phw/ruby-discid Github])
* Rust:
** rust-discid: [https://crates.io/crates/discid Crate] ([https://git.sr.ht/~phw/rust-discid SourceHut]), safe wrapper around rust-discid-sys
** rust-discid-sys: [https://crates.io/crates/discid-sys Crate] ([https://git.sr.ht/~phw/rust-discid-sys SourceHut]), unsafe FFI bindings, in most cases you should use rust-discid instead

==Tools based on libdiscid==
{{:Disc_ID_Calculation/Tools/Based_on_libdiscid}}

==Third party alternatives==

{{:Disc_ID_Calculation/Libraries/Third_Party}}

===Tools based on third party alternatives===

{{:Disc_ID_Calculation/Tools/Third_Party}}


[[Category:Products]] [[Category:Development]] [[Category:WikiDocs Page]] [[Category:To Be Reviewed]]
[[Category:Products]] [[Category:Development]] [[Category:WikiDocs Page]] [[Category:To Be Reviewed]]

Latest revision as of 13:42, 28 October 2023

Products > libdiscid

libdiscid is a C library for creating MusicBrainz and freedb disc IDs from audio CDs. It reads a CD's table of contents (TOC) and generates an identifier which can be used to lookup the CD at MusicBrainz. Additionally, it provides a submission URL for adding the disc ID to the database and gathers ISRCs and the MCN (=UPC/EAN) from disc.

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.

For more info about the interface read the API documentation. The repository is at GitHub and bugs should be reported at the MusicBrainz bug tracker.

libdiscid is licensed under the GNU Lesser General Public License 2.1 or later.

Download

Source code:

Compiled packages:

Changes:

Feature Matrix

Linux Windows macOS (k)FreeBSD Open/NetBSD Haiku Solaris generic
read mcn isrc read mcn isrc read mcn isrc read mcn isrc read mcn isrc read read put
libdiscid 0.1.0
libdiscid 0.2.0
libdiscid 0.3.0
libdiscid 0.3.1
libdiscid 0.4.0
libdiscid 0.6.2
libdiscid 0.6.3

The "read" feature can create an ID from a disc in the drive. Generic platform support was added in 0.4.0 and can only generate disc IDs with put() (without drive access). Put is also available for every platform where read is available. Only versions where new feature/platform support is implemented are listed.

Language Bindings

Tools based on libdiscid

  • Our tagger Picard that has a feature “Lookup by CD”
  • Some of the ISRC submit tools that also support submitting Disc ID

Third party alternatives

  • C#/Mono/.NET - MetaBrainz.MusicBrainz.DiscId (NuGet Package), a library which adds support for CD-TEXT retrieval, but does not currently support Solaris (no recent Mono, no .NET Core) or macOS (no machine available)

Tools based on third party alternatives

  • mbdiscid, a command-line tool (written in Perl) that computes the Disc ID, and either prints it or submits it through a browser
  • MetaBrainz.MusicBrainz.dotnet-mbdiscid (NuGet Package), a command-line tool (using the C#/Mono/.NET library MetaBrainz.MusicBrainz.DiscId) that shows information about an audio CD, including the Disc ID, CD-TEXT data, ISRC values…