#!/usr/bin/env python3 # usage (after "chmod a+x ./thisscript.py"): # "./thisscript.py piece_size_in_bytes filename.torrent" import sys import bencodepy import math piecesize = int(sys.argv[1]) torrent = sys.argv[2] data = open(torrent, "rb").read() struct = bencodepy.decode(data) num_bytes = sum(entry[b'length'] for entry in struct[b"info"][b"files"]) offset = 0 piece1 = 0 piece2 = 1 print("version of this script: 2023.03.25.05.07.18.Z") print("filename:", torrent) print("torrent total size:", num_bytes, "bytes") print("torrent piece size:", piecesize, "bytes") print("first_chunk_number first_chunk_offset file_offset length path") for entry in struct[b"info"][b"files"]: print(piece2, piece1, offset, entry[b'length'], entry[b'path']) offset += entry[b'length'] piece1 = math.floor(offset / piecesize) * piecesize piece2 = math.floor(offset / piecesize) + 1