2014-12-02 22:23:23 +06:00
# coding: utf-8
from __future__ import unicode_literals
2017-03-03 22:16:00 +07:00
import re
2014-12-02 22:23:23 +06:00
from . common import InfoExtractor
from . . utils import (
parse_iso8601 ,
int_or_none ,
2015-12-23 20:49:41 +06:00
xpath_attr ,
xpath_element ,
2014-12-02 22:23:23 +06:00
)
class TwentyFourVideoIE ( InfoExtractor ) :
IE_NAME = ' 24video '
2019-05-24 00:38:06 +07:00
_VALID_URL = r ''' (?x)
https ? : / /
( ? P < host >
2020-01-19 22:47:01 +03:00
( ? : ( ? : www | porno ? ) \. ) ? 24 video \.
2020-01-18 15:05:45 +07:00
( ? : net | me | xxx | sexy ? | tube | adult | site | vip )
2019-05-24 00:38:06 +07:00
) /
( ? :
video / ( ? : ( ? : view | xml ) / ) ? |
player / new24_play \. swf \? id =
)
( ? P < id > \d + )
'''
2014-12-02 22:23:23 +06:00
2016-08-13 14:47:51 +07:00
_TESTS = [ {
2020-01-29 00:28:54 +03:00
' url ' : ' https://porn.24video.net/video/2640421-vsya-takaya-gibkaya-i-v-masle ' ,
' md5 ' : ' aa15e14301d90774e6a2c2e6155c203b ' ,
2016-08-13 14:47:51 +07:00
' info_dict ' : {
2020-01-29 00:28:54 +03:00
' id ' : ' 2640421 ' ,
2016-08-13 14:47:51 +07:00
' ext ' : ' mp4 ' ,
2020-01-29 00:28:54 +03:00
' title ' : ' Вся такая гибкая и в масле ' ,
' description ' : ' Lucy Doll вся в масле извивается, как змея, в различных позах. Красотка показывает недосягаемый уровень секса, сворачиваясь в невероятные конфигурации ' ,
' timestamp ' : 1558363989 ,
' upload_date ' : ' 20190520 ' ,
2016-08-13 14:47:51 +07:00
' age_limit ' : 18 ,
2020-01-29 00:28:54 +03:00
}
2016-08-13 14:47:51 +07:00
} , {
' url ' : ' http://www.24video.net/player/new24_play.swf?id=1044982 ' ,
' only_matching ' : True ,
} , {
' url ' : ' http://www.24video.me/video/view/1044982 ' ,
' only_matching ' : True ,
2017-02-22 21:19:52 +07:00
} , {
' url ' : ' http://www.24video.tube/video/view/2363750 ' ,
' only_matching ' : True ,
2019-05-24 00:35:46 +07:00
} , {
' url ' : ' https://www.24video.site/video/view/2640421 ' ,
' only_matching ' : True ,
2019-05-24 00:38:06 +07:00
} , {
' url ' : ' https://porno.24video.net/video/2640421-vsya-takaya-gibkaya-i-v-masle ' ,
' only_matching ' : True ,
2020-01-18 15:05:45 +07:00
} , {
' url ' : ' https://www.24video.vip/video/view/1044982 ' ,
' only_matching ' : True ,
2016-08-13 14:47:51 +07:00
} ]
2014-12-02 22:23:23 +06:00
def _real_extract ( self , url ) :
2017-03-03 22:16:00 +07:00
mobj = re . match ( self . _VALID_URL , url )
video_id = mobj . group ( ' id ' )
host = mobj . group ( ' host ' )
2014-12-02 22:23:23 +06:00
webpage = self . _download_webpage (
2017-03-03 22:16:00 +07:00
' http:// %s /video/view/ %s ' % ( host , video_id ) , video_id )
2014-12-02 22:23:23 +06:00
title = self . _og_search_title ( webpage )
description = self . _html_search_regex (
2016-05-20 08:53:04 +06:00
r ' <(p|span)[^>]+itemprop= " description " [^>]*>(?P<description>[^<]+)</ \ 1> ' ,
webpage , ' description ' , fatal = False , group = ' description ' )
2014-12-02 22:23:23 +06:00
thumbnail = self . _og_search_thumbnail ( webpage )
duration = int_or_none ( self . _og_search_property (
' duration ' , webpage , ' duration ' , fatal = False ) )
timestamp = parse_iso8601 ( self . _search_regex (
2017-09-23 07:42:17 +07:00
r ' <time[^>]+ \ bdatetime= " ([^ " ]+) " [^>]+itemprop= " uploadDate " ' ,
webpage , ' upload date ' , fatal = False ) )
2014-12-02 22:23:23 +06:00
view_count = int_or_none ( self . _html_search_regex (
r ' <span class= " video-views " >( \ d+) просмотр ' ,
webpage , ' view count ' , fatal = False ) )
comment_count = int_or_none ( self . _html_search_regex (
2016-08-13 14:22:47 +07:00
r ' <a[^>]+href= " #tab-comments " [^>]*>( \ d+) комментари ' ,
2017-09-23 07:42:17 +07:00
webpage , ' comment count ' , default = None ) )
2014-12-02 22:23:23 +06:00
2015-12-23 20:42:36 +06:00
# Sets some cookies
self . _download_xml (
2017-03-03 22:16:00 +07:00
r ' http:// %s /video/xml/ %s ?mode=init ' % ( host , video_id ) ,
2015-12-23 20:42:36 +06:00
video_id , ' Downloading init XML ' )
2014-12-02 22:23:23 +06:00
2015-12-23 20:49:41 +06:00
video_xml = self . _download_xml (
2017-03-03 22:16:00 +07:00
' http:// %s /video/xml/ %s ?mode=play ' % ( host , video_id ) ,
2015-12-23 20:49:41 +06:00
video_id , ' Downloading video XML ' )
video = xpath_element ( video_xml , ' .//video ' , ' video ' , fatal = True )
2014-12-02 22:23:23 +06:00
2015-12-23 20:42:36 +06:00
formats = [ {
2015-12-23 20:49:41 +06:00
' url ' : xpath_attr ( video , ' ' , ' url ' , ' video URL ' , fatal = True ) ,
2015-12-23 20:42:36 +06:00
} ]
2014-12-02 22:23:23 +06:00
2015-12-23 20:42:36 +06:00
like_count = int_or_none ( video . get ( ' ratingPlus ' ) )
dislike_count = int_or_none ( video . get ( ' ratingMinus ' ) )
age_limit = 18 if video . get ( ' adult ' ) == ' true ' else 0
2014-12-02 22:23:23 +06:00
return {
' id ' : video_id ,
' title ' : title ,
' description ' : description ,
' thumbnail ' : thumbnail ,
' duration ' : duration ,
' timestamp ' : timestamp ,
' view_count ' : view_count ,
' comment_count ' : comment_count ,
' like_count ' : like_count ,
' dislike_count ' : dislike_count ,
' age_limit ' : age_limit ,
' formats ' : formats ,
}