python-discid 1.0.0 (and 1.0.2) released

In februar I announced a beta version of the first python binding of libdiscid. A couple months have passed and I can now announce the first stable release of python-discid.

The main purpose is the calculation of MusicBrainz Disc IDs from a CD-AUDIO disc or a TOC of such a disc, but reading of ISRCs and the MCN (EAN/UPC) are also supported.
Disc IDs can be submitted without further dependencies. For lookup and ISRC submission it is recommended to use it together with python-musicbrainzngs.
Python 2 >= 2.6 or Python 3 >= 3.1 as well as libdiscid >= 0.2.2 are required. Newer libdiscid features need a newer libdiscid, but there are methods available to check for these conditions.

If you still have a program using python-musicbrainz2, I recommend upgrading to the combination of python-discid and python-musicbrainzngs, since python-musicbrainz2 uses a deprecated web service and is not actively maintained anymore.

The main website and API documentation is at readthedocs, the repository and bugtracker are at GitHub.
Official source tarballs are available on pypi and releases are announced in this blog. There are several linux packages available and listed in the documentation.

If you have been using a pre-release version of python-discid you will have to update your code.
Compared to python-discid 0.5.0 you now have to use discid.get_default_device(), rather than discid.DEFAULT_DEVICE. If you were using 0.4.0, you should also stop using DiscId() directly or a DeprecationWarning is displayed.

There is also a patch release 1.0.2 available, which has no code changes compared to 1.0.0.
There was an intermediate 1.0.1, which tried to make some convenience changes for beta users, but failed. 1.0.1 was never available as a tarball, but the tag and changelog exists.

User agent based throttling is now live

Yesterday we talked about rolling out our throttling based on User-Agent strings. A few minutes ago we pushed this feature live on our servers so now the updated rules are in effect. python-musicbrainz/0.7.3 users are now allowed 500 requests every 10 seconds and every single one of these requests is constantly being used. No surprise here. 🙂

For the exact details on what is throttled and how to get around your application being throttled, see our rate limiting documentation.

Dear python-musicbrainz/0.7.3 application, we need to talk!

An application that uses our python-musicbrainz/0.7.3 client library has been putting undue load on our servers all at once. This application looks up something at MusicBrainz at 03:00UTC causing our servers to be overloaded at that time each day.

To protect our servers from being overloaded we’re going to block this application from 3:00 UTC – 4:00 UTC. We’re hoping that this will alllow us to identify the application and start a dialog with the application authors. Once we have established communication with the authors and worked up a plan to fix this, we’re going to release the block.

We really dislike blocking applications, but if applications are being inconsiderate of our resources, we’re left with few options. We hope to hear from the application authors soon so we can resolve this issue. Also, we’re moving forward with our plans to require User-Agent strings that properly identify applications using our service to fix this problem going forward.

If you are the author of said application, please leave a comment with information on how we can get in touch with you.

Looking for a contract programmer for C++/Python work

UPDATE: This position has been filled.

A soon-to-be partner of MusicBrainz is looking for an engineer for contract work. This company is looking for a person who has the following skills:

  1. Strong Python and C++ skills with experience in building applications on Windows, Linux and Mac.
  2. Open source programming experience
  3. Server programming skills a plus
  4. Solr and audio programming experience a plus
  5. Ability to be a self starter, handle task coordination via Skype and IRC.

The work would involve working with MusicBrainz and the partner company. This contract would be full time for 2-5 months, depending on the workload which isn’t very clear yet. After that the contract would taper off to 10-20 hours per week on an ongoing basis. Depending on how main portion of the contract goes, the company may decide to give more hours to the contractor on new projects. The pay for this position is still being determined, but its safe to assume that it would be a fair rate for an engineer based in the US. This engineer can be located anywhere, but the pay is likely to be appropriate for US rates. If you are interested in this position, please send your resume to helpwanted at musicbrainz dot org.

Looking for a new maintainer for pymb2 and libdiscid

Matthias Friedrich (yalaforge) finds himself with little spare time on his hands these days and has asked me to find a new maintainer for the Python MusicBrainz library (pymusicbrainz2) and for the C based libdiscid library. While libdiscid doesn’t require immediate work, the pymb2 library needs to have support for Release Groups (from the 2009-05-24 server update) added in.

Matthias suggested that anyone interested in becoming the maintainer should write a patch to add the needed release groups support. I think this is a good idea — anyone interested?

If so, please post a comment!

And thanks for your hard work on these projects Matthias!

UPDATE: Our Help Wanted page has been updated to reflect our current needs.

python-musicbrainz2-0.4.0 released

The official python bindings for MusicBrainz, python-musicbrainz2 have been released. Starting with this version, the API is stable and the package is considered ready for general use.

Links:

* Download page
* API documentation

Thanks go to everyone who participated in the development, most notably Lukáš Lalinský who ported picard-0.7 to python-musicbrainz2, created binary packages and has contributed bug reports and patches.

Matthias Friedrich