@ -21,21 +21,38 @@ RAW_MP4_URL = 'http://cdn.riptide-mtvn.com/'
class GameOneIE ( InfoExtractor ) :
class GameOneIE ( InfoExtractor ) :
_VALID_URL = r ' https?://(?:www \ .)?gameone \ .de/tv/(?P<id> \ d+) '
_VALID_URL = r ' https?://(?:www \ .)?gameone \ .de/tv/(?P<id> \ d+) '
_TEST = {
' url ' : ' http://www.gameone.de/tv/288 ' ,
' md5 ' : ' 136656b7fb4c9cb4a8e2d500651c499b ' ,
' info_dict ' : {
' id ' : ' 288 ' ,
' ext ' : ' mp4 ' ,
' title ' : ' Game One - Folge 288 ' ,
' duration ' : 1238 ,
' thumbnail ' : ' http://s3.gameone.de/gameone/assets/video_metas/teaser_images/000/643/636/big/640x360.jpg ' ,
' description ' : ' FIFA-Pressepokal 2014, Star Citizen, Kingdom Come: Deliverance, Project Cars, Schöner Trants Nerdquiz Folge 2 Runde 1 ' ,
' age_limit ' : 16 ,
' upload_date ' : ' 20140513 ' ,
' timestamp ' : 1399980122 ,
_TESTS = [
{
' url ' : ' http://www.gameone.de/tv/288 ' ,
' md5 ' : ' 136656b7fb4c9cb4a8e2d500651c499b ' ,
' info_dict ' : {
' id ' : ' 288 ' ,
' ext ' : ' mp4 ' ,
' title ' : ' Game One - Folge 288 ' ,
' duration ' : 1238 ,
' thumbnail ' : ' http://s3.gameone.de/gameone/assets/video_metas/teaser_images/000/643/636/big/640x360.jpg ' ,
' description ' : ' FIFA-Pressepokal 2014, Star Citizen, Kingdom Come: Deliverance, Project Cars, Schöner Trants Nerdquiz Folge 2 Runde 1 ' ,
' age_limit ' : 16 ,
' upload_date ' : ' 20140513 ' ,
' timestamp ' : 1399980122 ,
}
} ,
{
' url ' : ' http://gameone.de/tv/220 ' ,
' md5 ' : ' 5227ca74c4ae6b5f74c0510a7c48839e ' ,
' info_dict ' : {
' id ' : ' 220 ' ,
' ext ' : ' mp4 ' ,
' upload_date ' : ' 20120918 ' ,
' description ' : ' Jet Set Radio HD, Tekken Tag Tournament 2, Source Filmmaker ' ,
' timestamp ' : 1347971451 ,
' title ' : ' Game One - Folge 220 ' ,
' duration ' : 896 ,
' age_limit ' : 16 ,
}
}
}
}
]
def _real_extract ( self , url ) :
def _real_extract ( self , url ) :
mobj = re . match ( self . _VALID_URL , url )
mobj = re . match ( self . _VALID_URL , url )
@ -66,7 +83,7 @@ class GameOneIE(InfoExtractor):
video_id ,
video_id ,
' Downloading media:content ' )
' Downloading media:content ' )
rendition_items = content . findall ( ' .//rendition ' )
rendition_items = content . findall ( ' .//rendition ' )
duration = int ( rendition_items [ 0 ] . get ( ' duration ' ) )
duration = int ( rendition_items [ 0 ] . get ( ' duration ' ) . split ( ' . ' ) [ 0 ] )
formats = [
formats = [
{
{
' url ' : re . sub ( r ' .*/(r2) ' , RAW_MP4_URL + r ' \ 1 ' , r . find ( ' ./src ' ) . text ) ,
' url ' : re . sub ( r ' .*/(r2) ' , RAW_MP4_URL + r ' \ 1 ' , r . find ( ' ./src ' ) . text ) ,
@ -105,7 +122,8 @@ class GameOnePlaylistIE(InfoExtractor):
webpage = self . _download_webpage ( ' http://www.gameone.de/tv ' , ' TV ' )
webpage = self . _download_webpage ( ' http://www.gameone.de/tv ' , ' TV ' )
max_id = max ( map ( int , re . findall ( r ' <a href= " /tv/( \ d+) " ' , webpage ) ) )
max_id = max ( map ( int , re . findall ( r ' <a href= " /tv/( \ d+) " ' , webpage ) ) )
entries = [
entries = [
self . url_result ( ' http://www.gameone.de/tv/ %d ' % video_id , ' GameOne ' )
self . url_result ( ' http://www.gameone.de/tv/ %d ' %
video_id , ' GameOne ' )
for video_id in range ( max_id , 0 , - 1 ) ]
for video_id in range ( max_id , 0 , - 1 ) ]
return {
return {