Ejemplo n.º 1
0
def sub_id_processor(base, x):
	m = re.match(r'^#?(\d+)/([-.\w\[\],\s*]+)$', x)
	if not m:
		return
	task_id, sub_id = m.groups()
	task = base.find_task_by_id(task_id)
	if not task:
		return

	import lixian_encoding
	assert task['type'] == 'bt', 'task %s is not a bt task' % lixian_encoding.to_native(task['name'])
	subs = []
	if re.match(r'\[.*\]', sub_id):
		for sub_id in re.split(r'\s*,\s*', sub_id[1:-1]):
			assert re.match(r'^\d+(-\d+)?|\.\w+$', sub_id), sub_id
			if sub_id.startswith('.'):
				subs.append(sub_id)
			elif '-' in sub_id:
				start, end = map(int, sub_id.split('-'))
				r = range(start, end+1) if start <= end else reversed(range(end, start+1))
				for i in r:
					subs.append(str(i))
			else:
				assert re.match(r'^\d+$', sub_id), sub_id
				subs.append(sub_id)
	elif re.match(r'^\.\w+$', sub_id):
		subs.append(sub_id)
	elif sub_id == '*':
		subs.append(sub_id)
	else:
		assert re.match(r'^\d+$', sub_id), sub_id
		subs.append(sub_id)
	return SubTaskQuery(base, task, subs)
Ejemplo n.º 2
0
def sub_id_processor(base, x):
	x = lixian_encoding.from_native(x)

	m = re.match(r'^(\d+)/(.+)$', x)
	if not m:
		return
	task_id, sub_id = m.groups()
	task = base.find_task_by_id(task_id)
	if not task:
		return

	assert task['type'] == 'bt', 'task %s is not a bt task' % lixian_encoding.to_native(task['name'])
	files = base.get_files(task)
	import lixian_filter_expr
	files = lixian_filter_expr.filter_expr(files, sub_id)
	subs = [x for x in files]
	return SubTaskQuery(base, task, subs)
Ejemplo n.º 3
0
def usage(doc=lixian_help.usage, message=None):
    if hasattr(doc, '__call__'):
        doc = doc()
    if message:
        print to_native(message)
    print to_native(doc).strip()
Ejemplo n.º 4
0
 def get_task_by_url(self, url):
     t = self.find_task_by_url(url)
     if not t:
         raise Exception('No task found for ' +
                         lixian_encoding.to_native(url))
     return t
Ejemplo n.º 5
0
def usage(doc=lixian_help.usage, message=None):
	if hasattr(doc, '__call__'):
		doc = doc()
	if message:
		print to_native(message)
	print to_native(doc).strip()
Ejemplo n.º 6
0
	def get_task_by_url(self, url):
		t = self.find_task_by_url(url)
		if not t:
			raise Exception('No task found for ' + lixian_encoding.to_native(url))
		return t