@ -5,6 +5,7 @@ import json
from . common import InfoExtractor
from . common import InfoExtractor
from . . utils import (
from . . utils import (
compat_str ,
ExtractorError ,
ExtractorError ,
xpath_with_ns ,
xpath_with_ns ,
)
)
@ -55,7 +56,7 @@ class ThePlatformIE(InfoExtractor):
body = meta . find ( _x ( ' smil:body ' ) )
body = meta . find ( _x ( ' smil:body ' ) )
f4m_node = body . find ( _x ( ' smil:seq//smil:video ' ) )
f4m_node = body . find ( _x ( ' smil:seq//smil:video ' ) )
if f4m_node is not None :
if f4m_node is not None and ' .f4m ' in f4m_node . attrib [ ' src ' ] :
f4m_url = f4m_node . attrib [ ' src ' ]
f4m_url = f4m_node . attrib [ ' src ' ]
if ' manifest.f4m? ' not in f4m_url :
if ' manifest.f4m? ' not in f4m_url :
f4m_url + = ' ? '
f4m_url + = ' ? '
@ -64,24 +65,35 @@ class ThePlatformIE(InfoExtractor):
f4m_url + = ' &g=UXWGVKRWHFSP&hdcore=3.0.3 '
f4m_url + = ' &g=UXWGVKRWHFSP&hdcore=3.0.3 '
formats = self . _extract_f4m_formats ( f4m_url , video_id )
formats = self . _extract_f4m_formats ( f4m_url , video_id )
else :
else :
base_url = head . find ( _x ( ' smil:meta ' ) ) . attrib [ ' base ' ]
switch = body . find ( _x ( ' smil:switch ' ) )
formats = [ ]
formats = [ ]
for f in switch . findall ( _x ( ' smil:video ' ) ) :
switch = body . find ( _x ( ' smil:switch ' ) )
attr = f . attrib
if switch is not None :
width = int ( attr [ ' width ' ] )
base_url = head . find ( _x ( ' smil:meta ' ) ) . attrib [ ' base ' ]
height = int ( attr [ ' height ' ] )
for f in switch . findall ( _x ( ' smil:video ' ) ) :
vbr = int ( attr [ ' system-bitrate ' ] ) / / 1000
attr = f . attrib
format_id = ' %d x %d _ %d k ' % ( width , height , vbr )
width = int ( attr [ ' width ' ] )
formats . append ( {
height = int ( attr [ ' height ' ] )
' format_id ' : format_id ,
vbr = int ( attr [ ' system-bitrate ' ] ) / / 1000
' url ' : base_url ,
format_id = ' %d x %d _ %d k ' % ( width , height , vbr )
' play_path ' : ' mp4: ' + attr [ ' src ' ] ,
formats . append ( {
' ext ' : ' flv ' ,
' format_id ' : format_id ,
' width ' : width ,
' url ' : base_url ,
' height ' : height ,
' play_path ' : ' mp4: ' + attr [ ' src ' ] ,
' vbr ' : vbr ,
' ext ' : ' flv ' ,
} )
' width ' : width ,
' height ' : height ,
' vbr ' : vbr ,
} )
else :
switch = body . find ( _x ( ' smil:seq//smil:switch ' ) )
for f in switch . findall ( _x ( ' smil:video ' ) ) :
attr = f . attrib
vbr = int ( attr [ ' system-bitrate ' ] ) / / 1000
formats . append ( {
' format_id ' : compat_str ( vbr ) ,
' url ' : attr [ ' src ' ] ,
' vbr ' : vbr ,
} )
self . _sort_formats ( formats )
self . _sort_formats ( formats )
return {
return {