libdiscid: Difference between revisions

From MusicBrainz Wiki
Jump to navigationJump to search
m (→‎Language bindings: mark python-musicbrainz2 as deprecated)
(→‎Language bindings: Added my .NET libraries)
(12 intermediate revisions by 2 users not shown)
Line 7: Line 7:
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.
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 [http://jonnyjd.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 bug tracker].
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].


Line 16: Line 16:
Source code:
Source code:


* [http://ftp.musicbrainz.org/pub/musicbrainz/libdiscid/libdiscid-0.5.0.tar.gz libdiscid-0.5.0.tar.gz] (359K)
* [http://ftp.musicbrainz.org/pub/musicbrainz/libdiscid/libdiscid-0.6.2.tar.gz libdiscid-0.6.2.tar.gz] (358K)


Compiled packages:
Compiled packages:


* [http://ftp.musicbrainz.org/pub/musicbrainz/libdiscid/libdiscid-0.5.0-win32.zip libdiscid-0.5.0-win32.zip] (417K)
* [http://ftp.musicbrainz.org/pub/musicbrainz/libdiscid/libdiscid-0.6.1-win32.zip libdiscid-0.6.1-win32.zip] (413K)
* [http://ftp.musicbrainz.org/pub/musicbrainz/libdiscid/libdiscid-0.5.0-mac.zip libdiscid-0.5.0-mac.zip] (403K)
* [http://ftp.musicbrainz.org/pub/musicbrainz/libdiscid/libdiscid-0.6.1-mac.zip libdiscid-0.6.1-mac.zip] (409K)


Changes:
Changes:
Line 30: Line 30:


{| class="wikitable"
{| class="wikitable"
|rowspan=2| ||colspan=3|Linux||colspan=3|Windows||colspan=3|Mac||(k)FreeBSD||Open/NetBSD||Solaris||generic
|rowspan=2| ||colspan=3|Linux||colspan=3|Windows||colspan=3|Mac||colspan=3|(k)FreeBSD||colspan=3|Open/NetBSD||Solaris||generic
|-
|-
| read ||mcn ||isrc ||read ||mcn ||isrc ||read ||mcn ||isrc ||read ||read ||read ||put
| read ||mcn ||isrc ||read ||mcn ||isrc ||read ||mcn ||isrc ||read ||mcn ||isrc ||read ||mcn ||isrc ||read ||put
|-
|-
|libdiscid 0.1.0||•|| || ||•|| || ||•|| || || || || ||
|libdiscid 0.1.0||•|| || ||•|| || ||•|| || || || || || || || || ||
|-
|-
|libdiscid 0.2.0||•|| || ||•|| || ||•|| || ||•|| || ||
|libdiscid 0.2.0||•|| || ||•|| || ||•|| || ||•|| || || || || || ||
|-
|-
|libdiscid 0.3.0||•|| || ||•||•||•||•||•||•||•||•||•||
|libdiscid 0.3.0||•|| || ||•||•||•||•||•||•||•|| || ||•|| || ||•||
|-
|-
|libdiscid 0.3.1||•||•||•||•||•||•||•||•||•||•||•||•||
|libdiscid 0.3.1||•||•||•||•||•||•||•||•||•||•|| || ||•|| || ||•||
|-
|-
|libdiscid 0.4.0||•||•||•||•||•||•||•||•||•||•||•||•||•
|libdiscid 0.4.0||•||•||•||•||•||•||•||•||•||•|| || ||•|| || ||•||•
|-
|libdiscid 0.6.2||•||•||•||•||•||•||•||•||•||•||•||•||•||•||•||•||•

|}
|}
The "read" feature can create an ID from a disc in the drive.
The "read" feature can create an ID from a disc in the drive.
Line 49: Line 52:
Only versions where new feature/platform support is implemented are listed.
Only versions where new feature/platform support is implemented are listed.


==Language bindings==
==Language Bindings==


* Ruby - [https://github.com/phw/ruby-discid ruby-discid]
* Ruby - ruby-discid: [https://rubygems.org/gems/discid Gem] ([https://github.com/phw/ruby-discid Github])
* Perl - [http://search.cpan.org/dist/MusicBrainz-DiscID/ http://search.cpan.org/dist/MusicBrainz-DiscID/] ([https://github.com/njh/perl-musicbrainz-discid GitHub])
* Perl - [http://search.cpan.org/dist/MusicBrainz-DiscID/ http://search.cpan.org/dist/MusicBrainz-DiscID/] ([https://github.com/njh/perl-musicbrainz-discid GitHub])
* Java:
* Java:
Line 59: Line 62:
** [https://python-discid.readthedocs.org python-discid], using ctypes (no compilation), 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
** [http://pythonhosted.org/python-libdiscid/ python-libdiscid], using cython (compiled), Python 2 and 3
** [[python-musicbrainz2]], deprecated, contains functions to access libdiscid using its own API, Python 2 only, no ISRCs
** ''[[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])
* Haskell - [http://hackage.haskell.org/package/MusicBrainz-libdiscid Hackage] ([https://github.com/atwupack/MusicBrainz-libdiscid GitHub])
* .NET/Mono
** [https://github.com/phw/dotnet-discid DotNetDiscId]: bindings using a native libdiscid DLL ([https://www.nuget.org/packages/DotNetDiscId NuGet Package])
** [https://github.com/Zastai/MusicBrainz MetaBrainz.MusicBrainz.DiscId and dotnet-mbdiscid]: not bindings, but a native library implementation ([https://www.nuget.org/packages/MetaBrainz.MusicBrainz.DiscId NuGet Package]) and command-line tool ([https://www.nuget.org/packages/dotnet-mbdiscid NuGet Package])
* Rust:
** rust-discid: [https://crates.io/crates/discid Crate] ([https://github.com/phw/rust-discid/ GitHub]), safe wrapper around rust-discid-sys
** rust-discid-sys: [https://crates.io/crates/discid-sys Crate] ([https://github.com/phw/rust-discid-sys/ GitHub]), unsafe FFI bindings, in most cases you should use rust-discid instead
* D - [https://gitlab.com/jmdavisprog/libdiscid https://gitlab.com/jmdavisprog/libdiscid]


==Tools based on libdiscid==
==Tools based on libdiscid==

Revision as of 18:42, 23 January 2020

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 Mac (k)FreeBSD Open/NetBSD Solaris generic
read mcn isrc read mcn isrc read mcn isrc read mcn isrc read mcn isrc 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

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

  • 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.
  • Picard uses libdiscid to calculate the disc ID (lookup by CD)

See also