Проверить, если действительный торрент-файл в Python?

Кто-нибудь знает способ в Python, чтобы проверить, является ли торрент-файл (например, file.torrent) действительным? os.path.exists() работает хорошо, если вы хотите знать, существует ли файл в данном месте, но я хочу проверить, является ли существующий файл допустимым торрентом сам по себе.

Есть идеи?

Благодарю.

Обновление 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))

Это работает нормально в большинстве случаев. Однако клиент не может загрузить некоторые торрент-файлы, так как они повреждены.
Я ищу способ идентифицировать эти файлы и, таким образом, предотвратить их загрузку клиентом.

1 ответ

Решение

Чтобы убедиться, что торрент-файл действителен, вам нужна реализация bencoder/decoder для синтаксического анализа файла и проверки наличия обязательных полей из BEP3 и в ожидаемой форме.

libtorrent предоставляет привязки Python. Bittornado должен содержать чистую реализацию Python, хотя он немного устарел.

Другие вопросы по тегам