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): def do_ls(self, line):
self.videos = [] self.videos = []
if len(self.working_dir) == 0: 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 print name
return 0 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): if isinstance(rep, BaseVideo):
self.videos.append(rep) self.videos.append(rep)
self.format(rep) self.format(rep)
@ -311,6 +317,7 @@ class Videoob(ReplApplication):
if len(self.working_dir) == 0: if len(self.working_dir) == 0:
tmp = [b.NAME for b in self.weboob. iter_backends(caps=ICapCollection)] tmp = [b.NAME for b in self.weboob. iter_backends(caps=ICapCollection)]
else: 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)] return [s[offs:] for s in tmp if s.startswith(mline)]

View file

@ -65,16 +65,11 @@ class CanalplusBackend(BaseBackend, ICapVideo, ICapCollection):
return video return video
OBJECTS = {CanalplusVideo: fill_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): def change_working_collection(self, splited_path):
rep = self.browser.iter_resources(self.working_coll) with self.browser:
return rep 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) return walk(splited_path, collections)
def iter_resources(self, cur_coll): def iter_resources(self, splited_path):
self.home() self.home()
collections = self.page.collections 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(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): def change_working_collection(self, splited_path):
raise NotImplementedError() raise NotImplementedError()
def iter_resources(self): def iter_resources(self, splited_path):
raise NotImplementedError() raise NotImplementedError()