elsfv v1.0.0/Style
elsfv verifies file presence and checksums against .sfv/.srr files, reporting on matches, mismatches, and missing files. For .srr files it is additionally possible to extract certain metadata contents to replace mismatched or missing files.
elsfv verifies the first .sfv and first .srr file it finds in the current working directory when no specific .sfv/.srr filename is given.
Windows users can examine the included "rightclick.reg" registry file and install it for an Explorer right click function to check .sfv/.srr files inside a selected directory.
Try: 'elsfv --help'
Note: elsfv is not, strictly speaking, a c64 related tool. This is intentional.
Setting aside the preliminary support for .srr files, did the world really need another .sfv checker? Speed-wise, elsfv is within the ballpark of the faster checkers and could probably improve, but this release was driven mostly by dissatisfaction with the output of every other command line sfv checker we tried. Many do not handle unicode or long file paths under Windows. Some reach failure states under XP which is obsolete but in the circles we run in, remains in use by our fellow retro computing cultists. And then just overall convenience of the CLI.
Consider which output is easier to consume and conveys more information. Output from pdsfv:
C:\Perturbator-Night_Driving_Avenger_EP-FREEWEB-2012-BandCamp_iNT
> pdsfv -T 00_perturbator-night_driving_avenger_ep-web-2012-bandcamp.sfv
pdSFV 1.2 mod
Processing SFV: 00_perturbator-night_driving_avenger_ep-web-2012-bandcamp.sfv ...
Checking file 01_perturbator-grim_heart-bandcamp.mp3 ... GOOD!
Checking file 02_perturbator-electric_dreams-bandcamp.mp3 ... BAD!
Checking file 03_perturbator-night_driving_avenger-bandcamp.mp3 ... MISSING!
Checking file 04_perturbator-miami_sunsets-bandcamp.mp3 ... GOOD!
Checking file 05_perturbator-i_ran_to_the_arcade_(bonus_track)-bandcamp.mp3 ... GOOD!
There were bad files!
Output from cksfv:
C:\Perturbator-Night_Driving_Avenger_EP-FREEWEB-2012-BandCamp_iNT
> cksfv -f 00_perturbator-night_driving_avenger_ep-web-2012-bandcamp.sfv
--( Verifying: 00_perturbator-night_driving_avenger_ep-web-2012-bandcamp.sfv )--
01_perturbator-grim_heart-bandcamp.mp3 OK
cksfv: 02_perturbator-electric_dreams-bandcamp.mp3: Has a different CRC
03_perturbator-night_driving_avenger-bandcamp.mp3 The system cannot find the file specified. (os error 2)
04_perturbator-miami_sunsets-bandcamp.mp3 OK
05_perturbator-i_ran_to_the_arcade_(bonus_track)-bandcamp.mp3OK
--------------------------------------------------------------------------------
Errors Occured
Or output from elsfv (which doesn't require passing the .sfv or .srr filename if it can find them in the cwd):
C:\Perturbator-Night_Driving_Avenger_EP-FREEWEB-2012-BandCamp_iNT
> elsfv -v
verify 00_perturbator-night_driving_avenger_ep-web-2012-bandcamp.sfv
== : 01_perturbator-grim_heart-bandcamp.mp3
!= : 02_perturbator-electric_dreams-bandcamp.mp3
-- : 03_perturbator-night_driving_avenger-bandcamp.mp3
== : 04_perturbator-miami_sunsets-bandcamp.mp3
== : 05_perturbator-i_ran_to_the_arcade_(bonus_track)-bandcamp.mp3
.sfv failed (1 mismatch; 1 missing; 3 passed out of 5 checked)
And sometimes all you really need is the most concise output regarding the overall pass/fail:
C:\Perturbator-Night_Driving_Avenger_EP-FREEWEB-2012-BandCamp_iNT
> elsfv
verify 00_perturbator-night_driving_avenger_ep-web-2012-bandcamp.sfv
.sfv failed (1 mismatch; 1 missing; 3 passed out of 5 checked)
Finally, when you have both .sfv and .srr:
C:\Radiohead-Spectre-FREEWEB-2015-KPS_INT
> elsfv -v
verify 00-radiohead-spectre-freeweb-2015-kps_int.sfv
== : 01-radiohead-spectre.mp3
.sfv passed (1 file)
verify Radiohead-Spectre-FREEWEB-2015-KPS_INT.srr
== : 00-radiohead-spectre-freeweb-2015-kps_int.jpg
== : 00-radiohead-spectre-freeweb-2015-kps_int.nfo
== : 00-radiohead-spectre-freeweb-2015-kps_int.m3u
== : 00-radiohead-spectre-freeweb-2015-kps_int.sfv
== : 01-radiohead-spectre.mp3
.srr passed (5 files)
elsfv works the way we think an sfv checker should, but feel free to send feature requests and bug reports!