Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Downloading a Torrent with libtorrent-python

I have the following python code:

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)

Which seems to work fine, but then slows down to less than a byte/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

It slows down and never completes. Any idea why this happens?

like image 709
cdecker Avatar asked Jul 02 '11 11:07

cdecker


People also ask

How do I download a torrent using a proxy server?

Go to “Options > Preferences > Connection > Proxy Server. Enter the BitTorrent proxy server information, including IP or hostname, port, and credentials (if required). Enable the two options: “use proxy for peer connections” and “disable connections not supported by proxies.”

How do I download a torrent with transmission?

Transmission is a software that enables you to download torrents to your machine (PC, Mac, or Linux). This add-on simply connects your browser to the transmission client. To work with this addon, simply right-click on a torrent link and then click on the - Download with Transmission - from context-menu.

Can I download from torrent using VPN?

Can you get caught torrenting if you use a VPN? If you're using a VPN while you're torrenting, it's virtually impossible to get caught. This is because your IP address is completely hidden. Your personal data will be encrypted, and not even your own ISP will be able to tell that you're torrenting.


1 Answers

The problem turned out to be trivial. The save_path did not exist, thus the libtorrent library downloaded as long as it did not have to flush the cache, but once it attempted to write the file, it failed and could not continue downloading, therefore the slowdown and eventual halt. Once an existing path was added it worked fine.

like image 150
cdecker Avatar answered Sep 29 '22 18:09

cdecker