You need the &xs= parameter pointing to the URL of the torrent file otherwise it will only work if someone is seeding (because magnets themselves do not hold the torrent metadata, only a hash of the metadata, and the metadata is required to verify the downloaded pieces, so it must be fetched first from either peers or from the &xs= URL).
Discussion
Ok will add this, i think im making the piece hash wrong too, what happens on the last piece, is there any padding? I can't find clear spec.
If you add `.torrent. on the end of any void.cat url it will generate the torrent file now:
There was a bug in my handling of range requests, should be fixed in a few mins