Создать новый торрент и сид

Я использую следующий код, чтобы создать новый торрет и поделиться им, но что-то не так, потому что никогда не раздаю.

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". Как будто трекер не сохранит набор информации.


person user3782779    schedule 20.01.2015    source источник
comment
Открыты ли порты в вашем брандмауэре?   -  person thebjorn    schedule 20.01.2015
comment
Да. Я могу скачать любой торрент, кроме моего.   -  person user3782779    schedule 20.01.2015
comment
вы пытаетесь загрузить на тот же компьютер, на котором раздаете? Как долго вы ждали его загрузки? Если ваши порты не открыты, вам придется подождать как минимум один интервал анонса трекера (обычно это 30-60 минут).   -  person Arvid    schedule 23.01.2015
comment
Я отредактировал вопрос с информацией, которую вы запрашиваете.   -  person user3782779    schedule 26.01.2015


Ответы (1)


Проблема решена использованием разных трекеров, а не перечисленных в "trackerList". Код правильный.

person user3782779    schedule 26.02.2015