创建新的种子和种子

时间:2015-01-20 09:27:09

标签: python python-2.7 libtorrent

我正在使用以下代码创建一个新的torret并分享,但是因为从不种子而出现了问题。

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 kb / s向上:0.0 kB / s对等:0)播种(8次)

100.00%完成(向下:0.0 kb / s向上:0.0 kB / s对等:1)播种(11次)(即使没有运行torrent客户端,也会发生这种情况。)

100.00%完成(向下:0.0 kb / s向上:0.0 kB / s对等:0)播种(无限次)

  • 我用torrent客户端运行torrent文件,没有任何反应。

enter image description here

  • 除了尝试使用商业软件下载torrent 如上所述,我也试过用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)
    
  • 我在执行脚本后立即在客户端运行了torrent文件。

  • lt.torrent_info('mytorrent.torrent')替换为lt.torrent_info(torrent)

其他信息:

  • 为了测试,我使用两台Windows计算机,每台计算机都连接到不同的网络。 在每个网络中,所需的端口都是打开的。
  • 每次测试的时间至少为1:20小时。

其他测试:

  • 在我以前共享的计算机中,我尝试共享其他人创建的torrent。我已经运行了标有“#Seed torrent”的代码:

    100.00%完成(向下:2.0 kb / s向上:45.0 kB / s同行:13)播种

  • 在我用来下载torrent的计算机上,我下载了一个已由其他人创建的torrent(包含libtorrent),并且它运行正常。

因此我只能认为“#create torrent”代码中存在问题。好像跟踪器不会保存信息集。

1 个答案:

答案 0 :(得分:5)

使用不同的跟踪器解决了问题,而不是在“trackerList”中列出。代码是正确的。