脚本下载:种子转磁力.py

📌 简介

本脚本用于将本地的 .torrent 种子文件批量转换为 磁力链接(Magnet Link)。无需依赖命令行参数,使用交互式方式让用户指定输入路径和输出文件,适合快速批量转换种子文件为磁力链接。


🐍 Python 版本要求

  • Python 版本:3.6+
  • 建议版本:3.8 - 3.11 (其他版本如需使用,请确保 bencodepy 兼容)

📦 Python 安装指引

📦.1 安装 Python

Windows 系统

  1. 访问 Python 官网
  2. 下载 Python 3.x 安装包(推荐版本:3.8 - 3.11)
  3. 安装时勾选 Add Python to PATH
  4. 安装完成后,打开命令提示符(CMD)输入:
python --version

应显示 Python 的版本号,如 Python 3.9.7


macOS / Linux 系统

  • macOS 用户:可通过 Homebrew 安装 Python:

    brew install python
    
  • Linux 用户(Ubuntu/Debian)

    sudo apt update
    sudo apt install python3
    

    检查版本:

    python3 --version
    

📦 依赖库安装

必要库:bencodepy

用于解析 .torrent 文件内容

安装方式:

pip install bencodepy
  • 如果遇到权限问题,可以添加 --user 参数(避免需要 root 权限):
pip install --user bencodepy
  • 如果安装失败或遇到依赖问题,请尝试升级 pip
pip install --upgrade pip

📂 脚本功能简介

  • 遍历指定目录及其子目录,查找所有的 .torrent 文件。
  • 对每个 .torrent 文件进行解析,生成对应的磁力链接。
  • 磁力链接保存在指定的输出文件中,格式如下:
magnet:?xt=urn:btih:info_hash&dn=文件名&tr=tracker_url...

📌 使用流程

第一步:运行脚本

确保脚本文件名称为 种子转磁力.py,可以在终端(命令行)中执行:

python 种子转磁力.py

✅ 注意:如果系统中安装了多个 Python 版本,请确保使用的是 Python 3.x,而不是 Python 2。


第二步:输入种子文件所在目录

程序运行后,会提示用户输入包含 .torrent 文件的文件夹路径:

请输入包含 .torrent 文件的文件夹路径:
  • 请输入合法的目录路径,程序将自动验证路径是否存在。

第三步:设置输出文件名(可选)

程序将提示用户输入输出文件名:

请输入输出文件名 (直接按回车则默认为 magnet_links.txt):
  • 如果用户直接按下回车,输出文件名将默认为 magnet_links.txt

第四步:处理并输出结果

程序会自动遍历指定目录下的所有 .torrent 文件,并依次转换磁力链接。

  • 所有生成的磁力链接将被写入到 magnet_links.txt 文件中(或用户自定义的文件名)。
  • 转换完成后,脚本会输出磁力文件的保存路径。

📝 输出说明

磁力链接组成:

  • xt:用于标识种子文件的唯一信息(基于 Torrent 文件的 info 哈希)
  • dn:用于显示种子名称
  • tr:用于指定 Tracker 地址(如有)

示例输出

magnet:?xt=urn:btih:a1b2c3d4e5f60123456789abcdef1234567890ab&dn=电影名称&tr=udp://tracker.example.com

❗️ 注意事项

  • 脚本会跳过以下情况的 .torrent 文件:
    • 文件损坏或不是合法 Torrent 格式
    • 文件中缺少 info 字段
  • 输出的磁力链接中,名称与 Tracker 地址会进行 URL 编码处理,避免特殊字符带来问题。
  • 输出文件默认使用 UTF-8 编码格式,适用于大多数系统。

💡 常见问题解答(FAQ)

Q1: 为什么我得到的磁力链接没有显示名称?

A: 如果 .torrent 文件中没有 name 字段,或者字段名称编码错误,将无法显示名称。请检查种子文件是否完整。


Q2: 如何批量处理多个 .torrent 文件?

A: 脚本默认会遍历指定路径的目录和所有子目录,自动识别 .torrent 文件并进行转换,无需手动逐个处理。


Q3: 可以指定多个输出文件吗?

A: 目前不支持多个输出文件,但您可以运行多次脚本,指定不同的输出文件名。