Example #1
0
def list_task(args):
    status = "all"
    if args.completed:
        status = "completed"
    elif args.deleted:
        status = "deleted"
    elif args.expired:
        status = "expired"

    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)
    if parent_ids:
        args[0] = args[0][:-1]
        tasks = search_tasks(client, args, status=status)
        assert len(tasks) == 1
        tasks = client.list_bt(tasks[0])
        # 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=status)
    elif status == "all":
        tasks = client.read_all_tasks()
    elif status == "completed":
        tasks = filter(lambda x: x["status_text"] == "completed", client.read_all_tasks())  # by #139
    elif status == "deleted":
        tasks = client.read_all_deleted()
    elif status == "expired":
        tasks = client.read_all_expired()
    else:
        raise NotImplementedError(status)
    columns = [
        "n",
        "id",
        "name",
        "status",
        "size",
        "progress",
        "speed",
        "date",
        "dcid",
        "gcid",
        "original-url",
        "download-url",
    ]
    columns = filter(lambda k: getattr(args, k), columns)

    output_tasks(tasks, columns, args, not parent_ids)
Example #2
0
def list():
	rs={'msg':'','log':'','rst':'','data':{}}
	form = cgi.FieldStorage()

	if "tasktype" in form:
		status=form["tasktype"].value
	else:
		status = 'all'

	if "id" in form:
		id=form["id"].value
	else:
		id = None

	try:
		sys.path.append('core')
		from wshconfig import readconf
		conf=readconf()
		from lixian import XunleiClient
		client = XunleiClient(conf['username'],conf['password'],conf['LIXIAN_HOME'] +'/.xunlei.lixian.cookies')
	except  Exception as e:
		rs['msg'] = "needlogin"
		rs['log'] = str(e)
		return rs

	if status == 'all':
		tasks = client.read_all_tasks()
	elif status == 'completed':
		tasks = filter(lambda x: x['status_text'] == 'completed', client.read_all_tasks())
	elif status == 'deleted':
		tasks = client.read_all_deleted()
	elif status == 'expired':
		tasks = client.read_all_expired()

	outputs=[]
	for i, t in enumerate(tasks):
		one={}
		one['name']=t['name']
		one['id']=t['id']
		one["status"]=t["status_text"]
		one["size"]=t["size"]
		one["progress"]=t["progress"]
		one["type"]=t["type"]
		outputs.append(one)

	rs["data"]=outputs

	return rs
Example #3
0
def list_task(args):
	status = 'all'
	if args.completed:
		status = 'completed'
	elif args.deleted:
		status = 'deleted'
	elif args.expired:
		status = 'expired'

	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)
	if parent_ids:
		args[0] = args[0][:-1]
		tasks = search_tasks(client, args, status=status)
		assert len(tasks) == 1
		tasks = client.list_bt(tasks[0])
		#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=status)
	elif args.category:
		tasks = client.read_all_tasks_by_category(from_native(args.category))
	elif status == 'all':
		tasks = client.read_all_tasks()
	elif status == 'completed':
		tasks = filter(lambda x: x['status_text'] == 'completed', client.read_all_tasks()) # by #139
	elif status == 'deleted':
		tasks = client.read_all_deleted()
	elif status == 'expired':
		tasks = client.read_all_expired()
	else:
		raise NotImplementedError(status)
	columns = ['n', 'id', 'name', 'status', 'size', 'progress', 'speed', 'date', 'dcid', 'gcid', 'original-url', 'download-url']
	columns = filter(lambda k: getattr(args, k), columns)

	output_tasks(tasks, columns, args, not parent_ids)
Example #4
0
def list_task(args):
	status = 'all'
	if args.completed:
		status = 'completed'
	elif args.deleted:
		status = 'deleted'
	elif args.expired:
		status = 'expired'

	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)
	if parent_ids:
		args[0] = args[0][:-1]
		tasks = search_tasks(client, args, status=status)
		assert len(tasks) == 1
		tasks = client.list_bt(tasks[0])
		#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=status)
	elif status == 'all':
		tasks = client.read_all_tasks()
	elif status == 'completed':
		tasks = filter(lambda x: x['status_text'] == 'completed', client.read_all_tasks()) # by #139
	elif status == 'deleted':
		tasks = client.read_all_deleted()
	elif status == 'expired':
		tasks = client.read_all_expired()
	else:
		raise NotImplementedError(status)
	columns = ['n', 'id', 'name', 'status', 'size', 'progress', 'speed', 'date', 'dcid', 'gcid', 'original-url', 'download-url']
	columns = filter(lambda k: getattr(args, k), columns)

	output_tasks(tasks, columns, args, not parent_ids)
Example #5
0
def list_task(args):
    args = parse_login_command_line(args, [], [
        'all', 'completed', 'deleted', 'expired', 'id', 'name', 'status',
        'size', 'dcid', 'gcid', 'original-url', 'download-url', 'speed',
        'progress', 'date', 'n', 'format-size', 'colors'
    ],
                                    default={
                                        'id': get_config('id', True),
                                        'name': True,
                                        'status': True,
                                        'n': get_config('n'),
                                        'size': get_config('size'),
                                        'format-size':
                                        get_config('format-size'),
                                        'colors': get_config('colors', True)
                                    },
                                    help=lixian_help.list)

    status = 'all'
    if args.completed:
        status = 'completed'
    elif args.deleted:
        status = 'deleted'
    elif args.expired:
        status = 'expired'

    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)
    if parent_ids:
        args[0] = args[0][:-1]
        tasks = search_tasks(client, args, status=status)
        assert len(tasks) == 1
        tasks = client.list_bt(tasks[0])
        #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=status)
    elif status == 'all':
        tasks = client.read_all_tasks()
    elif status == 'completed':
        tasks = client.read_all_completed()
    elif status == 'deleted':
        tasks = client.read_all_deleted()
    elif status == 'expired':
        tasks = client.read_all_expired()
    else:
        raise NotImplementedError(status)
    columns = [
        'n', 'id', 'name', 'status', 'size', 'progress', 'speed', 'date',
        'dcid', 'gcid', 'original-url', 'download-url'
    ]
    columns = filter(lambda k: getattr(args, k), columns)
    from lixian_colors import colors
    for i, t in enumerate(tasks):
        status_colors = {
            'waiting': 'yellow',
            'downloading': 'magenta',
            'completed': 'green',
            'pending': 'cyan',
            'failed': 'red',
        }
        c = status_colors[t['status_text']]
        with colors(args.colors).ansi(c)():
            for k in columns:
                if k == 'n':
                    if not parent_ids:
                        print '#%d' % t['#'],
                elif k == 'id':
                    print t.get('index', t['id']),
                elif k == 'name':
                    print t['name'].encode(default_encoding),
                elif k == 'status':
                    with colors(args.colors).bold():
                        print t['status_text'],
                elif k == 'size':
                    if args.format_size:
                        from lixian_util import format_size
                        print format_size(t['size']),
                    else:
                        print t['size'],
                elif k == 'progress':
                    print t['progress'],
                elif k == 'speed':
                    print t['speed'],
                elif k == 'date':
                    print t['date'],
                elif k == 'dcid':
                    print t['dcid'],
                elif k == 'gcid':
                    print t['gcid'],
                elif k == 'original-url':
                    print t['original_url'],
                elif k == 'download-url':
                    print t['xunlei_url'],
                else:
                    raise NotImplementedError(k)
            print
Example #6
0
def list_task(args):
	args = parse_login_command_line(args, [],
	                                ['all', 'completed', 'deleted', 'expired',
	                                 'id', 'name', 'status', 'size', 'dcid', 'gcid', 'original-url', 'download-url', 'speed', 'progress', 'date',
	                                 'n',
	                                 'format-size',
	                                 'colors'
	                                 ],
									default={'id': get_config('id', True), 'name': True, 'status': True, 'n': get_config('n'), 'size': get_config('size'), 'format-size': get_config('format-size'), 'colors': get_config('colors', True)},
									help=lixian_help.list)

	status = 'all'
	if args.completed:
		status = 'completed'
	elif args.deleted:
		status = 'deleted'
	elif args.expired:
		status = 'expired'

	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)
	if parent_ids:
		args[0] = args[0][:-1]
		tasks = search_tasks(client, args, status=status)
		assert len(tasks) == 1
		tasks = client.list_bt(tasks[0])
		#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=status)
	elif status == 'all':
		tasks = client.read_all_tasks()
	elif status == 'completed':
		tasks = client.read_all_completed()
	elif status == 'deleted':
		tasks = client.read_all_deleted()
	elif status == 'expired':
		tasks = client.read_all_expired()
	else:
		raise NotImplementedError(status)
	columns = ['n', 'id', 'name', 'status', 'size', 'progress', 'speed', 'date', 'dcid', 'gcid', 'original-url', 'download-url']
	columns = filter(lambda k: getattr(args, k), columns)
	from lixian_colors import colors
	for i, t in enumerate(tasks):
		status_colors = {
				'waiting': 'yellow',
				'downloading': 'magenta',
				'completed':'green',
				'pending':'cyan',
				'failed':'red',
		}
		c = status_colors[t['status_text']]
		with colors(args.colors).ansi(c)():
			for k in columns:
				if k == 'n':
					if not parent_ids:
						print '#%d' % t['#'],
				elif k == 'id':
					print t.get('index', t['id']),
				elif k == 'name':
					print t['name'].encode(default_encoding),
				elif k == 'status':
					with colors(args.colors).bold():
						print t['status_text'],
				elif k == 'size':
					if args.format_size:
						from lixian_util import format_size
						print format_size(t['size']),
					else:
						print t['size'],
				elif k == 'progress':
					print t['progress'],
				elif k == 'speed':
					print t['speed'],
				elif k == 'date':
					print t['date'],
				elif k == 'dcid':
					print t['dcid'],
				elif k == 'gcid':
					print t['gcid'],
				elif k == 'original-url':
					print t['original_url'],
				elif k == 'download-url':
					print t['xunlei_url'],
				else:
					raise NotImplementedError(k)
			print