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):
video = self.browser.get_video(_id) with self.browser:
video = self.browser.get_video(_id)
return video return video
def iter_page_urls(self, mozaic_url): def iter_page_urls(self, mozaic_url):
return self.browser.iter_page_urls(mozaic_url) with self.browser:
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
return self.browser.iter_search_results(pattern) with self.browser:
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
return self.browser.get_video(YoujizzVideo.id2url(video.id), video) with self.browser:
return self.browser.get_video(YoujizzVideo.id2url(video.id), video)
OBJECTS = {YoujizzVideo: fill_video} OBJECTS = {YoujizzVideo: fill_video}

View file

@ -37,19 +37,22 @@ class YoupornBackend(BaseBackend, ICapVideo):
BROWSER = YoupornBrowser BROWSER = YoupornBrowser
def get_video(self, _id): def get_video(self, _id):
return self.browser.get_video(_id) with self.browser:
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
return self.browser.iter_search_results(pattern, self.SORTBY[sortby]) with self.browser:
return self.browser.iter_search_results(pattern, self.SORTBY[sortby])
def iter_page_urls(self, mozaic_url): def iter_page_urls(self, mozaic_url):
raise NotImplementedError() raise NotImplementedError()
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
return self.browser.get_video(YoupornVideo.id2url(video.id), video) with self.browser:
return self.browser.get_video(YoupornVideo.id2url(video.id), video)
OBJECTS = {YoupornVideo: fill_video} OBJECTS = {YoupornVideo: fill_video}

View file

@ -39,7 +39,8 @@ class YoutubeBackend(BaseBackend, ICapVideo):
BROWSER = YoutubeBrowser BROWSER = YoutubeBrowser
def get_video(self, _id): def get_video(self, _id):
return self.browser.get_video(_id) with self.browser:
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):
import gdata.youtube.service import gdata.youtube.service
@ -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
return self.browser.get_video(YoutubeVideo.id2url(video.id), video) with self.browser:
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:
try:
backend.fillobj(sub, fields)
except NoSupportedObject, e:
logging.warning(u'Could not retrieve required fields (%s): %s' % (','.join(fields), e))
yield sub
else:
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 return res
return self.weboob.do(inner, function, *args, **kwargs)