diff --git a/weboob/backends/youporn/backend.py b/weboob/backends/youporn/backend.py index fe81188150ec1961449bbb592a3e64fe3af52aa9..03b028610f28c2691ea330122d3a59088f312bde 100644 --- a/weboob/backends/youporn/backend.py +++ b/weboob/backends/youporn/backend.py @@ -53,8 +53,9 @@ def inner(self, *args, **kwargs): def get_video(self, _id): return self.browser.get_video(_id) - def iter_search_results(self, pattern=None): - return self.browser.iter_search_results(pattern) + SORTBY = ['relevance', 'rating', 'views', 'time'] + def iter_search_results(self, pattern=None, sortby=ICapVideoProvider.SEARCH_RELEVANCE): + return self.browser.iter_search_results(pattern, self.SORTBY[sortby]) @need_url def iter_page_urls(self, mozaic_url): diff --git a/weboob/backends/youporn/browser.py b/weboob/backends/youporn/browser.py index 4c2418c988a8d491f247ec9dd4f22b4d61d27b3b..6cca34fd1cd6a75906eb0802ac4da260081ffd63 100644 --- a/weboob/backends/youporn/browser.py +++ b/weboob/backends/youporn/browser.py @@ -43,11 +43,11 @@ def id2url(self, _id): else: return str(_id) - def iter_search_results(self, pattern): + def iter_search_results(self, pattern, sortby): if not pattern: self.home() else: - self.location('/search?query=%s' % urllib.quote_plus(pattern)) + self.location('/search/%s?query=%s' % (sortby, urllib.quote_plus(pattern))) assert self.is_on_page(IndexPage) return self.page.iter_videos() diff --git a/weboob/capabilities/video.py b/weboob/capabilities/video.py index aecaa86ec6bab5de7937d9c9c0c4f1cdd69895fb..ea8723dec8483fc62d4ae7f6e70e7277fe0ebd5e 100644 --- a/weboob/capabilities/video.py +++ b/weboob/capabilities/video.py @@ -41,12 +41,18 @@ class ICapVideoProvider(ICap): def iter_page_urls(self, mozaic_url): raise NotImplementedError() - def iter_search_results(self, pattern=None): + (SEARCH_RELEVANCE, + SEARCH_RATING, + SEARCH_VIEWS, + SEARCH_DATE) = range(4) + + def iter_search_results(self, pattern=None, sortby=SEARCH_RELEVANCE): """ Iter results of a search on a pattern. Note that if pattern is None, it get the latest videos. @param pattern [str] pattern to search on + @param sortby [enum] sort by... """ raise NotImplementedError() diff --git a/weboob/frontends/qvideoob/main_window.py b/weboob/frontends/qvideoob/main_window.py index 042a7107f2d3e627e390c1a3e2c6cbf19d7c1633..82e30113767a84152c3e33a3b4c90688c3ac5764 100644 --- a/weboob/frontends/qvideoob/main_window.py +++ b/weboob/frontends/qvideoob/main_window.py @@ -68,7 +68,7 @@ def search(self): for backend in self.weboob.iter_backends(): if backend_name and backend.name != backend_name: continue - for video in backend.iter_search_results(pattern): + for video in backend.iter_search_results(pattern, self.ui.sortbyEdit.currentIndex()): minivideo = MiniVideo(backend, video) self.ui.scrollAreaContent.layout().addWidget(minivideo) self.minivideos.append(minivideo) diff --git a/weboob/frontends/qvideoob/ui/main_window.ui b/weboob/frontends/qvideoob/ui/main_window.ui index bae534a4254cc1a67c7439b6bcfdcd1084a98a0f..8be8a9aa4833fc2899303cf81c0caecc49e950fb 100644 --- a/weboob/frontends/qvideoob/ui/main_window.ui +++ b/weboob/frontends/qvideoob/ui/main_window.ui @@ -34,6 +34,36 @@ + + + + + 0 + 0 + + + + + Relevance + + + + + Rating + + + + + Duration + + + + + Date + + + +