验证 Python 中的种子文件是不是有效?

Posted

技术标签:

【中文标题】验证 Python 中的种子文件是不是有效?【英文标题】:Verify if valid torrent file in Python?验证 Python 中的种子文件是否有效? 【发布时间】:2018-06-25 13:42:39 【问题描述】:

有人知道用 Python 来检查一个 torrent 文件(即 file.torrent)是否有效吗? os.path.exists() 效果很好,如果您想知道文件是否存在于给定位置,但我想检查现有文件本身是否是有效的 torrent。

有什么想法吗?

谢谢。

更新 1:

由于很多人都觉得上面的描述很笼统,这里有一个更详细的描述! 我使用request 库下载种子,并将它们放入客户端的监视文件夹,然后自动开始下载。

def download_torrent(torrent_url, file_path, pause=None, verbose=True):
    """ 
    Downloads a torrent file, if it doesn't already exist.

    PARAMETERS
    - torrent_url:    torrent url
    - file_path:      absolute local filepath
    - pause:          integer number of seconds
    - verbose:        True/False
    """
    import requests

    if not os.path.exists(file_path): # torrent file does not exist in location
        r = requests.get(torrent_url)
        filename = os.path.basename(file_path)
        with open(file_path, "wb") as torrent:
            if verbose: print "> Downloading '%s'..." %(os.path.basename(file_path))
            torrent.write(r.content)
        if pause != None: 
            sleep(pause)
    else: # torrent file exists already
        if verbose: 
            print "! '%s' already exists, skipping file..." %(os.path.basename(file_path))

这在大多数情况下都可以正常工作。但是客户端无法加载一些 torrent 文件,因为它们已损坏。 我正在寻找一种方法来识别这些文件,从而防止它们被客户端加载。

【问题讨论】:

你会如何定义一个有效的种子文件? 我猜你可以使用try ... except 和this 库的解析函数。 问题太宽泛,请提供Minimal, Complete, and Verifiable Examples 比较.torrent文件和它的MD5校验和superuser - How to validate Torrent-Files? 感谢@davedwards,我的问题似乎源于种子客户端(例如传输)与种子中的非英文字符不兼容。 【参考方案1】:

要验证 torrent 文件是否有效,您需要实现 bencoder/decoder 来解析文件,然后检查来自 BEP3 的必填字段是否存在且是否符合预期格式。

libtorrent 提供 python 绑定。 Bittornado 应该包含一个纯 python 实现,虽然它有点过时了。

【讨论】:

以上是关于验证 Python 中的种子文件是不是有效?的主要内容,如果未能解决你的问题,请参考以下文章

试图在种子方法中的 SaveChanges 中找出我的验证错误

磁力链接与BT种子互转工具怎么用?使用方法

种子搜索是啥

用于创建“webseed”种子文件的 Python 包?

BT下载时留种子是啥意思?

Python,OpenCV提取图片中的多个茄子种子轮廓,并按从左到右排序后显示