2017-04-21 3 views
0

Ich versuche, einen Torrent zu generieren und es mit Python Libertorrent, es erzeugt den Torrent, aber nicht säen. Ich habe versucht, die generierte magnetische Verbindung mit mehreren Bittorrent-Clients zu öffnen, kann die Datei jedoch nicht herunterladen.Torrent Seeding funktioniert nicht (Libtorrent-Python)

Ich benutze libtorrent 1.0.7-1build1 mit Python3.5.2 auf Ubuntu 16.04.

ist meine Frage zu diesem Thema bezogen werden: Python Libtorrent doesn't seed

import sys 
import time 
import libtorrent as lt 

videoFile = "/path/to/video/XXX.mp4" 
workingPath = "/path/to/video" 

tmpPath = "/tmp" 
currentDir = "." 

fs = lt.file_storage() 
lt.add_files(fs, videoFile) 
t = lt.create_torrent(fs) 
t.add_tracker("udp://tracker.publicbt.com:80") 
t.add_tracker("wss://tracker.openwebtorrent.com") 
t.add_tracker("wss://tracker.btorrent.xyz") 
t.add_tracker("wss://tracker.fastcast.nz") 

t.set_creator("My Torrent") 
t.set_comment("Test") 
lt.set_piece_hashes(t, workingPath) 
torrent = t.generate() 

f = open(workingPath+"/"+"mytorrent.torrent", "wb") 
f.write(lt.bencode(torrent)) 
f.close() 

ps = lt.proxy_settings() 
ps.type = lt.proxy_type.http 
ps.hostname = "hostname.de" 
ps.port = 1003 

ses = lt.session() 
ses.listen_on(6881, 6891) 
ses.set_proxy(ps) 
ses.set_web_seed_proxy(ps) 

handle = ses.add_torrent({'ti': lt.torrent_info(torrent), 'save_path': currentDir, 'seed_mode': True, 'upload_mode':True, 'super_seeding':True}) 

print(lt.make_magnet_uri(lt.torrent_info(torrent))) 

while handle.is_seed(): 
    s = handle.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) 

Antwort

0

Ich hatte zwei Probleme. Zuerst hatte ich eine URL-Umschreibung für alle HTTP-Anfragen an https auf meinem Webserver, so dass Port 6881 nicht erreicht wurde. Zweitens startete ich mein Skript nicht aus dem Verzeichnis, in dem sich meine Mediendatei befand. Also setzen "." Der Pfad 'save_path' war nicht korrekt, sollte aber der vollständige Pfad sein, in dem sich die Mediendatei befindet. Funktioniert jetzt gut.

alt:

handle = ses.add_torrent({'ti': lt.torrent_info(torrent), 'save_path': currentDir, 'seed_mode': True, 'upload_mode':True, 'super_seeding':True}) 

neu:

handle = ses.add_torrent({'ti': lt.torrent_info(torrent), 'save_path': workingPath, 'seed_mode': True, 'upload_mode':True, 'super_seeding':True})