Skip to main content

Application for verifying ripped audio files using AccurateRip database.

Project description

ARver

ARver is a command-line program for verifying audio tracks ripped from a CD against checksums stored in AccurateRip database.

The idea behind AccurateRip verification is that it's virtually impossible to get exact same errors when ripping different copies of the same CD on various CD drives. If the copies are scratched or otherwise degraded, read errors will occur in different disc sectors. CD drive defects are unlikely to manifest in the same way on different machines. Essentially, all read errors are expected to be unique, but in absence of errors only a single correct result exists.

AccurateRip database stores track checksums submitted by multiple users. When many users rip the same disc without errors, same checksums are submitted to the database repeatably, boosting their "confidence" statistic. If a checksum of a ripped track is not found in the database, it indicates that the track has not been ripped correctly. Since the result is unique, disc read errors likely occurred while ripping.

ARver calculates the AccurateRip checksums of local files, fetches checksums for a given CD from the database, and displays a report which compares them.

Usage example

This example demonstrates the typical use case of arver: verification of files just ripped from a CD.

Animated ARver usage example

The tracks have been ripped using cdparanoia prior to running arver. AccurateRip disc ID is calculated based on the TOC of the CD which still is in the drive. arver fetches the checksums from the database, and compares checksums of local files with database entries.

In this case arver found that the last track was not ripped correctly, and reports an error. The CD is affected by disc rot, and cdparanoia reported multiple issues toward the end of the third track.

Installation

For typical use:

python3 -m pip install arver

Wheels are provided for x86_64 architecture CPython versions from 3.7 to 3.11. For other platforms and Python versions only installation from the source distribution is supported (see "Dependencies" section below).

For development:

git clone https://github.com/arcctgx/ARver
cd ARver
python3 -m pip install --editable .

For packaging:

git clone https://github.com/arcctgx/ARver
cd ARver
python3 setup.py install --root=/tmp/pkg-arver
# use contents of /tmp/pkg-arver to create a package.

Dependencies

ARver depends on following Python packages at runtime:

  • discid
  • musicbrainzngs
  • pycdio
  • requests

They will be installed automatically by pip install if needed. Alternatively, one can install them using provided requirements.txt file.

The source code includes a C extension which depends on libsndfile, so building from source requires a C compiler (gcc) and libsndfile headers. This makes libsndfile both compile-time and runtime dependency when ARver is installed from the source distribution.

Features

The package provides following command-line tools:

  • arver: the main program. It determines the AccurateRip disc ID, fetches AccurateRip data, calculates checksums of ripped WAV files, compares them with downloaded AccurateRip data and displays the result.

  • arver-discinfo: displays disc IDs and the Table of Contents, fetches and displays all AccurateRip track checksums.

  • arver-ripinfo: calculates checksums of WAV files (ARv1, ARv2 and CRC32) and presents them as a table.

  • arver-bin-parser: parses cached binary AccurateRip response and displays all AccurateRip track checksums.

Planned features

Several features are planned, but not implemented yet:

  • FLAC format support (only WAV format is supported now)
  • mixed-mode CD support (disc type is recognized, but verification fails)
  • offset detection (zero offset is assumed)

Restrictions

Using MusicBrainz disc IDs instead of physical discs

The regular use case of ARver is to verify a set of audio files right after they have been ripped, while the CD they have been ripped from is still in the drive.

Commands arver and arver-discinfo support an alternative mode of operation, where disc information is downloaded from MusicBrainz by disc ID lookup. While this can be useful, it is reliable only for Audio CDs. Information about data tracks is not encoded in MusicBrainz disc ID, but it is necessary to calculate AccurateRip disc ID. Attempts to verify discs with data tracks (e.g. Enhanced CDs) using disc ID lookup may not work at all, result in false negatives or low confidence values.

Verifying Copy Controlled CDs

Copy Controlled CDs were designed specifically to prevent ripping. The way it is achieved makes these discs more sensitive to normal wear, and makes them not compliant with CD audio standard. Such CDs can often be ripped, but are much more likely to produce errors.

These CDs appear to arver and arver-discinfo as ordinary Enhanced CDs (multisession with data track in the end). It is not possible to distinguish them from normal Enhanced CDs based on the table of contents alone. If your disc bears "Copy Controlled CD" logo, verification problems are expected.

Acknowledgements

AccurateRip database is (c) Illustrate. Used with permission.

Thanks to the following people and projects for source code and inspiration:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ARver-1.0.0.tar.gz (32.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ARver-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (614.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

ARver-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (614.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

ARver-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (614.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

ARver-1.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (614.7 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

ARver-1.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (614.7 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

File details

Details for the file ARver-1.0.0.tar.gz.

File metadata

  • Download URL: ARver-1.0.0.tar.gz
  • Upload date:
  • Size: 32.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.2

File hashes

Hashes for ARver-1.0.0.tar.gz
Algorithm Hash digest
SHA256 9f4e3980dbb8ddb44e3b1c39801cd92df009dd360e656c0a4efc62d0899af4b4
MD5 339be6399dabad9702ced7e95ab40a27
BLAKE2b-256 4437c8e80309252f255037a2bb466416b1fec71a594e173ad8e8b5cfee6a2b13

See more details on using hashes here.

File details

Details for the file ARver-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ARver-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3f34c287a27c6c65a7cd950e1ea13a71155e4ad588e7ef3a0f4f996ac636eb4f
MD5 9004abe63bdbc0d27fc10b02cf76965e
BLAKE2b-256 6ddc72148df933a9cf14724820381652e91a636adb4cb4b221f12eb7a579c2f0

See more details on using hashes here.

File details

Details for the file ARver-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ARver-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b4a8a5b084df1d92dce1551c1ef2006c5af1e4d1b3a21bed14d9fdacc77bedc4
MD5 9810a67e4ea02e6f2539f66b66c780aa
BLAKE2b-256 fb056e1482e4a72d21f73161c78db1d032fdb7900d60974fd1fa6adbf9efb226

See more details on using hashes here.

File details

Details for the file ARver-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ARver-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e187fcb98a5571b1bf07ceecb59b48e435899979363cc36103f26e907231ee00
MD5 0a637843c8ad78b8ace91fa5c37d824d
BLAKE2b-256 1a194919ae9b0a1703e0100b7a3d90c81de528e20f269feaf7be5ec26034d7a8

See more details on using hashes here.

File details

Details for the file ARver-1.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ARver-1.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ffe67aae855e540bc02cc127f3c916d025888b0cecda7d37d3b6b3df81fd3466
MD5 b2be61651362395d573261d88bda5c84
BLAKE2b-256 4eed75089fbc303465eefe68e0c124384011433b9660d53a9bbee53e7d28b13e

See more details on using hashes here.

File details

Details for the file ARver-1.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ARver-1.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f65ad59927af1e936a014b74f388f57316dbb060734829f1be94ebdf57e7e10a
MD5 d89650c25e70675a7a93e80bb8e26883
BLAKE2b-256 dd155f7b22c58136b995009d6a1321a5ac00f120822d8b66404a75a95d9b26b9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page