列出 Torrent 内的文件

Torrent 文件本质上是存储有关要通过 P2P 下载的一组文件信息的容器。

不幸的是,简单地列出存储在 torrent 中的文件并不容易。使用我们的 python 脚本 torrentls.py 你可以轻松完成该任务。

首先安装依赖项

install_deps.sh
pip install -U bencode

之后,你可以使用类似 python torrentls.py <torrent 文件> 的 shell 命令轻松运行脚本。torrentls.py 基于 argparse,因此它提供内置帮助。此外,你可以将其用作基本解析 torrent 文件的库。

torrentls.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import bencode
import itertools

__author__ = "Uli Köhler"
__copyright__ = "Copyright 2014 Uli Köhler"
__license__ = "Apache License v2.0"
__version__ = "0.1"

def listTorrent(filename):
    "列出单个 torrent 内的文件路径"
    with open(filename, "rb") as fin:
        torrent = bencode.bdecode(fin.read())
        #虽然 path 元素通常是单元素列表,但我们支持任意长度
        return itertools.chain(*(f["path"] for f in torrent["info"]["files"]))

if __name__ == "__main__":
    import argparse
    parser = argparse.ArgumentParser(description="列出 torrent 文件中的文件名")
    parser.add_argument("torrent", help="要打印的 torrent 文件")
    args = parser.parse_args()
    #打印 torrent 中的文件,每行一个
    for filename in listTorrent(args.torrent):
        print(filename)

Check out similar posts by category: Python