Я использую следующий код, чтобы создать новый торрет и поделиться им, но что-то не так, потому что никогда не раздаю.
import sys
import time
import libtorrent as lt
#Create torrent
fs = lt.file_storage()
lt.add_files(fs, "./test.txt")
t = lt.create_torrent(fs)
t.add_tracker("udp://tracker.openbittorrent.com:80/announce", 0)
t.set_creator('libtorrent %s' % lt.version)
t.set_comment("Test")
lt.set_piece_hashes(t, ".")
torrent = t.generate()
f = open("mytorrent.torrent", "wb")
f.write(lt.bencode(torrent))
f.close()
#Seed torrent
ses = lt.session()
ses.listen_on(6881, 6891)
h = ses.add_torrent({'ti': lt.torrent_info('mytorrent.torrent'), 'save_path': '.', 'seed_mode': True})
print "Total size: " + str(h.status().total_wanted)
print "Name: " + h.name()
while True:
s = h.status()
state_str = ['queued', 'checking', 'downloading metadata', \
'downloading', 'finished', 'seeding', 'allocating', 'checking fastresume']
print('\r%.2f%% complete (down: %.1f kb/s up: %.1f kB/s peers: %d) %s' % \
(s.progress * 100, s.download_rate / 1000, s.upload_rate / 1000, s.num_peers, state_str[s.state]))
sys.stdout.flush()
time.sleep(1)
Тест по порядку:
- я запускаю скрипт
- mytorrent.torrent создан корректно
- напечатайте «Общий размер:» и напечатайте «Имя:» в порядке
- Цикл печати по порядку:
100,00% завершено (вниз: 0,0 кбит/с вверх: 0,0 кбит/с одноранговые узлы: 0) заполнение (8 раз)
100,00% завершено (вниз: 0,0 кбит/с вверх: 0,0 кбит/с одноранговые узлы: 1) раздача (11 раз)(Это происходит всегда, даже если не запущен торрент-клиент.)
100,00% завершено (вниз: 0,0 кбит/с вверх: 0,0 кбит/с одноранговые узлы: 0) заполнение (бесконечное количество раз)
- Я запускаю торрент-файл через торрент-клиент, и ничего не происходит.
- В дополнение к попытке загрузить торрент с помощью коммерческого программного обеспечения, как указано выше, я также попытался загрузить библиотеку libtorrent. Всегда показывает 0 пиров.
Варианты теста с одинаковыми результатами:
Пробовал использовать разные трекеры:
trackerList = ['udp://tracker.istole.it:80/announce', 'udp://tracker.ccc.de:80/announce', 'http://tracker.torrentbay.to:6969/announce', 'udp://fr33domtracker.h33t.com:3310/announce', 'udp://tracker.publicbt.com:80/announce', 'udp://tracker.openbittorrent.com:80/announce', 'udp://11.rarbg.com/announce' 'udp://tracker.istole.it:80/announce'] for tracker in trackerList: t.add_tracker(tracker, 0)
Я запускал торрент-файл в клиенте сразу после выполнения скрипта, а также позже.
- lt.torrent_info('mytorrent.torrent') заменен на lt.torrent_info(торрент)
Дополнительная информация:
- Для тестирования я использую два компьютера с Windows, каждый из которых подключен к другой сети. В каждой сети открыты необходимые порты.
- Время выполнения каждого теста составляет не менее 1:20.
Другие тесты:
На компьютере, которым я раньше делился, я пытался поделиться торрентом, созданным кем-то другим. Я запустил код, отмеченный «#Seed torrent», он сработал:
100,00% завершено (вниз: 2,0 кбит/с, вверх: 45,0 кбит/с одноранговые узлы: 13) заполнение
На компьютер, который я использую для скачивания торрента, я скачал уже созданный кем-то торрент (с помощью libtorrent), и он работал корректно.
Поэтому я могу только думать, что есть проблема в части кода "#create torrent". Как будто трекер не сохранит набор информации.