def run(conf_dir, http_ip, http_port): common.conf = config.ConfigDir(conf_dir) if common.conf.get_rt() is not None: print("Filling torrent cache. May take some time.") actions.get_torrents_and_update_cache() common.recent_torrent_dests = actions.get_recent_torrent_dests() # TODO: there's probably a better place for this print("Caching complete, starting server.") import http http.run_server(http_ip, http_port)
def main(self): args = web.input() rpc_ids = args.get("rpc_id", None) rt = common.conf.get_rt() json_data = {} json_data["torrents"] = [] json_data["client_info"] = {} json_data["trackers"] = {} json_data["error_code"] = 0 json_data["error_msg"] = "" if rt is not None: rt.update() torrents = actions.get_torrents_and_update_cache() json_data["trackers"] = common.conf.tracker_cache # if specific rpc ids were specified if rpc_ids is not None: #rpc_ids = parse_qs(rpc_ids).get("ids", []) # not needed? if isinstance(rpc_ids, (str, unicode)): rpc_ids = [rpc_ids] for rpc_id in rpc_ids: t = actions.get_torrent(rpc_id) json_data["torrents"].append(actions.build_torrent_info(t)) else: # return all torrents (plus extra info) try: du = utils.get_disk_usage(common.conf.settings["du_path"]) except OSError: print("{0} not found".format(common.conf.settings["du_path"])) du = utils.get_disk_usage("/") json_data["torrents"] = actions.build_torrent_info(torrents) json_data["client_info"]["disk_free_str"] = formatters.format_size(du.free) json_data["client_info"]["disk_total_str"] = formatters.format_size(du.total) json_data["client_info"]["disk_free_percentage"] = formatters.format_percentage(du.free, du.total) json_data["client_info"]["down_rate"] = formatters.format_speed(rt.down_rate) json_data["client_info"]["up_rate"] = formatters.format_speed(rt.up_rate) json_data["client_info"]["client_version"] = rt.client_version json_data["client_info"]["library_version"] = rt.library_version json_data["client_info"]["dartui_version"] = common.__version__ json_data["client_info"]["recent_torrent_dests"] = common.recent_torrent_dests else: json_data["error_code"] = 1 json_data["error_msg"] = "Couldn't connect to rTorrent." return(to_json(json_data))