MusicBrainz Client Library

Overview

============================ MusicBrainz Client Library

Documentation

To get started quickly have a look at the examples directory which contains various sample programs. API documentation can be generated using [Doxygen] (http://www.stack.nl/~dimitri/doxygen/). The online version of the API documentation can be found at:

http://metabrainz.github.com/libmusicbrainz/

Compiling and Linking

This package provides a pkg-config script that returns the necessary compiler and linker flags, as well as the version number. To build a small sample program one would use:

g++ -o test_app test_app.cpp `pkg-config libmusicbrainz5 --cflags --libs`

If you don't want/can't use pkg-config and you are using the C API, make sure you link in the C++ standard library:

gcc -o test_app test_app.c -lmusicbrainz5 -lm -lstdc++

Contact

If you have any questions about this library, feel free to ask on the MusicBrainz development mailing list:

http://lists.musicbrainz.org/mailman/listinfo/musicbrainz-devel

Please submit bug reports to the MusicBrainz bug tracking system:

http://tickets.musicbrainz.org/browse/LMB

You can find out more about the MusicBrainz project by visiting its site:

http://musicbrainz.org/
Issues
  • replace non-free xmlparser with libxml2

    replace non-free xmlparser with libxml2

    This PR rebases the patches from Christophe Fergeau on the current master branch and fixes some outstanding issues. It also bumps the SOVERSION to be on the safe side.

    I've test built all reverse of libmusicbrainz in Debian with these changes and didn't see any build failures. The output of the included test programs looks sane to me.

    Please let me know if there are any outstanding issues. It'd be great to get this fixed before the Debian jessie freeze (2014-11-05).

    opened by sebastinas 4
  • Guard against undefined std::string behavior.

    Guard against undefined std::string behavior.

    • Passing NULL char pointer to std::string constructor results in undefined behaviour, so guard against that in the generated C interface. See:

      http://stackoverflow.com/questions/17464514/initialize-stdstring-from-a-possibly-null-char-pointer

    This came out of a discussion of a crash in sound-juicer on FreeBSD 11.0-CURRENT on the GNOME bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=742019 The current code happens to work on Linux, but this is a coincidence, and not based on defined behaviour, AFAICT.

    I think it is fair that libmusicbrainz should guard against this so the C interface can be idiomatic, but libmusicbrainz avoids the undefined behaviour internally.

    Thoughts?

    opened by petejohanson 3
  • Delete CODE_OF_CONDUCT.md and use org default

    Delete CODE_OF_CONDUCT.md and use org default

    This seems like an outdated copy of the org's CoC that adds nothing. Removing so this uses the default .github repo one that is kept up to date. Feel free to reject this PR if you want to keep a separate one for some reason, rather than this being a historical artifact :)

    opened by reosarevok 0
  • Add CODE_OF_CONDUCT.md (pointing to MusicBrainz CoC)

    Add CODE_OF_CONDUCT.md (pointing to MusicBrainz CoC)

    Summary

    Adds CODE_OF_CONDUCT.md to repo, following past discussion to include a code of conduct file for our project's community profile.

    Background

    This was discussed about two weeks ago in the weekly meeting to meet more of the community profile requirements that GitHub marks. It also is helpful for our project to promote the Code of Conduct and make it visible to others contributing to our projects.

    Details

    The document in this repo points to the full MusicBrainz Code of Conduct. It also tries to provide basic steps for someone to make a report or to ask for help in a situation regarding the Code of Conduct.

    opened by jwflory 0
  • doxygen: Explicitly enable generation of HTML doc

    doxygen: Explicitly enable generation of HTML doc

    Running 'make docs' with doxygen 1.8.7 gives: "Warning: No output formats selected! Set at least one of the main GENERATE_* options to YES." and even though make is successful, no documentation is generated. Adding GENERATE_HTML = yes to Doxyfile avoids this.

    This just applies the patch from https://tickets.metabrainz.org/projects/LMB/issues/LMB-41?filter=allopenissues.

    GENERATE_HTML is "yes" by default, but it can't hurt to explicitly specify it.

    opened by mineo 0
  • Fix local includes in Query.h

    Fix local includes in Query.h

    This is inconsistent with all other includes and creates problems when using the -I- flag on old versions of gcc.

    This came up when using this library on Haiku OS.

    opened by TwoFX 0
  • Split c interface

    Split c interface

    This is similar to the split in libcoverart.

    However, this time reverse dependencies are affected by this change: cantata, flactag and libkcddb require an update of the pkg-config name respectively the name of the library.

    opened by sebastinas 0
  • Make doxygen output reproducible

    Make doxygen output reproducible

    This makes the doxygen output reproducible by disabling timestamps in the generated HTML. See https://wiki.debian.org/ReproducibleBuilds/TimestampsInDocumentationGeneratedByDoxygen and https://wiki.debian.org/ReproducibleBuilds/About about the reproducible build effort in Debian.

    opened by sebastinas 0
  • Support out-of-source build

    Support out-of-source build

    Building the library outside of the main directory (e.g. mkdir build; cd build; cmake ..; make) currently fails. These changes should fix the problem.

    http://tickets.musicbrainz.org/browse/LMB-10 https://github.com/metabrainz/libmusicbrainz/issues/1

    opened by lalinsky 0
  • Add HTTPS support

    Add HTTPS support

    See https://tickets.metabrainz.org/browse/MBH-363 - mb.org is at some point going to move to HTTPS (even for the webservice). Without calling ne_ssl_trust_default_ca, connections to caa.org fail because the certificate issuer is not trusted.

    With this patch, ne_ssl_trust_default_ca is called whenever the scheme used to create the ne_session object is "https". This is the case if the port used is 443.

    Unconditionally calling ne_ssl_trust_default_ca does not work because its implementation relies on an ssl context being set up on the session, which is only done by libneon if the scheme is "https". If ne_ssl_trust_default_ca is called on an ne_session without an ssl context, a segfault happens.

    The condition is hardcoded to port 443 at the moment because I can't test anything else. Also, a quick look at ne_session_create showed that it internally sets a port to 443 as well, so I can't be sure that it would really work with ports other than 443.

    Fixes https://tickets.metabrainz.org/browse/LMB-47

    opened by mineo 4
  • libmusicbrainz Visual Studio support

    libmusicbrainz Visual Studio support

    Since I've tested these changes only in Visual Studio 2010, I've added comments about the risk posed by each (to compilation/operation in other environments).

    • Tweaking src/CMakeLists.txt to add some project-wide defines for the musicbrainz5 project - low risk as this applies only to VS
    • Adding a version of CQuery::WaitRequest() which works on Windows platforms - low risk as it (and its associated includes) are confined to _MSC_VER #ifdefs
    • Reinstating the MB_API #define which used to exist in an older version of musicbrainz. This is a slightly modified version which only has any effect when _WIN32 or _WIN64 are defined. The original version also took effect when GCC_HASCLASSVISIBILITY was defined. Low risk.
    • Annotating class declarations and MusicBrainz:: operator << function with MB_API to ensure they're exported from the musicbrainz5 DLL. Including defines.h where needed in a subset of these files to ensure that the MB_API macro is defined where it's used.
    • Annotating C functions in .inc files with MB_API. Low risk.
    • Replacing forward declaration of CMedium in MediumList.h with an include. Doing the same for RelationList.h, SecondaryTypeList.h and ISWCList.h. Small change, but medium risk as it affects all platforms.
    opened by Seltzer 1
Releases(release-5.1.0)
  • release-5.1.0(Nov 13, 2014)

    Changes for libmusicbrainz 5.1.0

    • Fix LMB-33 - Handle 'ended' element in 'relation'
    • Fix LMB-34 - Remove non-free XML parser and replace with libxml2
    • Add support for cross-compilation and building out of tree

    MD5 checksum: 4cc5556aa40ff7ab8f8cb83965535bc3
    SHA224 checksum: 58dbd824d10d6ee90ac427a85e6ea77b71066d947ea2e5dfed2d9957

    N.B. Due to the ABI change, the soname of this library has been bumped. Existing applications will need to be recompiled against the new version.

    Source code(tar.gz)
    Source code(zip)
    libmusicbrainz-5.1.0.tar.gz(75.41 KB)
Owner
MetaBrainz Foundation
A California 501.c.3 non-profit organization running MusicBrainz and other open data/open source projects.
MetaBrainz Foundation
VEngine-Client - vEngine: Official Client Module

━ S Y N O P S I S ━ Maintainer(s): Aviril, Tron vEngine is Next-Gen Sandbox-Engine being crafted in C++. In contrast to UE/Unity/ReverseEngineered-Mod

ᴠ : ꜱᴛᴜᴅɪᴏ 13 Apr 13, 2022
Pyth-client - client API for on-chain pyth programs

pyth-client client API for on-chain pyth programs Build Instructions # depends on openssl apt install libssl-dev # depends on libz apt install zlib1g

Pyth Network 99 Jun 24, 2022
Webdav-client-cpp - C++ WebDAV Client provides easy and convenient to work with WebDAV-servers.

WebDAV Client Package WebDAV Client provides easy and convenient to work with WebDAV-servers: Yandex.Disk Dropbox Google Drive Box 4shared ownCloud ..

Cloud Polis 100 Apr 13, 2022
This repository provides a C++ client SDK for Unleash that meets the Unleash Client Specifications.

Unleash Client SDK for C++ This repository provides a C++ client SDK for Unleash that meets the Unleash Client Specifications. Features The below tabl

Antonio Ruiz 4 Jan 30, 2022
A C++ header-only HTTP/HTTPS server and client library

cpp-httplib A C++11 single-file header-only cross platform HTTP/HTTPS library. It's extremely easy to setup. Just include the httplib.h file in your c

null 7.2k Jun 24, 2022
Ultra fast and low latency asynchronous socket server & client C++ library with support TCP, SSL, UDP, HTTP, HTTPS, WebSocket protocols and 10K connections problem solution

CppServer Ultra fast and low latency asynchronous socket server & client C++ library with support TCP, SSL, UDP, HTTP, HTTPS, WebSocket protocols and

Ivan Shynkarenka 848 Jun 26, 2022
C++ websocket client/server library

WebSocket++ (0.8.2) WebSocket++ is a header only C++ library that implements RFC6455 The WebSocket Protocol. It allows integrating WebSocket client an

Peter Thorson 5.6k Jun 28, 2022
A network library for client/server games written in C++

yojimbo yojimbo is a network library for client/server games written in C++. It's designed around the networking requirements of competitive multiplay

The Network Protocol Company 2.1k Jun 17, 2022
Ole Christian Eidheim 735 Jun 24, 2022
websocket and http client and server library, coming with ws, a command line swiss army knife utility

Hello world IXWebSocket is a C++ library for WebSocket client and server development. It has minimal dependencies (no boost), is very simple to use an

Machine Zone, Inc. 320 Jun 22, 2022
A Lightweight and fully asynchronous WebSocket client library based on libev

libuwsc(中文) A Lightweight and fully asynchronous WebSocket client library based on libev for Embedded Linux. And provide Lua-binding. Why should I cho

Jianhui Zhao 283 Jun 8, 2022
Eclipse Paho C Client Library for the MQTT Protocol

Eclipse Paho C Client Library for the MQTT Protocol This repository contains the source code for the Eclipse Paho MQTT C client library. This code bui

null 2 Apr 27, 2022
single header C(99) library to implement client-server network code for games

single header C(99) library to implement client-server network code for games

Nathan 217 Jun 16, 2022
A cross-platform HTTP client library with a focus on usability and speed

EasyHttp A cross-platform HTTP client library with a focus on usability and speed. Under its hood, EasyHttp uses POCO C++ Libraries and derives many o

Sony 141 Jun 17, 2022
A C++ async HTTP client library to use in asynchronous applications while communicating with REST services.

libashttp An asynchronous HTTP library using Boost.ASIO as the backend. This project is licensed under: Usage Here is a example usage which is taken f

Tolga Hoşgör 51 Dec 19, 2021
Eclipse Paho MQTT C++ Client Library

Eclipse Paho MQTT C++ Client Library This repository contains the source code for the Eclipse Paho MQTT C++ client library on memory-managed operating

Eclipse Foundation 614 Jun 16, 2022
Modern C++ REST Client library

Introduction to the restc-cpp C++ library The magic that takes the pain out of accessing JSON API's from C++ What it does: It formulates a HTTP reques

Jarle Aase 473 Jun 20, 2022
Multi-protocol Port Mapping client library

libplum - Multi-protocol Port Mapping client library libplum (Port Lightweight and Universal Mapping) is a library allowing to forward ports on Networ

Paul-Louis Ageneau 14 Jun 18, 2022
Tiny cross-platform HTTP / HTTPS client library in C.

naett /nɛt:/ Tiny HTTP client library in C. Wraps native HTTP client functionality on macOS, Windows, Linux, iOS and Android in a single, simple non-b

Erik Agsjö 13 Jun 21, 2022