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
+
+
+
+
-