Esempio n. 1
0
def find_normal_tasks_to_download(client, links):
	links = lixian_extend_links.extend_links(links)
	all_tasks = client.read_all_tasks()
	found, missing, all = search_in_tasks(all_tasks, links)
	to_add = set(missing)
	if to_add:
		print 'Adding below tasks:'
		for link in missing:
			print link
		links_to_add = filter(is_url, to_add)
		if links_to_add:
			client.add_batch_tasks(map(native_to_utf_8, links_to_add))
		for link in to_add:
			if is_url(link):
				# add_batch_tasks doesn't work for bt task, add bt task one by one...
				if link.startswith('bt://') or link.startswith('magnet:'):
					client.add_task(link)
			elif is_local_bt(link):
				with open(link, 'rb') as stream:
					torrent = stream.read()
				client.add_torrent_task_by_content(torrent, os.path.basename(link))
			else:
				raise NotImplementedError('Unsupported: '+link)
		all_tasks = client.read_all_tasks()
	try:
		return return_my_tasks(all_tasks, all)
	except NotImplementedError:
		import time
		time.sleep(5)
		return return_my_tasks(client.read_all_tasks(), all)
def extend_links(args):
	'''
	usage: lx extend-links http://kuai.xunlei.com/d/... http://www.verycd.com/topics/...
	
	parse and print links from pages
	
	lx extend-links urls...
	lx extend-links --name urls...
	'''
	args = parse_command_line(args, [], ['name'])
	import lixian_extend_links
	if args.name:
		for x in lixian_extend_links.extend_links_name(args):
			print x.encode(default_encoding)
	else:
		for x in lixian_extend_links.extend_links(args):
			print x