Пример #1
0
def list_task(args):
	args = parse_login_command_line(args, [],
	                                ['all', 'completed',
	                                 'task-id', 'name', 'status', 'size', 'dcid', 'original-url', 'download-url',
	                                 'id', 'file', 'url',],
									default={'task-id': True, 'name': True, 'status': True})
	client = XunleiClient(args.username, args.password, args.cookies)
	client.set_page_size(100)
	if args.id or args.file or args.url or len(args):
		tasks = search_tasks(client, args, status=(args.completed and 'completed' or 'all'), check=False)
	elif args.completed:
		tasks = client.read_all_completed()
	else:
		tasks = client.read_all_tasks()
	columns = ['task-id', 'name', 'status', 'size', 'dcid', 'original-url', 'download-url']
	columns = filter(lambda k: getattr(args, k), columns)
	for t in tasks:
		for k in columns:
			if k == 'task-id':
				print t['id'],
			elif k == 'name':
				print t['name'].encode(default_encoding),
			elif k == 'status':
				print t['status_text'],
			elif k == 'size':
				print t['size'],
			elif k == 'dcid':
				print t['dcid'],
			elif k == 'original-url':
				print t['original_url'],
			elif k == 'download-url':
				print t['xunlei_url'],
			else:
				raise NotImplementedError()
		print
Пример #2
0
def list_task(args):
    args = parse_login_command_line(args, [], [
        'all', 'completed', 'id', 'name', 'status', 'size', 'dcid',
        'original-url', 'download-url', 'search'
    ],
                                    default={
                                        'id': True,
                                        'name': True,
                                        'status': True
                                    },
                                    help=lixian_help.list)

    parent_ids = [a[:-1] for a in args if re.match(r'^\d+/$', a)]
    if parent_ids and not all(re.match(r'^\d+/$', a) for a in args):
        raise NotImplementedError("Can't mix 'id/' with others")
    assert len(
        parent_ids) <= 1, "sub-tasks listing only supports single task id"
    ids = [a[:-1] if re.match(r'^\d+/$', a) else a for a in args]

    client = XunleiClient(args.username, args.password, args.cookies)
    client.set_page_size(100)
    if parent_ids:
        tasks = client.list_bt(client.get_task_by_id(parent_ids[0]))
        tasks.sort(key=lambda x: int(x['index']))
    elif len(ids):
        tasks = search_tasks(client,
                             args,
                             status=(args.completed and 'completed' or 'all'),
                             check=False)
    elif args.completed:
        tasks = client.read_all_completed()
    else:
        tasks = client.read_all_tasks()
    columns = [
        'id', 'name', 'status', 'size', 'dcid', 'original-url', 'download-url'
    ]
    columns = filter(lambda k: getattr(args, k), columns)
    for t in tasks:
        for k in columns:
            if k == 'id':
                print t.get('index', t['id']),
            elif k == 'name':
                print t['name'].encode(default_encoding),
            elif k == 'status':
                print t['status_text'],
            elif k == 'size':
                print t['size'],
            elif k == 'dcid':
                print t['dcid'],
            elif k == 'original-url':
                print t['original_url'],
            elif k == 'download-url':
                print t['xunlei_url'],
            else:
                raise NotImplementedError()
        print
Пример #3
0
def list_task(args):
	args = parse_login_command_line(args, [],
	                                ['all', 'completed',
	                                 'id', 'name', 'status', 'size', 'dcid', 'original-url', 'download-url', 'speed', 'progress',
	                                 'search'],
									default={'id': True, 'name': True, 'status': True},
									help=lixian_help.list)

	parent_ids = [a[:-1] for a in args if re.match(r'^\d+/$', a)]
	if parent_ids and not all(re.match(r'^\d+/$', a) for a in args):
		raise NotImplementedError("Can't mix 'id/' with others")
	assert len(parent_ids) <= 1, "sub-tasks listing only supports single task id"
	ids = [a[:-1] if re.match(r'^\d+/$', a) else a for a in args]

	client = XunleiClient(args.username, args.password, args.cookies)
	client.set_page_size(100)
	if parent_ids:
		tasks = client.list_bt(client.get_task_by_id(parent_ids[0]))
		tasks.sort(key=lambda x: int(x['index']))
	elif len(ids):
		tasks = search_tasks(client, args, status=(args.completed and 'completed' or 'all'), check=False)
	elif args.completed:
		tasks = client.read_all_completed()
	else:
		tasks = client.read_all_tasks()
	columns = ['id', 'name', 'status', 'size', 'progress', 'speed', 'dcid', 'original-url', 'download-url']
	columns = filter(lambda k: getattr(args, k), columns)
	for t in tasks:
		for k in columns:
			if k == 'id':
				print t.get('index', t['id']),
			elif k == 'name':
				print t['name'].encode(default_encoding),
			elif k == 'status':
				print t['status_text'],
			elif k == 'size':
				print t['size'],
			elif k == 'progress':
				print t['progress'],
			elif k == 'speed':
				print t['speed'],
			elif k == 'dcid':
				print t['dcid'],
			elif k == 'original-url':
				print t['original_url'],
			elif k == 'download-url':
				print t['xunlei_url'],
			else:
				raise NotImplementedError()
		print
Пример #4
0
def execute_args(args):
	download = {'wget':wget_download, 'urllib2':urllib2_download}[args.tool]

	if args.links:
		assert len(args.links) == 1
		url = args.links[0]
	else:
		url = args.link
	assert url or args.task_id or args.task_name

	client = XunleiClient(args.username, args.password, args.cookies)
	client.set_page_size(100)
	tasks = client.read_all_completed()
	if url:
		matched = filter(lambda t: t['original_url'] == url, tasks)
		if matched:
			task = matched[0]
		else:
			# if the task doesn't exist yet, add it
			# TODO: check space, check queue, delete after download done, add loggings
			client.add_task(url)
			tasks = client.read_all_completed()
			task = filter(lambda t: t['original_url'] == url, tasks)[0]
	elif args.task_name:
		task = filter(lambda t: t['name'].find(args.task_name) != -1, tasks)[0]
	elif args.task_id:
		task = filter(lambda t: t['id'] == args.task_id, tasks)[0]
	else:
		raise NotImplementedError()

	download_url = str(task['xunlei_url'])
	filename = args.output or task['name'].encode(sys.getfilesystemencoding())
	referer = str(client.get_referer())
	gdriveid = str(client.get_gdriveid())

	download(client, download_url, filename)