Télécharger un Torrent avec libtorrent-python
J'ai le code python suivant:
import libtorrent as lt
import time
ses = lt.session()
ses.listen_on(6881, 6891)
params = {
'save_path': '/home/downloads/',
'storage_mode': lt.storage_mode_t(2),
'paused': False,
'auto_managed': True,
'duplicate_is_error': True}
link = "magnet:?xt=urn:btih:4MR6HU7SIHXAXQQFXFJTNLTYSREDR5EI&tr=http://tracker.vodo.net:6970/announce"
handle = lt.add_magnet_uri(ses, link, params)
ses.start_dht()
print 'downloading metadata...'
while (not handle.has_metadata()):
time.sleep(1)
print 'got metadata, starting torrent download...'
while (handle.status().state != lt.torrent_status.seeding):
s = handle.status()
state_str = ['queued', 'checking', 'downloading metadata', \
'downloading', 'finished', 'seeding', 'allocating']
print '%.2f%% complete (down: %.1f kb/s up: %.1f kB/s peers: %d) %s %.3' % \
(s.progress * 100, s.download_rate / 1000, s.upload_rate / 1000, \
s.num_peers, state_str[s.state], s.total_download/1000000)
time.sleep(5)
Qui semble bien fonctionner, mais puis ralentit à moins d'un octet/s:
$ python test.py
downloading metadata...
got metadata, starting torrent download...
0.00% complete (down: 195.0 kb/s up: 8.0 kB/s peers: 28) checking 3.069
0.00% complete (down: 133.0 kb/s up: 5.0 kB/s peers: 28) checking 3.342
0.00% complete (down: 29.0 kb/s up: 1.0 kB/s peers: 28) checking 3.359
0.00% complete (down: 5.0 kb/s up: 0.0 kB/s peers: 28) checking 3.398
0.00% complete (down: 4.0 kb/s up: 0.0 kB/s peers: 28) checking 3.401
0.00% complete (down: 0.0 kb/s up: 0.0 kB/s peers: 28) checking 3.405
0.00% complete (down: 0.0 kb/s up: 0.0 kB/s peers: 28) checking 3.408
0.00% complete (down: 0.0 kb/s up: 0.0 kB/s peers: 28) checking 3.412
Il ralentit et ne se termine jamais. Une idée de pourquoi cela se produit?
source d'informationauteur cdecker
Vous devez vous connecter pour publier un commentaire.
Le problème s'est avéré être trivial. Le save_path n'existe pas, donc la libtorrent bibliothèque téléchargé aussi longtemps qu'il n'avait pas à vider le cache, mais une fois qu'il a tenté d'écrire le fichier, il n'a pas et ne pouvait pas continuer à télécharger, donc le ralentissement et de l'éventuel arrêt. Une fois qu'un chemin d'accès existant a été ajouté ça a bien fonctionné.
Le taux de téléchargement que vous voyez est plus probable de l'effectif de téléchargement de métadonnées (c'est à dire l' .torrent fichier téléchargé à partir de vos pairs). Une fois l' .torrent fichier a été téléchargé, c'est parti. Dans ce cas.
Il apparaît que si vous avez déjà certains des fichiers qui appartiennent à ce torrent, de sorte que le téléchargement est interrompu, et ces fichiers sont en cours de vérification. c'est à dire la pièce de lire dans, la hacher et par rapport à la pièce de hachages dans les .fichier torrent.
La dernière colonne vous indique le nombre de mégaoctets trouvé dans les fichiers qui correspondent à la hache, l'avant-dernière colonne vous montrer l'état du torrent, c'est à dire la vérification.
Si vous attendez jusqu'à ce que la vérification se fait, le téléchargement devrait reprendre.
Mieux encore, si vous enregistrez les données de reprise lorsque vous quittez, et la charge au démarrage, vous n'avez pas à re-vérifier à chaque fois.