Skip to content

Instantly share code, notes, and snippets.

@cas--
Created February 24, 2014 12:48
Show Gist options
  • Save cas--/9187771 to your computer and use it in GitHub Desktop.
Save cas--/9187771 to your computer and use it in GitHub Desktop.
paused announce
#!/usr/bin/env python
import libtorrent as lt
import time
import sys
import os
ses = lt.session()
ses.listen_on(6881, 6891)
info_t1 = lt.torrent_info('T1.torrent')
info_t2 = lt.torrent_info('T2.torrent')
h1 = ses.add_torrent({'ti': info_t1, 'save_path': './lt_test_data',})
h2 = ses.add_torrent({'ti': info_t2, 'save_path': './lt_test_data',})
print 'Session started: ', lt.version
print 'T1: ', h1.name()
print 'T2: ', h2.name()
settings = ses.get_settings()
settings["active_limit"] = 1
ses.set_settings(settings)
h1.resume()
h2.resume()
resume_data_saved = False
request_save_data = False
while( not resume_data_saved ):
h1_status = h1.status()
h2_status = h2.status()
print "Status T1 | Paused: %s | AutoM: %s | State: %s" % (
h1_status.paused, h1_status.auto_managed, lt.torrent_status.states.values[h1_status.state])
print "Status T2 | Paused: %s | AutoM: %s | State: %s" % (
h2_status.paused, h2_status.auto_managed, lt.torrent_status.states.values[h2_status.state])
if h2_status.paused and not h1_status.paused and not request_save_data:
print "T2 queued, now saving data..."
request_save_data = True
ses.pause()
h2.auto_managed(False)
#h2.resume()
h2.pause()
h2.save_resume_data()
time.sleep(5)
def on_alert_save_resume_data(alert):
print "on_alert_save_resume_data"
torrent_id = str(alert.handle.info_hash())
entry = alert.resume_data
print "Resume Data T2 | Paused: %s | AnnouceTs: %s | AutoM: %s" % (
bool(entry['paused']), bool(entry['announce_to_trackers']), entry['auto_managed'])
with open("fastresume", "wb") as _file:
_file.write(lt.bencode(alert.resume_data))
_file.flush()
os.fsync(_file.fileno())
global resume_data_saved
resume_data_saved = True
alerts = ses.pop_alerts()
for alert in alerts:
alert_type = type(alert).__name__
if alert_type == "save_resume_data_alert":
on_alert_save_resume_data(alert)
print 'Exiting...'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment