backend stateful

This commit is contained in:
Nicolas Duhamel 2011-04-11 14:37:24 +02:00 committed by Romain Bignon
commit 27876970f3
4 changed files with 19 additions and 17 deletions

View file

@ -246,10 +246,16 @@ class Videoob(ReplApplication):
def do_ls(self, line):
self.videos = []
if len(self.working_dir) == 0:
for name in [b.NAME for b in self.weboob. iter_backends(caps=ICapCollection)]:
for name in [b.NAME for b in self.weboob.iter_backends(caps=ICapCollection)]:
print name
return 0
for backend, rep in self.do('iter_resources', backends=self.working_dir[0]):
backend = [b for b in self.enabled_backends if b.NAME == self.working_dir[0]][0]
def do(backend):
return backend.iter_resources(self.working_dir[1:])
for backend, rep in self.do(do, backends=self.working_dir[0]):
if isinstance(rep, BaseVideo):
self.videos.append(rep)
self.format(rep)
@ -311,6 +317,7 @@ class Videoob(ReplApplication):
if len(self.working_dir) == 0:
tmp = [b.NAME for b in self.weboob. iter_backends(caps=ICapCollection)]
else:
tmp = [rep for backend, rep in self.do('iter_resources', backends=self.working_dir[0])]
backend = [b for b in self.enabled_backends if b.NAME == self.working_dir[0]][0]
tmp = [rep for rep in backend.iter_resources(self.working_dir[1:])]
return [s[offs:] for s in tmp if s.startswith(mline)]

View file

@ -65,16 +65,11 @@ class CanalplusBackend(BaseBackend, ICapVideo, ICapCollection):
return video
OBJECTS = {CanalplusVideo: fill_video}
working_coll = []
def get_working_collection(self):
return self.working_coll
def change_working_collection(self, splited_path):
self.working_coll = self.browser.change_working_collection(splited_path)
return self.working_coll
def iter_resources(self):
rep = self.browser.iter_resources(self.working_coll)
return rep
def change_working_collection(self, splited_path):
with self.browser:
return self.browser.change_working_collection(splited_path)
def iter_resources(self, splited_path):
with self.browser:
return self.browser.iter_resources(splited_path)

View file

@ -94,7 +94,7 @@ class CanalplusBrowser(BaseBrowser):
return walk(splited_path, collections)
def iter_resources(self, cur_coll):
def iter_resources(self, splited_path):
self.home()
collections = self.page.collections
@ -110,4 +110,4 @@ class CanalplusBrowser(BaseBrowser):
return walk_res(path[1:], [collection.children for collection in collections if collection.title == i][0])
return walk_res(cur_coll, collections)
return walk_res(splited_path, collections)

View file

@ -67,5 +67,5 @@ class ICapCollection(IBaseCap):
def change_working_collection(self, splited_path):
raise NotImplementedError()
def iter_resources(self):
def iter_resources(self, splited_path):
raise NotImplementedError()