Проверить, если действительный торрент-файл в Python? - PullRequest
0 голосов
/ 25 июня 2018

Кто-нибудь знает способ проверить в 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 Ответ

0 голосов
/ 26 июня 2018

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

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

...