def switch_node(url, node, gdriveid): assert re.match(r'^vod\d+$', node) logger = lixian_logging.get_logger() logger.debug('Download URL: ' + url) try: url = resolve_node_url(url, gdriveid, timeout=60) logger.debug('Resolved URL: ' + url) except: import traceback logger.debug(traceback.format_exc()) return url url = switch_node_in_url(url, node) logger.debug('Switch to node URL: ' + url) return url
def get_best_node_url_from(node_url, nodes, gdriveid): best = None best_speed = 0 logger = lixian_logging.get_logger() for node in nodes: url = switch_node_in_url(node_url, node) try: speed = get_node_url_speed(url, gdriveid) logger.debug("%s speed: %s" % (node, speed)) if speed > best_speed: best_speed = speed best = url except Exception, e: logger.debug("%s error: %s" % (node, e))
def parse_logging(args): path = args.log_path level = args.log_level if args.trace: level = 'trace' elif args.debug: level = 'debug' if path or level: import lixian_logging level = level or 'info' lixian_logging.init_logger(use_colors=args.colors, level=level, path=path) logger = lixian_logging.get_logger() import lixian # inject logger to lixian (this makes lixian.py zero-dependency) lixian.logger = logger
def switch_node(client, url, node): assert re.match(r'^vod\d+$', node) import lixian_logging logger = lixian_logging.get_logger() logger.debug('Download URL: ' + url) try: url = resolve_node_url(client, url) logger.debug('Resolved URL: ' + url) except: import traceback logger.debug(traceback.format_exc()) return url url = re.sub(r'(http://)(vod\d+)(\.t\d+\.lixian\.vip\.xunlei\.com)', r'\1%s\3' % node, url) logger.debug('Switch to node URL: ' + url) return url
def parse_logging(args): path = args.log_path level = args.log_level if args.trace: level = 'trace' elif args.debug: level = 'debug' if path or level: import lixian_logging level = level or 'info' lixian_logging.init_logger(use_colors=args.colors, level=level, path=path) logger = lixian_logging.get_logger() import lixian # inject logger to lixian (this makes lixian.py zero-dependency) lixian.logger = logger
def switch_node(client, url, node): assert re.match(r'^vod\d+$', node) import lixian_logging logger = lixian_logging.get_logger() logger.debug('Download URL: ' + url) try: url = resolve_node_url(client, url) logger.debug('Resolved URL: ' + url) except: import traceback logger.debug(traceback.format_exc()) return url url = re.sub(r'(http://)(vod\d+)(\.t\d+\.lixian\.vip\.xunlei\.com)', r'\1%s\3' % node, url) logger.debug('Switch to node URL: ' + url) return url
def use_node_by_policy(url, vod_nodes, gdriveid, policy): nodes = parse_vod_nodes(vod_nodes) assert nodes logger = lixian_logging.get_logger() logger.debug('Download URL: ' + url) try: node_url = resolve_node_url(url, gdriveid, timeout=60) logger.debug('Resolved URL: ' + node_url) except: import traceback logger.debug(traceback.format_exc()) return url default_node = re.match(r'http://(vod\d+)\.', node_url).group(1) if default_node not in nodes: nodes.insert(0, default_node) chosen = policy(node_url, nodes, gdriveid) if chosen: logger.debug('Switch to URL: ' + chosen) return chosen else: return node_url