2018-09-06 15:41:07 +02:00
from __future__ import unicode_literals
from . common import InfoExtractor
2018-09-11 11:26:48 +02:00
from . . compat import compat_str
from . . utils import urljoin
2018-09-06 15:41:07 +02:00
class WWEIE ( InfoExtractor ) :
_VALID_URL = r ' https?://(?: \ w+ \ .)?wwe.com/(?:.*/)?videos/(?P<id>[ \ w-]+) '
_TESTS = [ {
' url ' : ' https://www.wwe.com/videos/daniel-bryan-vs-andrade-cien-almas-smackdown-live-sept-4-2018 ' ,
2018-09-11 11:26:48 +02:00
' md5 ' : ' 30cbc824b51f4010ea885bfcaec76972 ' ,
2018-09-06 15:41:07 +02:00
' info_dict ' : {
2018-09-11 11:26:48 +02:00
' id ' : ' 40048199 ' ,
2018-09-06 15:41:07 +02:00
' ext ' : ' mp4 ' ,
' title ' : ' Daniel Bryan vs. Andrade " Cien " Almas: SmackDown LIVE, Sept. 4, 2018 ' ,
' description ' : ' Still fuming after he and his wife Brie Bella were attacked by The Miz and Maryse last week, Daniel Bryan takes care of some unfinished business with Andrade " Cien " Almas. ' ,
2018-09-11 11:26:48 +02:00
' thumbnail ' : r ' re:^https?://.* \ .jpg$ ' ,
2018-09-06 15:41:07 +02:00
}
} , {
' url ' : ' https://de.wwe.com/videos/gran-metalik-vs-tony-nese-wwe-205-live-sept-4-2018 ' ,
' only_matching ' : True ,
} ]
def _real_extract ( self , url ) :
display_id = self . _match_id ( url )
webpage = self . _download_webpage ( url , display_id )
drupal_settings = self . _parse_json (
self . _html_search_regex (
r ' (?s)Drupal \ .settings \ s*, \ s*( { .+?}) \ ); ' ,
webpage , ' drupal settings ' ) ,
display_id )
player = drupal_settings [ ' WWEVideoLanding ' ] [ ' initialVideo ' ]
metadata = player [ ' playlist ' ] [ 0 ]
2018-09-11 11:26:48 +02:00
id = compat_str ( metadata [ ' nid ' ] )
2018-09-08 11:52:54 +02:00
title = metadata . get ( ' title ' ) or self . _og_search_title ( webpage )
2018-09-11 11:26:48 +02:00
video_url = ' https: ' + metadata [ ' file ' ]
2018-09-08 11:52:54 +02:00
thumbnail = None
if metadata . get ( ' image ' ) is not None :
2018-09-11 11:26:48 +02:00
thumbnail = urljoin ( url , metadata . get ( ' image ' ) )
2018-09-06 15:41:07 +02:00
description = metadata . get ( ' description ' )
formats = self . _extract_m3u8_formats ( video_url , id , ' mp4 ' )
return {
' id ' : id ,
' title ' : title ,
' formats ' : formats ,
' url ' : video_url ,
' display_id ' : display_id ,
' thumbnail ' : thumbnail ,
' description ' : description ,
}