Merge branch 'fillobj'
Conflicts: weboob/backends/youjizz/backend.py weboob/backends/youporn/backend.py weboob/tools/application/console.py
This commit is contained in:
commit
cd56abe724
6 changed files with 50 additions and 22 deletions
|
|
@ -140,7 +140,7 @@ class AuMBackend(BaseBackend, ICapMessages, ICapMessagesReply, ICapDating, ICapC
|
||||||
new_baskets = self.browser.nb_new_baskets()
|
new_baskets = self.browser.nb_new_baskets()
|
||||||
if new_baskets:
|
if new_baskets:
|
||||||
ids = self.browser.get_baskets()
|
ids = self.browser.get_baskets()
|
||||||
while new_baskets > 0:
|
while new_baskets > 0 and len(ids) > new_baskets:
|
||||||
new_baskets -= 1
|
new_baskets -= 1
|
||||||
profile = self.browser.get_profile(ids[new_baskets])
|
profile = self.browser.get_profile(ids[new_baskets])
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 set()
|
return set()
|
||||||
|
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}
|
||||||
|
|
|
||||||
|
|
@ -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 set()
|
return set()
|
||||||
|
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}
|
||||||
|
|
|
||||||
|
|
@ -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}
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ from optparse import OptionGroup, OptionParser
|
||||||
|
|
||||||
from weboob.core.ouiboube import Weboob
|
from weboob.core.ouiboube import Weboob
|
||||||
from weboob.tools.config.iconfig import ConfigError
|
from weboob.tools.config.iconfig import ConfigError
|
||||||
|
from weboob.tools.backend import ObjectNotSupported
|
||||||
|
|
||||||
|
|
||||||
__all__ = ['BackendNotFound', 'BaseApplication', 'ConfigError']
|
__all__ = ['BackendNotFound', 'BaseApplication', 'ConfigError']
|
||||||
|
|
@ -185,6 +186,34 @@ class BaseApplication(object):
|
||||||
version = '%s v%s' % (self.APPNAME, self.VERSION)
|
version = '%s v%s' % (self.APPNAME, self.VERSION)
|
||||||
return version
|
return version
|
||||||
|
|
||||||
|
def _complete_obj(self, backend, obj, fields):
|
||||||
|
if fields:
|
||||||
|
try:
|
||||||
|
backend.fillobj(obj, fields)
|
||||||
|
except ObjectNotSupported, e:
|
||||||
|
logging.warning(u'Could not retrieve required fields (%s): %s' % (','.join(fields), e))
|
||||||
|
return obj
|
||||||
|
|
||||||
|
def _complete_iter(self, backend, count, fields, res):
|
||||||
|
for i, sub in enumerate(res):
|
||||||
|
if count and i == count:
|
||||||
|
break
|
||||||
|
sub = self._complete_obj(backend, sub, fields)
|
||||||
|
yield sub
|
||||||
|
|
||||||
|
def complete(self, backend, count, selected_fields, function, *args, **kwargs):
|
||||||
|
res = getattr(backend, function)(*args, **kwargs)
|
||||||
|
|
||||||
|
if self.selected_fields:
|
||||||
|
fields = set(self.selected_fields) - set('*')
|
||||||
|
else:
|
||||||
|
fields = None
|
||||||
|
|
||||||
|
if hasattr(res, '__iter__'):
|
||||||
|
return self._complete_iter(backend, count, fields, res)
|
||||||
|
else:
|
||||||
|
return self._complete_obj(backend, fields, res)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def run(klass, args=None):
|
def run(klass, args=None):
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@ import sys
|
||||||
|
|
||||||
from weboob.core import CallErrors
|
from weboob.core import CallErrors
|
||||||
from weboob.core.backends import BackendsConfig
|
from weboob.core.backends import BackendsConfig
|
||||||
from weboob.tools.backend import ObjectNotSupported
|
|
||||||
|
|
||||||
from .base import BackendNotFound, BaseApplication
|
from .base import BackendNotFound, BaseApplication
|
||||||
from .formatters.load import formatters, load_formatter
|
from .formatters.load import formatters, load_formatter
|
||||||
|
|
@ -278,14 +277,5 @@ 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:
|
return self.weboob.do(self.complete, self.options.count, self.selected_fields, function, *args, **kwargs)
|
||||||
break
|
|
||||||
if self.selected_fields:
|
|
||||||
fields = set(self.selected_fields) - set('*')
|
|
||||||
if fields:
|
|
||||||
try:
|
|
||||||
backend.fillobj(result, fields)
|
|
||||||
except ObjectNotSupported, e:
|
|
||||||
logging.warning(u'Could not retrieve required fields (%s): %s' % (','.join(fields), e))
|
|
||||||
yield backend, result
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue