Difference between revisions of "libdiscid"
(link changelog) |
(libdiscid-0.6.4 download links) |
||
(40 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 |
+ | '''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. |
||
+ | 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 |
+ | 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 [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 bug tracker]. |
||
+ | |||
⚫ | |||
==Download== |
==Download== |
||
Line 11: | Line 16: | ||
Source code: |
Source code: |
||
− | * [http://ftp. |
+ | * [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. |
+ | * [http://ftp.eu.metabrainz.org/pub/musicbrainz/libdiscid/libdiscid-0.6.4-win.zip libdiscid-0.6.4-win.zip] (68K) |
− | * [http://ftp. |
+ | * [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] ( |
+ | * [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||•|| || ||•|| || ||•|| || || || || || || || || || || |
||
+ | |- |
||
+ | |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== |
==Language Bindings== |
||
− | * Ruby - [https://github.com/phw/ |
+ | * 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/] |
+ | * Perl - [http://search.cpan.org/dist/MusicBrainz-DiscID/ http://search.cpan.org/dist/MusicBrainz-DiscID/] ([https://github.com/njh/perl-musicbrainz-discid GitHub]) |
+ | * Java: |
||
⚫ | |||
+ | ** [https://github.com/dietmar-steiner/JMBDiscId JMBDiscId] |
||
⚫ | |||
* Python: |
* Python: |
||
− | ** [https://python-discid.readthedocs.org python-discid] |
+ | ** [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 |
+ | ** ''[[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]) |
||
+ | * .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/MetaBrainz.MusicBrainz.DiscId MetaBrainz.MusicBrainz.DiscId]: not bindings, but a native library implementation ([https://www.nuget.org/packages/MetaBrainz.MusicBrainz.DiscId NuGet Package]) |
||
+ | *** Adds support for CD-TEXT retrieval, but does not currently support Solaris (no recent Mono, no .NET Core) or macOS (no machine available). |
||
+ | ** [https://github.com/Zastai/MetaBrainz.MusicBrainz.dotnet-mbdiscid MetaBrainz.MusicBrainz.dotnet-mbdiscid]: .NET Core command-line tool using MetaBrainz.MusicBrainz.DiscId ([https://www.nuget.org/packages/MetaBrainz.MusicBrainz.dotnet-mbdiscid NuGet Package]) |
||
+ | * 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 |
||
+ | * D - [https://gitlab.com/jmdavisprog/libdiscid https://gitlab.com/jmdavisprog/libdiscid] |
||
+ | * Go - [https://git.sr.ht/~phw/go-discid go-discid] |
||
+ | * Hare - [https://git.sr.ht/~phw/hare-discid hare-discid] |
||
+ | |||
+ | ==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. |
||
+ | * [https://picard.musicbrainz.org Picard] uses libdiscid to calculate the disc ID (lookup by CD) |
||
+ | ==See also== |
||
+ | * [[User:PBryan/mbdiscid]], an alternative in Perl |
||
[[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 15:23, 2 March 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:
- libdiscid-0.6.4.tar.gz (384K)
Compiled packages:
- libdiscid-0.6.4-win.zip (68K)
- libdiscid-0.6.4-mac.zip (58K)
Changes:
- ChangeLog (GitHub)
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
- Ruby - ruby-discid: Gem (Github)
- Perl - http://search.cpan.org/dist/MusicBrainz-DiscID/ (GitHub)
- Java:
- Python:
- python-discid, using ctypes (no compilation), Python 2 and 3
- 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
- Haskell - Hackage (GitHub)
- .NET/Mono
- DotNetDiscId: bindings using a native libdiscid DLL (NuGet Package)
- MetaBrainz.MusicBrainz.DiscId: not bindings, but a native library implementation (NuGet Package)
- Adds support for CD-TEXT retrieval, but does not currently support Solaris (no recent Mono, no .NET Core) or macOS (no machine available).
- MetaBrainz.MusicBrainz.dotnet-mbdiscid: .NET Core command-line tool using MetaBrainz.MusicBrainz.DiscId (NuGet Package)
- Rust:
- D - https://gitlab.com/jmdavisprog/libdiscid
- Go - go-discid
- Hare - hare-discid
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
- User:PBryan/mbdiscid, an alternative in Perl