@ -1,14 +1,10 @@
# coding: utf-8
# coding: utf-8
from __future__ import unicode_literals
from __future__ import unicode_literals
import re
from .common import InfoExtractor
from .common import InfoExtractor
from ..utils import (
from ..utils import (
int_or_none ,
int_or_none ,
parse_duration ,
str_to_int ,
unified_strdate ,
remove_end ,
)
)
@ -21,8 +17,9 @@ class GameStarIE(InfoExtractor):
' id ' : ' 76110 ' ,
' id ' : ' 76110 ' ,
' ext ' : ' mp4 ' ,
' ext ' : ' mp4 ' ,
' title ' : ' Hobbit 3: Die Schlacht der Fünf Heere - Teaser-Trailer zum dritten Teil ' ,
' title ' : ' Hobbit 3: Die Schlacht der Fünf Heere - Teaser-Trailer zum dritten Teil ' ,
' description ' : ' Der Teaser-Trailer zu Hobbit 3: Die Schlacht der Fünf Heere zeigt einige Szenen aus dem dritten Teil der Saga und kündigt den vollständigen Trailer an. ' ,
' thumbnail ' : ' http://images.gamestar.de/images/idgwpgsgp/bdb/2494525/600x.jpg ' ,
' description ' : ' Der Teaser-Trailer zu Hobbit 3: Die Schlacht der Fünf Heere zeigt einige Szenen aus dem dritten Teil der Saga und kündigt den... ' ,
' thumbnail ' : ' re:^https?://.* \ .jpg$ ' ,
' timestamp ' : 1406542020 ,
' upload_date ' : ' 20140728 ' ,
' upload_date ' : ' 20140728 ' ,
' duration ' : 17
' duration ' : 17
}
}
@ -32,41 +29,27 @@ class GameStarIE(InfoExtractor):
video_id = self . _match_id ( url )
video_id = self . _match_id ( url )
webpage = self . _download_webpage ( url , video_id )
webpage = self . _download_webpage ( url , video_id )
og_title = self . _og_search_title ( webpage )
title = re . sub ( r ' \ s*- Video (bei|-) GameStar \ .de$ ' , ' ' , og_title )
url = ' http://gamestar.de/_misc/videos/portal/getVideoUrl.cfm?premium=0&videoId= ' + video_id
url = ' http://gamestar.de/_misc/videos/portal/getVideoUrl.cfm?premium=0&videoId= ' + video_id
description = self . _og_search_description ( webpage ) . strip ( )
thumbnail = self . _proto_relative_url (
self . _og_search_thumbnail ( webpage ) , scheme = ' http: ' )
upload_date = unified_strdate ( self . _html_search_regex (
r ' <span style= " float:left;font-size:11px; " >Datum: ([0-9]+ \ .[0-9]+ \ .[0-9]+) ' ,
webpage , ' upload_date ' , fatal = False ) )
duration = parse_duration ( self . _html_search_regex (
r ' Länge: ([0-9]+:[0-9]+)</span> ' , webpage , ' duration ' ,
fatal = False ) )
view_count = str_to_int ( self . _html_search_regex (
r ' Zuschauer: ([0-9 \ .]+) ' , webpage ,
' view_count ' , fatal = False ) )
# TODO: there are multiple ld+json objects in the webpage,
# while _search_json_ld finds only the first one
json_ld = self . _parse_json ( self . _search_regex (
r ' (?s)<script[^>]+type=([ " \' ])application/ld \ +json \ 1[^>]*>(?P<json_ld>[^<]+VideoObject[^<]+)</script> ' ,
webpage , ' JSON-LD ' , group = ' json_ld ' ) , video_id )
info_dict = self . _json_ld ( json_ld , video_id )
info_dict [ ' title ' ] = remove_end ( info_dict [ ' title ' ] , ' - GameStar ' )
view_count = json_ld . get ( ' interactionCount ' )
comment_count = int_or_none ( self . _html_search_regex (
comment_count = int_or_none ( self . _html_search_regex (
r ' >Kommentieren \ (([0-9]+) \ )</a >' , webpage , ' comment_count ' ,
r ' ([0-9]+) Kommentare</span> ' , webpage , ' comment_count ' ,
fatal = False ) )
fatal = False ) )
return {
info_dict . update ( {
' id ' : video_id ,
' id ' : video_id ,
' title ' : title ,
' url ' : url ,
' url ' : url ,
' ext ' : ' mp4 ' ,
' ext ' : ' mp4 ' ,
' thumbnail ' : thumbnail ,
' description ' : description ,
' upload_date ' : upload_date ,
' duration ' : duration ,
' view_count ' : view_count ,
' view_count ' : view_count ,
' comment_count ' : comment_count
' comment_count ' : comment_count
}
} )
return info_dict