Created
February 24, 2014 12:48
-
-
Save cas--/9187771 to your computer and use it in GitHub Desktop.
paused announce
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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