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.
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:
discidmusicbrainzngspycdiorequests
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f4e3980dbb8ddb44e3b1c39801cd92df009dd360e656c0a4efc62d0899af4b4
|
|
| MD5 |
339be6399dabad9702ced7e95ab40a27
|
|
| BLAKE2b-256 |
4437c8e80309252f255037a2bb466416b1fec71a594e173ad8e8b5cfee6a2b13
|
File details
Details for the file ARver-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: ARver-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 614.8 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f34c287a27c6c65a7cd950e1ea13a71155e4ad588e7ef3a0f4f996ac636eb4f
|
|
| MD5 |
9004abe63bdbc0d27fc10b02cf76965e
|
|
| BLAKE2b-256 |
6ddc72148df933a9cf14724820381652e91a636adb4cb4b221f12eb7a579c2f0
|
File details
Details for the file ARver-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: ARver-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 614.8 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b4a8a5b084df1d92dce1551c1ef2006c5af1e4d1b3a21bed14d9fdacc77bedc4
|
|
| MD5 |
9810a67e4ea02e6f2539f66b66c780aa
|
|
| BLAKE2b-256 |
fb056e1482e4a72d21f73161c78db1d032fdb7900d60974fd1fa6adbf9efb226
|
File details
Details for the file ARver-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: ARver-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 614.7 kB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e187fcb98a5571b1bf07ceecb59b48e435899979363cc36103f26e907231ee00
|
|
| MD5 |
0a637843c8ad78b8ace91fa5c37d824d
|
|
| BLAKE2b-256 |
1a194919ae9b0a1703e0100b7a3d90c81de528e20f269feaf7be5ec26034d7a8
|
File details
Details for the file ARver-1.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: ARver-1.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 614.7 kB
- Tags: CPython 3.8, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ffe67aae855e540bc02cc127f3c916d025888b0cecda7d37d3b6b3df81fd3466
|
|
| MD5 |
b2be61651362395d573261d88bda5c84
|
|
| BLAKE2b-256 |
4eed75089fbc303465eefe68e0c124384011433b9660d53a9bbee53e7d28b13e
|
File details
Details for the file ARver-1.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: ARver-1.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 614.7 kB
- Tags: CPython 3.7m, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f65ad59927af1e936a014b74f388f57316dbb060734829f1be94ebdf57e7e10a
|
|
| MD5 |
d89650c25e70675a7a93e80bb8e26883
|
|
| BLAKE2b-256 |
dd155f7b22c58136b995009d6a1321a5ac00f120822d8b66404a75a95d9b26b9
|