Esempio n. 1
0
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
Esempio n. 2
0
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))
Esempio n. 3
0
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
Esempio n. 4
0
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
Esempio n. 5
0
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
Esempio n. 6
0
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
Esempio n. 7
0
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