wip (I commit everythings because my computer will die coming soon)

This commit is contained in:
Romain Bignon 2010-07-18 19:31:17 +02:00
commit b1f688e6d5
4 changed files with 39 additions and 15 deletions

View file

@ -37,19 +37,23 @@ class YoujizzBackend(BaseBackend, ICapVideo):
BROWSER = YoujizzBrowser BROWSER = YoujizzBrowser
def get_video(self, _id): def get_video(self, _id):
with self.browser:
video = self.browser.get_video(_id) video = self.browser.get_video(_id)
return video return video
def iter_page_urls(self, mozaic_url): def iter_page_urls(self, mozaic_url):
with self.browser:
return self.browser.iter_page_urls(mozaic_url) return self.browser.iter_page_urls(mozaic_url)
def iter_search_results(self, pattern=None, sortby=ICapVideo.SEARCH_RELEVANCE, nsfw=False): def iter_search_results(self, pattern=None, sortby=ICapVideo.SEARCH_RELEVANCE, nsfw=False):
if not nsfw: if not nsfw:
return return
with self.browser:
return self.browser.iter_search_results(pattern) return self.browser.iter_search_results(pattern)
def fill_video(self, video, fields): def fill_video(self, video, fields):
# ignore the fields param: VideoPage.get_video() returns all the information # ignore the fields param: VideoPage.get_video() returns all the information
with self.browser:
return self.browser.get_video(YoujizzVideo.id2url(video.id), video) return self.browser.get_video(YoujizzVideo.id2url(video.id), video)
OBJECTS = {YoujizzVideo: fill_video} OBJECTS = {YoujizzVideo: fill_video}

View file

@ -37,12 +37,14 @@ class YoupornBackend(BaseBackend, ICapVideo):
BROWSER = YoupornBrowser BROWSER = YoupornBrowser
def get_video(self, _id): def get_video(self, _id):
with self.browser:
return self.browser.get_video(_id) return self.browser.get_video(_id)
SORTBY = ['relevance', 'rating', 'views', 'time'] SORTBY = ['relevance', 'rating', 'views', 'time']
def iter_search_results(self, pattern=None, sortby=ICapVideo.SEARCH_RELEVANCE, nsfw=False): def iter_search_results(self, pattern=None, sortby=ICapVideo.SEARCH_RELEVANCE, nsfw=False):
if not nsfw: if not nsfw:
return return
with self.browser:
return self.browser.iter_search_results(pattern, self.SORTBY[sortby]) return self.browser.iter_search_results(pattern, self.SORTBY[sortby])
def iter_page_urls(self, mozaic_url): def iter_page_urls(self, mozaic_url):
@ -50,6 +52,7 @@ class YoupornBackend(BaseBackend, ICapVideo):
def fill_video(self, video, fields): def fill_video(self, video, fields):
# ignore the fields param: VideoPage.get_video() returns all the information # ignore the fields param: VideoPage.get_video() returns all the information
with self.browser:
return self.browser.get_video(YoupornVideo.id2url(video.id), video) return self.browser.get_video(YoupornVideo.id2url(video.id), video)
OBJECTS = {YoupornVideo: fill_video} OBJECTS = {YoupornVideo: fill_video}

View file

@ -39,6 +39,7 @@ class YoutubeBackend(BaseBackend, ICapVideo):
BROWSER = YoutubeBrowser BROWSER = YoutubeBrowser
def get_video(self, _id): def get_video(self, _id):
with self.browser:
return self.browser.get_video(_id) return self.browser.get_video(_id)
def iter_search_results(self, pattern=None, sortby=ICapVideo.SEARCH_RELEVANCE, nsfw=False): def iter_search_results(self, pattern=None, sortby=ICapVideo.SEARCH_RELEVANCE, nsfw=False):
@ -68,6 +69,7 @@ class YoutubeBackend(BaseBackend, ICapVideo):
def fill_video(self, video, fields): def fill_video(self, video, fields):
# ignore the fields param: VideoPage.get_video() returns all the information # ignore the fields param: VideoPage.get_video() returns all the information
with self.browser:
return self.browser.get_video(YoutubeVideo.id2url(video.id), video) return self.browser.get_video(YoutubeVideo.id2url(video.id), video)
OBJECTS = {YoutubeVideo: fill_video} OBJECTS = {YoutubeVideo: fill_video}

View file

@ -275,14 +275,29 @@ class ConsoleApplication(BaseApplication):
""" """
Call Weboob.do(), after having filled the yielded object, if selected fields are given by user. Call Weboob.do(), after having filled the yielded object, if selected fields are given by user.
""" """
for i, (backend, result) in enumerate(self.weboob.do(function, *args, **kwargs)):
if self.options.count and i == self.options.count: def inner(backend, count, selected_fields, function, *args, **kwargs):
break res = getattr(backend, function)(*args, **kwargs)
if self.selected_fields: if self.selected_fields:
fields = set(self.selected_fields) - set('*') fields = set(self.selected_fields) - set('*')
else:
fields = None
if hasattr(res, '__iter__'):
for i, sub in enumerate(res):
if self.options.count and i == self.options.count:
break
if fields: if fields:
try: try:
backend.fillobj(result, fields) backend.fillobj(sub, fields)
except NotSupportedObject, e: except NoSupportedObject, e:
logging.warning(u'Could not retrieve required fields (%s): %s' % (','.join(fields), e)) logging.warning(u'Could not retrieve required fields (%s): %s' % (','.join(fields), e))
yield backend, result yield sub
else:
if fields:
try:
backend.fillobj(sub, fields)
except NoSupportedObject, e:
logging.warning(u'Could not retrieve required fields (%s): %s' % (','.join(fields), e))
return res
return self.weboob.do(inner, function, *args, **kwargs)