Проверить, если действительный торрент-файл в 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, хотя он немного устарел.