def add_task(args): args = parse_login_command_line(args, ['input'], ['torrent'], alias={'i': 'input'}, help=lixian_help.add) assert len(args) or args.input client = XunleiClient(args.username, args.password, args.cookies) links = [] links.extend(args) if args.input: with open(args.input) as x: links.extend(line.strip() for line in x.readlines() if line.strip()) if not args.torrent: print 'Adding below tasks:' for link in links: print link client.add_batch_tasks(map(to_utf_8, links)) for link in links: # 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) print 'All tasks added. Checking status...' tasks = client.read_all_tasks() for link in links: found = filter_tasks(tasks, 'original_url', to_utf_8(link)) if found: print found[0]['id'], found[0]['status_text'], link else: print 'unknown', link else: tasks = find_torrents_task_to_download(client, links) assert len(tasks) == len(links) print 'All tasks added:' for link, task in zip(links, tasks): print task['id'], task['status_text'], link
def add_task(args): args = parse_login_command_line(args, ['input'], ['torrent'], alias={'i':'input'}, help=lixian_help.add) assert len(args) or args.input client = XunleiClient(args.username, args.password, args.cookies) links = [] links.extend(args) if args.input: with open(args.input) as x: links.extend(line.strip() for line in x.readlines() if line.strip()) if not args.torrent: print 'Adding below tasks:' for link in links: print link client.add_batch_tasks(map(to_utf_8, links)) for link in links: # 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) print 'All tasks added. Checking status...' tasks = client.read_all_tasks() for link in links: found = filter_tasks(tasks, 'original_url', to_utf_8(link)) if found: print found[0]['id'], found[0]['status_text'], link else: print 'unknown', link else: tasks = find_torrents_task_to_download(client, links) assert len(tasks) == len(links) print 'All tasks added:' for link, task in zip(links, tasks): print task['id'], task['status_text'], link
def addtask(): rs={'msg':'','log':'','rst':'','data':{}} form = cgi.FieldStorage() if "url" in form: url=form["url"].value else: url = None rs['msg']="needurl" return rs bt = 0 if "tasktype" in form: bt = (form["tasktype"].value == "bt") try: sys.path.append('core') from lixian_url import url_unmask url = url_unmask(url) conf=readconf() from lixian import XunleiClient client = XunleiClient(conf['username'],conf['password'],conf['LIXIAN_HOME'] +'/.xunlei.lixian.cookies') if (url.startswith('http://') or url.startswith('ftp://')) and bt: torrent = urllib2.urlopen(url, timeout=60).read() client.add_torrent_task_by_content(torrent, os.path.basename(url)) rs['msg']="addok" else: client.add_task(url) rs['msg']="addok" except Exception as inst: rs['msg']="addng" rs['log']=str(inst) return rs
def download_task(args): args = parse_login_command_line(args, ['tool', 'output', 'output-dir', 'input'], ['delete', 'continue', 'overwrite', 'torrent', 'id', 'name', 'url'], alias={'o': 'output', 'i': 'input'}, default={'tool':'wget'}) download = {'wget':wget_download, 'curl': curl_download, 'aria2':aria2_download, 'asyn':asyn_download, 'urllib2':urllib2_download}[args.tool] download_args = {'output_dir':args.output_dir, 'delete':args.delete, 'resuming':args._args['continue'], 'overwrite':args.overwrite} client = XunleiClient(args.username, args.password, args.cookies) links = None if len(args) > 1 or args.input: assert not(args.id or args.name or args.url or args.output) tasks = find_tasks_to_download(client, args) download_multiple_tasks(client, download, tasks, **download_args) elif args.torrent: # TODO: --torrent should support multiple torrent tasks. Workaround: use bt://infohash without --torrent. assert not(args.id or args.name or args.url) assert len(args) == 1 tasks = find_torrents_task_to_download(client, [args[0]]) assert len(tasks) == 1 download_single_task(client, download, tasks[0], args.output, **download_args) else: if len(args) == 1: assert not args.url args.url = args[0] tasks = search_tasks(client, args, status='all', check=False) if not tasks: assert args.url print 'Adding new task %s ...' % args.url client.add_task(args.url) tasks = client.read_all_completed() tasks = filter_tasks(tasks, 'original_url', args.url) assert tasks, 'task not found, wired' if args.output: assert len(tasks) == 1 download_single_task(client, download, tasks[0], args.output, **download_args) else: download_multiple_tasks(client, download, tasks, **download_args)
def add_task(args): args = parse_login_command_line( args, ["input"], ["torrent"], alias={"i": "input", "bt": "torrent"}, help=lixian_help.add ) assert len(args) or args.input client = XunleiClient(args.username, args.password, args.cookies) links = [] links.extend(args) if args.input: with open(args.input) as x: links.extend(line.strip() for line in x.readlines() if line.strip()) if not args.torrent: print "Adding below tasks:" for link in links: print link client.add_batch_tasks(map(to_utf_8, links)) for link in links: # 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) print "All tasks added. Checking status..." tasks = client.read_all_tasks() for link in links: found = filter_tasks(tasks, "original_url", to_utf_8(link)) if found: print found[0]["id"], found[0]["status_text"], link else: print "unknown", link else: tasks = find_torrents_task_to_download(client, links) assert len(tasks) == len(links) print "All tasks added:" for link, task in zip(links, tasks): print task["id"], task["status_text"], link
def download_task(args): args = parse_login_command_line(args, ['tool', 'output', 'output-dir', 'input'], ['delete', 'continue', 'overwrite', 'torrent', 'all', 'search', 'mini-hash', 'hash'], alias={'o': 'output', 'i': 'input', 'c':'continue'}, default={'tool':get_config('tool', 'wget'),'delete':get_config('delete'),'continue':get_config('continue'),'output-dir':get_config('output-dir'), 'mini-hash':get_config('mini-hash'), 'hash':get_config('hash', True)}, help=lixian_help.download) download = {'wget':wget_download, 'curl': curl_download, 'aria2':aria2_download, 'aria2c':aria2_download, 'axel':axel_download, 'asyn':asyn_download, 'urllib2':urllib2_download}[args.tool] download_args = {'output':args.output, 'output_dir':args.output_dir, 'delete':args.delete, 'resuming':args._args['continue'], 'overwrite':args.overwrite, 'mini_hash':args.mini_hash, 'no_hash': not args.hash} client = XunleiClient(args.username, args.password, args.cookies) links = None if len(args) > 1 or args.input: assert not args.output tasks = find_tasks_to_download(client, args) tasks = merge_bt_sub_tasks(tasks) download_multiple_tasks(client, download, tasks, download_args) elif args.torrent: assert not args.search assert len(args) == 1 tasks = find_torrents_task_to_download(client, [args[0]]) assert len(tasks) == 1 download_single_task(client, download, tasks[0], download_args) elif len(args): assert len(args) == 1 tasks = search_tasks(client, args, status='all', check=False) if not tasks: url = args[0] print 'Adding new task %s ...' % url client.add_task(to_utf_8(url)) tasks = client.read_all_completed() tasks = filter_tasks(tasks, 'original_url', to_utf_8(url)) assert tasks, 'task not found, wired' tasks = merge_bt_sub_tasks(tasks) if args.output: assert len(tasks) == 1 download_single_task(client, download, tasks[0], download_args) else: download_multiple_tasks(client, download, tasks, download_args) elif args.all: #tasks = client.read_all_completed() tasks = client.read_all_tasks() download_multiple_tasks(client, download, tasks, download_args) else: usage(doc=lixian_help.download, message='Not enough arguments')
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)
def download_task(args): args = parse_login_command_line( args, ['tool', 'output', 'output-dir', 'input'], ['delete', 'continue', 'overwrite', 'torrent', 'search', 'mini-hash'], alias={ 'o': 'output', 'i': 'input', 'c': 'continue' }, default={ 'tool': get_config('tool', 'wget'), 'delete': get_config('delete'), 'continue': get_config('continue'), 'output-dir': get_config('output-dir'), 'mini-hash': get_config('mini-hash') }, help=lixian_help.download) download = { 'wget': wget_download, 'curl': curl_download, 'aria2': aria2_download, 'asyn': asyn_download, 'urllib2': urllib2_download }[args.tool] download_args = { 'output_dir': args.output_dir, 'delete': args.delete, 'resuming': args._args['continue'], 'overwrite': args.overwrite, 'mini_hash': args.mini_hash } client = XunleiClient(args.username, args.password, args.cookies) links = None if len(args) > 1 or args.input: assert not args.output tasks = find_tasks_to_download(client, args) tasks = merge_bt_sub_tasks(tasks) download_multiple_tasks(client, download, tasks, **download_args) elif args.torrent: assert not args.search assert len(args) == 1 tasks = find_torrents_task_to_download(client, [args[0]]) assert len(tasks) == 1 download_single_task(client, download, tasks[0], args.output, **download_args) else: assert len(args) == 1, 'Not enough argument' tasks = search_tasks(client, args, status='all', check=False) if not tasks: url = args[0] print 'Adding new task %s ...' % url client.add_task(url) tasks = client.read_all_completed() tasks = filter_tasks(tasks, 'original_url', url) assert tasks, 'task not found, wired' tasks = merge_bt_sub_tasks(tasks) if args.output: assert len(tasks) == 1 download_single_task(client, download, tasks[0], args.output, **download_args) else: download_multiple_tasks(client, download, tasks, **download_args)
def download_task(args): args = parse_login_command_line( args, ["tool", "output", "output-dir", "input"], ["delete", "continue", "overwrite", "torrent", "all", "search", "mini-hash", "hash"], alias={"o": "output", "i": "input", "c": "continue", "bt": "torrent"}, default={ "tool": get_config("tool", "wget"), "delete": get_config("delete"), "continue": get_config("continue"), "output-dir": get_config("output-dir"), "mini-hash": get_config("mini-hash"), "hash": get_config("hash", True), }, help=lixian_help.download, ) download = { "wget": wget_download, "curl": curl_download, "aria2": aria2_download, "aria2c": aria2_download, "axel": axel_download, "asyn": asyn_download, "urllib2": urllib2_download, }[args.tool] download_args = { "output": args.output, "output_dir": args.output_dir, "delete": args.delete, "resuming": args._args["continue"], "overwrite": args.overwrite, "mini_hash": args.mini_hash, "no_hash": not args.hash, } client = XunleiClient(args.username, args.password, args.cookies) links = None if len(args) > 1 or args.input: assert not args.output tasks = find_tasks_to_download(client, args) tasks = merge_bt_sub_tasks(tasks) download_multiple_tasks(client, download, tasks, download_args) elif args.torrent: assert not args.search assert len(args) == 1 tasks = find_torrents_task_to_download(client, [args[0]]) assert len(tasks) == 1 download_single_task(client, download, tasks[0], download_args) elif len(args): assert len(args) == 1 tasks = search_tasks(client, args, status="all", check=False) if not tasks: url = args[0] print "Adding new task %s ..." % url client.add_task(to_utf_8(url)) tasks = client.read_all_completed() tasks = filter_tasks(tasks, "original_url", to_utf_8(url)) assert tasks, "task not found, wired" tasks = merge_bt_sub_tasks(tasks) if args.output: assert len(tasks) == 1 download_single_task(client, download, tasks[0], download_args) else: download_multiple_tasks(client, download, tasks, download_args) elif args.all: # tasks = client.read_all_completed() tasks = client.read_all_tasks() download_multiple_tasks(client, download, tasks, download_args) else: usage(doc=lixian_help.download, message="Not enough arguments")