kuuko pushed a commit to branch master. http://git.enlightenment.org/apps/epour.git/commit/?id=c8344819e060965bddac5628f0e716e1fe2f0b1f
commit c8344819e060965bddac5628f0e716e1fe2f0b1f Author: Kai Huuhko <kai.huu...@gmail.com> Date: Mon Sep 19 15:00:08 2016 +0300 libtorrent compatibility fixes --- epour/session.py | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/epour/session.py b/epour/session.py index 32c92a1..29fee9e 100644 --- a/epour/session.py +++ b/epour/session.py @@ -77,7 +77,7 @@ def read_resume_data(info_hash): t_path = os.path.join(p, "%s.fastresume" % info_hash) if os.path.exists(t_path): with open(t_path, "rb") as fp: - data = lt.read_resume_data(fp.read()) + data = fp.read() break if data: @@ -86,6 +86,12 @@ def read_resume_data(info_hash): raise ValueError("Fast Resume data not found") +def lt_compatibility_convert(params): + for k, v in params.items(): + if type(v) == lt.sha1_hash: + params[k] = v.to_bytes() + + class Session(lt.session): def __init__(self, conf, shutdown_cb): @@ -283,6 +289,7 @@ class Session(lt.session): params_dict = torrent.get_params() params = None + ti = None if "ti" in params_dict and params_dict["ti"]: try: @@ -291,15 +298,28 @@ class Session(lt.session): log.exception("Opening torrent %s failed", info_hash) else: params_dict["ti"] = ti + + if ti: + if lt_version < LooseVersion("1.2.0.0"): + try: + data = read_resume_data(info_hash) + except Exception: + log.exception("Reading resume data failed.") + else: + params_dict["resume_data"] = data + else: try: - params = read_resume_data(info_hash) + data = read_resume_data(info_hash) + params = lt.read_resume_data(data) except Exception: - pass + log.exception("Reading resume data failed.") else: params.trackers = list(set(params.trackers)) - if lt_version < LooseVersion("1.1.1.0"): + if lt_version < LooseVersion("1.2.0.0"): if params is None: + log.warn("Falling back to < lt 1.2 compatibility handling.") + lt_compatibility_convert(params_dict) params = params_dict else: if params is None: --