[youporn] rewrite with Browser 2

This commit is contained in:
Alexandre Morignot 2015-02-06 13:25:46 +01:00 committed by Romain Bignon
commit 2d0df1b37a
5 changed files with 59 additions and 170 deletions

View file

@ -18,51 +18,35 @@
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
import datetime
from weboob.browser.pages import HTMLPage
from weboob.browser.elements import ItemElement, ListElement, method
from weboob.browser.filters.html import Attr, CSS
from weboob.browser.filters.standard import CleanText, Duration, Regexp, Type
from weboob.capabilities.base import NotAvailable
from weboob.capabilities.image import BaseImage
from .base import PornPage
from ..video import YoupornVideo
class IndexPage(PornPage):
def iter_videos(self):
for li in self.document.getroot().xpath('//ul/li[@class="videoBox"]'):
a = li.find('div').find('a')
if a is None or a.find('img') is None:
continue
class IndexPage(HTMLPage):
@method
class iter_videos(ListElement):
item_xpath = '//div[@id="content"]/div/div/ul/li/div/a'
thumbnail_url = a.find('img').attrib['src']
class item(ItemElement):
klass = YoupornVideo
a = self.parser.select(li, './/a[@class="videoTitle"]', 1, 'xpath')
def obj_thumbnail(self):
thumbnail_url = Attr('./img', 'src')(self)
thumbnail = BaseImage(thumbnail_url)
thumbnail.url = thumbnail.id
return thumbnail
url = a.attrib['href']
_id = url[len('/watch/'):]
_id = _id[:_id.find('/')]
video = YoupornVideo(int(_id))
video.title = unicode(a.text.strip())
video.thumbnail = BaseImage(thumbnail_url)
video.thumbnail.url = video.thumbnail.id
hours = minutes = seconds = 0
div = li.cssselect('div.duration')
if len(div) > 0:
pack = [int(s) for s in div[0].text.strip().split(':')]
if len(pack) == 3:
hours, minutes, seconds = pack
elif len(pack) == 2:
minutes, seconds = pack
video.duration = datetime.timedelta(hours=hours, minutes=minutes, seconds=seconds)
div = li.cssselect('div.rating')
if div:
video.rating = int(div[0].text.strip('% '))
video.rating_max = 100
video.set_empty_fields(NotAvailable, ('url', 'author'))
yield video
obj_author = NotAvailable
obj_duration = CSS('span.duration') & CleanText() & Duration()
obj_id = Attr('../..', 'data-video-id')
obj_rating = CleanText('./span/i') & Regexp(pattern=r'(..)%') & Type(type=int)
obj_rating_max = 100
obj_title = CleanText('./p')
obj_url = NotAvailable