implement ICapVideoProvider.iter_search_results()
This commit is contained in:
parent
15625b9fa7
commit
e3ad695346
5 changed files with 54 additions and 4 deletions
|
|
@ -53,6 +53,9 @@ class YoupornBackend(Backend, ICapVideoProvider):
|
|||
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)
|
||||
|
||||
@need_url
|
||||
def iter_page_urls(self, mozaic_url):
|
||||
raise NotImplementedError()
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
"""
|
||||
|
||||
import re
|
||||
import urllib
|
||||
|
||||
from weboob.tools.browser import Browser
|
||||
|
||||
|
|
@ -29,6 +30,7 @@ class YoupornBrowser(Browser):
|
|||
DOMAIN = 'youporn.com'
|
||||
PROTOCOL = 'http'
|
||||
PAGES = {'http://[w\.]*youporn\.com/?': IndexPage,
|
||||
'http://[w\.]*youporn\.com/search.*': IndexPage,
|
||||
'http://[w\.]*youporn\.com/watch/.+': VideoPage,
|
||||
}
|
||||
|
||||
|
|
@ -38,10 +40,19 @@ class YoupornBrowser(Browser):
|
|||
|
||||
def id2url(self, _id):
|
||||
if isinstance(_id, int) or isinstance(_id, (str,unicode)) and _id.isdigit():
|
||||
return 'http://www.youporn.com/watch/%d' % _id
|
||||
return 'http://www.youporn.com/watch/%d' % int(_id)
|
||||
else:
|
||||
return str(_id)
|
||||
|
||||
def iter_search_results(self, pattern):
|
||||
if not pattern:
|
||||
self.home()
|
||||
else:
|
||||
self.location('/search?query=%s' % urllib.quote_plus(pattern))
|
||||
|
||||
assert self.is_on_page(IndexPage)
|
||||
return self.page.iter_videos()
|
||||
|
||||
def get_video(self, _id):
|
||||
self.location(self.id2url(_id))
|
||||
return self.page.video
|
||||
|
|
|
|||
|
|
@ -19,8 +19,17 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
"""
|
||||
|
||||
from .base import PornPage
|
||||
from weboob.capabilities.video import Video
|
||||
|
||||
class IndexPage(PornPage):
|
||||
def loaded(self):
|
||||
if not PornPage.loaded(self):
|
||||
return
|
||||
def iter_videos(self):
|
||||
for h1 in self.document.getiterator('h1'):
|
||||
a = h1.find('a')
|
||||
if a is None:
|
||||
continue
|
||||
|
||||
url = a.attrib['href']
|
||||
_id = url[len('/watch/'):]
|
||||
_id = _id[:_id.find('/')]
|
||||
title = a.text
|
||||
yield Video(int(_id), title)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue