{ "info": { "author": "Adrian Sampson", "author_email": "adrian@radbox.org", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Multimedia :: Sound/Audio :: Conversion" ], "description": "Chromaprint and Acoustid for Python\n===================================\n\n`Chromaprint`_ and its associated `Acoustid`_ Web service make up a\nhigh-quality, open-source acoustic fingerprinting system. This package provides\nPython bindings for both the fingerprinting algorithm library, which is written\nin C but portable, and the Web service, which provides fingerprint lookups.\n\n.. _Chromaprint: http://acoustid.org/\n.. _Acoustid: http://acoustid.org/chromaprint\n\n\nInstallation\n------------\n\nThis library works with Python 2 (2.7+, possibly also 2.6) and Python 3\n(3.3+).\n\nFirst, install the `Chromaprint`_ fingerprinting library by `Lukas Lalinsky`__.\n(The library itself depends on an FFT library, but it's smart enough to use an\nalgorithm from software you probably already have installed; see the Chromaprint\npage for details.) This module can use either the Chromaprint dynamic library or\nthe ``fpcalc`` command-line tool, which itself depends on `libavcodec`_. If you\nuse ``fpcalc``, either ensure that it is on your ``$PATH`` or set the ``FPCALC``\nenvironment variable to its location.\n\n__ lukas_\n.. _lukas: http://oxygene.sk/lukas/\n.. _libavcodec: http://ffmpeg.org/\n\nThen you can install this library from `PyPI`_ using `pip`_::\n\n $ pip install pyacoustid\n\nThis library uses `audioread`_ to do audio decoding when not using ``fpcalc``\nand `requests`_ to talk to the HTTP API (pip should automatically install\nthese dependencies).\n\n.. _pip: http://www.pip-installer.org/\n.. _PyPI: http://pypi.python.org/\n.. _audioread: https://github.com/sampsyo/audioread\n.. _requests: http://python-requests.org\n\n\nRunning\n-------\n\nYou can run the included demonstration script, ``aidmatch.py``, to test your\ninstallation::\n\n $ python aidmatch.py mysterious_music.mp3\n\nThis will show the top metadata match from Acoustid's database. The script uses\n`audioread`_ to decode music, so it should transparently use a media library\navailable on your system (GStreamer, FFmpeg, MAD, or Core Audio).\n\n\nUsing in Your Code\n------------------\n\nThe simplest way to use pyacoustid to identify audio files is to call the\n``match`` function::\n\n >>> import acoustid\n >>> for score, recording_id, title, artist in acoustid.match(apikey, path):\n >>> ...\n\nThis convenience function uses `audioread`_ to decode audio and parses the\nresponse for you, pulling out the most important track metadata. It returns in\niterable over tuples of relevant information. Everything happens in one fell\nswoop. There are also a number of \"smaller\" functions you can use to perform\nparts of the process:\n\n- ``fingerprint(samplerate, channels, pcmiter)``: Generate a fingerprint for raw\n audio data. Specify the audio parameters and give an iterable containing\n blocks of PCM data.\n- ``fingerprint_file(path)``: Using either the Chromaprint dynamic library or\n the ``fpcalc`` command-line tool, fingerprint an audio file. Returns a pair\n consisting of the file's duration and its fingerprint.\n- ``lookup(apikey, fingerprint, duration)``: Make a request to the `Acoustid`_\n API to look up the fingerprint returned by the previous function. An API key\n is required, as is the length, in seconds, of the source audio. Returns a\n parsed JSON response.\n- ``parse_lookup_result(data)``: Given a parsed JSON response, return an\n iterator over tuples containing the match score (a float between 0 and 1), the\n MusicBrainz recording ID, title, and artist name for each match.\n\nThe module internally performs thread-safe API rate limiting to 3 queries per\nsecond whenever the Web API is called, in accordance with the `Web service\ndocumentation`_.\n\nIf you're running your own Acoustid database server, you can set the base URL\nfor all API calls with the ``set_base_url`` function.\n\nCalls to the library can raise ``AcoustidError`` exceptions of two subtypes:\n``FingerprintGenerationError`` and ``WebServiceError``. Catch these exceptions\nif you want to proceed when audio can't be decoded or no match is found on the\nserver. ``NoBackendError``, a subclass of ``FingerprintGenerationError``, is\nused when the Chromaprint library or fpcalc command-line tool cannot be found.\n\n.. _Web service documentation: http://acoustid.org/webservice\n\n\nVersion History\n---------------\n\n1.1.7\n Include a LICENSE file.\n\n1.1.6\n In submission, avoid an error on non-integer durations.\n A new function, `get_submission_status`, abstracts the API endpoint for\n monitoring submissions using the (new) result from the `submit` function.\n\n1.1.5\n Fix compatibility with Python 3 in the `submit` function.\n Errors in `submit` are now also handled correctly (i.e., they raise an\n informative `WebServiceError` instead of a `TypeError`).\n\n1.1.4\n Fix an error on versions of the `fpcalc` tool that report the duration as a\n fractional number.\n\n1.1.3\n Accept `bytearray` objects in addition to other bytes-like types.\n\n1.1.2\n Fix a possible crash on Unicode text in Python 2 in a non-Unicode locale.\n Look for version \"1\" of the Chromaprint shared library file.\n\n1.1.1\n Fix a possible setup error on Python 3 (thanks to Simon Chopin).\n\n1.1.0\n Include ``fpcalc.py`` script in source distributions.\n Add Python 3 support (thanks to Igor Tsarev).\n\n1.0.0\n Include ``fpcalc.py``, a script mimicking the ``fpcalc`` program from the\n Chromaprint package.\n Handle a ``UnicodeDecodeError`` raised when using the ``fpcalc`` backend on\n Windows with Unicode filenames.\n Standard error output from ``fpcalc`` is suppressed.\n\n0.7\n Properly encode Unicode parameters (resolves a ``UnicodeEncodeError``\n in fingerprint submission).\n Parse all recordings for each Acoustid lookup result.\n\n0.6\n Add a new function, ``fingerprint_file``, that automatically selects a\n backend for fingerprinting a single file.\n\n0.5\n Fix response parsing when recording has no artists or title.\n Fix compatibility with Python < 2.7.\n Add specific ``NoBackendError`` exception.\n\n0.4\n Fingerprinting can now fall back to using the ``fpcalc`` command-line tool\n instead of the Chromaprint dynamic library so the library can be used with\n the binary distributions (thanks to Lukas Lalinsky).\n Fingerprint submission (thanks to Alastair Porter).\n Data chunks can now be buffers as well as bytestrings (fixes compatibility\n with pymad).\n\n0.3\n Configurable API base URL.\n Result parser now generates all results instead of returning just one.\n Find the chromaprint library on Cygwin.\n New module names: ``chromaprint`` and ``acoustid`` (no package).\n\n0.2\n Compress HTTP requests and responses.\n Limit audio decoding to 120 seconds.\n Return score from convenience function.\n\n0.1\n Initial release.\n\n\nCredits\n-------\n\nThis library is by Adrian Sampson. Chromaprint and Acoustid are by `Lukas\nLalinsky`__. This package includes the original `ctypes`_-based bindings\nwritten by Lukas. The entire library is made available under the `MIT license`_.\npyacoustid was written to be used with `beets`_, which you should probably check\nout.\n\n__ lukas_\n.. _ctypes: http://docs.python.org/library/ctypes.html\n.. _beets: http://beets.radbox.org/\n.. _MIT license: http://www.opensource.org/licenses/mit-license.php", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/sampsyo/pyacoustid", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pyacoustid", "package_url": "https://pypi.org/project/pyacoustid/", "platform": "ALL", "project_url": "https://pypi.org/project/pyacoustid/", "project_urls": { "Homepage": "https://github.com/sampsyo/pyacoustid" }, "release_url": "https://pypi.org/project/pyacoustid/1.1.7/", "requires_dist": null, "requires_python": "", "summary": "bindings for Chromaprint acoustic fingerprinting and the Acoustid API", "version": "1.1.7" }, "last_serial": 5316315, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "6fddfb39c6533860d91ff1d22e74da2b", "sha256": "7271c140a79437c6dc3a3e545417fadb2720c427087cbbeb6c4b480f13310840" }, "downloads": -1, "filename": "pyacoustid-0.1.tar.gz", "has_sig": false, "md5_digest": "6fddfb39c6533860d91ff1d22e74da2b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6433, "upload_time": "2011-11-12T01:39:51", "url": "https://files.pythonhosted.org/packages/8d/95/733da67167e37975c34c668ec323384d8fe93f31c20f5dce791d384e5fdc/pyacoustid-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "f8a63e7b1ae0d1a1be8d9f5b9b0f3079", "sha256": "5175b0342b94f82885693fdd313972d302197c37ce17cc6093437e5ca4f3813c" }, "downloads": -1, "filename": "pyacoustid-0.2.tar.gz", "has_sig": false, "md5_digest": "f8a63e7b1ae0d1a1be8d9f5b9b0f3079", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7195, "upload_time": "2011-11-13T00:36:56", "url": "https://files.pythonhosted.org/packages/58/3c/96e9d2c5bce9f47e9c13c57fede02a74cac057a42499a6e29498f2cb729d/pyacoustid-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "a3e9bf118b2b58a438dfce4b94aa48f3", "sha256": "f17819fb4acff436a6c952802b081a18757d0d823ab39ed6d79763ff60370171" }, "downloads": -1, "filename": "pyacoustid-0.3.tar.gz", "has_sig": false, "md5_digest": "a3e9bf118b2b58a438dfce4b94aa48f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7866, "upload_time": "2011-12-06T03:05:40", "url": "https://files.pythonhosted.org/packages/85/16/d4adfe149b2aaa3a0682f8517f99821df3c5545fe2f9fd815781dc34e6df/pyacoustid-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "32c7db650a42fdd7588b7d852154911e", "sha256": "b003f1f625bc53615b205c2cddf1923efb22aa40142e77f1fb42f8eb34238446" }, "downloads": -1, "filename": "pyacoustid-0.4.tar.gz", "has_sig": false, "md5_digest": "32c7db650a42fdd7588b7d852154911e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9434, "upload_time": "2012-01-20T06:56:52", "url": "https://files.pythonhosted.org/packages/56/eb/cc548d1216cdabdd8535bedfa79f87417236098ef2b98f30a49696ab2613/pyacoustid-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "c13b628104df582fa2f59cb0adcd06b4", "sha256": "063cce47426213e674b940af302107baee200bb162a00aa1b1c582bd430cc45b" }, "downloads": -1, "filename": "pyacoustid-0.5.tar.gz", "has_sig": false, "md5_digest": "c13b628104df582fa2f59cb0adcd06b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9767, "upload_time": "2012-03-16T18:03:29", "url": "https://files.pythonhosted.org/packages/9f/19/39ba5845993731414363e28de94aff3d336ba636809a9ae9083a7dc63ee3/pyacoustid-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "264013babd0b1c6c7c59f49ba2fb01ad", "sha256": "200d45a8c397e9bc672a327b02b52f25b4ccaf1db0b21eb6392338a382a4d609" }, "downloads": -1, "filename": "pyacoustid-0.6.tar.gz", "has_sig": false, "md5_digest": "264013babd0b1c6c7c59f49ba2fb01ad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9943, "upload_time": "2012-04-02T06:04:13", "url": "https://files.pythonhosted.org/packages/88/bb/75dbe7252b3066c0d3a3289d003600a05333482af8b6d645b252bfab76bd/pyacoustid-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "dcdead719a61e9d01258ce5061e67ab7", "sha256": "ad1d15773a776d7880350062131f055e260f4c39135cfcc1cfbfdbcbfc08f2ef" }, "downloads": -1, "filename": "pyacoustid-0.7.tar.gz", "has_sig": false, "md5_digest": "dcdead719a61e9d01258ce5061e67ab7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10173, "upload_time": "2012-05-13T07:39:30", "url": "https://files.pythonhosted.org/packages/d0/16/0900ad1070df632ee366cd0f06e1fb19f34d471c0f6c6c4a89fcbe608b60/pyacoustid-0.7.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "8c9bb988903b373f78ba4386a75b962f", "sha256": "31900428e7b344dca0c2da594b387e88620c319298e3a6400a968078194407d4" }, "downloads": -1, "filename": "pyacoustid-1.0.0.tar.gz", "has_sig": false, "md5_digest": "8c9bb988903b373f78ba4386a75b962f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10476, "upload_time": "2013-03-16T18:33:41", "url": "https://files.pythonhosted.org/packages/16/21/a8134c649e89090786213ee9bb160b46676691c4b9e504588129fdefe792/pyacoustid-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "b27c714d530300b917eb869726334226", "sha256": "0117039cb116af245e6866e8e8bf3c9c8b2853ad087142bd0c2dfc0acc09d452" }, "downloads": -1, "filename": "pyacoustid-1.1.0.tar.gz", "has_sig": false, "md5_digest": "b27c714d530300b917eb869726334226", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11179, "upload_time": "2014-04-05T18:50:39", "url": "https://files.pythonhosted.org/packages/71/6c/e5dcecd425e72ce634e24694f8f6baba09d7d10d8f497c1f80aa649600cd/pyacoustid-1.1.0.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "2ff7a3ff399b4c3a2ab1d53538ba0a4f", "sha256": "e5f2990c12232807bd5c534e60b6b1955d8bc9ddade37473ae5aea9d890f2945" }, "downloads": -1, "filename": "pyacoustid-1.1.2.tar.gz", "has_sig": false, "md5_digest": "2ff7a3ff399b4c3a2ab1d53538ba0a4f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11492, "upload_time": "2016-05-31T17:56:35", "url": "https://files.pythonhosted.org/packages/5d/46/ec1efbd394fecee79e9ce55c6fcdccf1f830667723a845d2e3ab1f9540bf/pyacoustid-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "c2738efccf06c4989f2001ee64a36674", "sha256": "6e303cb34ad10a3a3b50f6b969ef3269a0b6f0fbe713b8e8ead800d47621c06f" }, "downloads": -1, "filename": "pyacoustid-1.1.3.tar.gz", "has_sig": false, "md5_digest": "c2738efccf06c4989f2001ee64a36674", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11654, "upload_time": "2016-11-26T03:33:20", "url": "https://files.pythonhosted.org/packages/47/7d/f43977ba33c9ea85bbe651cca29f6747bd098ccb2a6547fbb4f0b2dcd121/pyacoustid-1.1.3.tar.gz" } ], "1.1.4": [ { "comment_text": "", "digests": { "md5": "345190596fb947dc85d9c249357db4ae", "sha256": "b54bc803e936e49170f01febcf89621dda4a1ebb3d407e04e9ead290fa3a6cf3" }, "downloads": -1, "filename": "pyacoustid-1.1.4.tar.gz", "has_sig": false, "md5_digest": "345190596fb947dc85d9c249357db4ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11710, "upload_time": "2016-12-17T03:18:34", "url": "https://files.pythonhosted.org/packages/ce/8d/a550a5a13d8362e385447a7a133855943e192c115d0e115d5cad48cd36ff/pyacoustid-1.1.4.tar.gz" } ], "1.1.5": [ { "comment_text": "", "digests": { "md5": "036a4754343d1f9c894004c82d8309bd", "sha256": "efb6337a470c9301a108a539af7b775678ff67aa63944e9e04ce4216676cc777" }, "downloads": -1, "filename": "pyacoustid-1.1.5.tar.gz", "has_sig": false, "md5_digest": "036a4754343d1f9c894004c82d8309bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11846, "upload_time": "2017-04-08T16:23:49", "url": "https://files.pythonhosted.org/packages/da/d1/bf83cce400d5513891ea52e83fde42f17299f80a380f427d50428f817a3c/pyacoustid-1.1.5.tar.gz" } ], "1.1.6": [ { "comment_text": "", "digests": { "md5": "c42b090203961442dd5292844049aea0", "sha256": "762ae09cf18a715155466be23bea4a6e4fdb8fb26bc80e091d227e2150fd7469" }, "downloads": -1, "filename": "pyacoustid-1.1.6.tar.gz", "has_sig": false, "md5_digest": "c42b090203961442dd5292844049aea0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14540, "upload_time": "2019-05-17T00:56:57", "url": "https://files.pythonhosted.org/packages/db/bc/c797db70d54d52f753eb3cc301937a405d0a7507008ee0eead8251a5349f/pyacoustid-1.1.6.tar.gz" } ], "1.1.7": [ { "comment_text": "", "digests": { "md5": "a3912d06ed3d3405886a4298f1b100d4", "sha256": "07394a8ae84625a0a6fef2d891d19687ff59cd955caaf48097da2826043356fd" }, "downloads": -1, "filename": "pyacoustid-1.1.7.tar.gz", "has_sig": false, "md5_digest": "a3912d06ed3d3405886a4298f1b100d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14990, "upload_time": "2019-05-25T12:47:59", "url": "https://files.pythonhosted.org/packages/35/76/2e51b687a9967a00e948b55b076809edc0fef8a13023309ce9ab59c28b8e/pyacoustid-1.1.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a3912d06ed3d3405886a4298f1b100d4", "sha256": "07394a8ae84625a0a6fef2d891d19687ff59cd955caaf48097da2826043356fd" }, "downloads": -1, "filename": "pyacoustid-1.1.7.tar.gz", "has_sig": false, "md5_digest": "a3912d06ed3d3405886a4298f1b100d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14990, "upload_time": "2019-05-25T12:47:59", "url": "https://files.pythonhosted.org/packages/35/76/2e51b687a9967a00e948b55b076809edc0fef8a13023309ce9ab59c28b8e/pyacoustid-1.1.7.tar.gz" } ] }