@ -5,10 +5,11 @@ from __future__ import unicode_literals
import re
import re
from . common import InfoExtractor
from . common import InfoExtractor
from . . utils import parse_duration
class RadioBremenIE ( InfoExtractor ) :
class RadioBremenIE ( InfoExtractor ) :
_VALID_URL = r ' http?://(?:www \ .)?radiobremen \ .de/mediathek/( index\ .html)? \ ?id=(?P< video_ id>[0-9]+)'
_VALID_URL = r ' http?://(?:www \ .)?radiobremen \ .de/mediathek/( ?: index\ .html)? \ ?id=(?P< id>[0-9]+)'
IE_NAME = ' radiobremen '
IE_NAME = ' radiobremen '
_TEST = {
_TEST = {
@ -16,6 +17,7 @@ class RadioBremenIE(InfoExtractor):
' info_dict ' : {
' info_dict ' : {
' id ' : ' 114720 ' ,
' id ' : ' 114720 ' ,
' ext ' : ' mp4 ' ,
' ext ' : ' mp4 ' ,
' duration ' : 1685 ,
' width ' : 512 ,
' width ' : 512 ,
' title ' : ' buten un binnen vom 22. Dezember ' ,
' title ' : ' buten un binnen vom 22. Dezember ' ,
' description ' : ' Unter anderem mit diesen Themen: 45 Flüchtlinge sind in Worpswede angekommen +++ Freies Internet für alle: Bremer arbeiten an einem flächendeckenden W-Lan-Netzwerk +++ Aktivisten kämpfen für das Unibad +++ So war das Wetter 2014 +++ ' ,
' description ' : ' Unter anderem mit diesen Themen: 45 Flüchtlinge sind in Worpswede angekommen +++ Freies Internet für alle: Bremer arbeiten an einem flächendeckenden W-Lan-Netzwerk +++ Aktivisten kämpfen für das Unibad +++ So war das Wetter 2014 +++ ' ,
@ -23,32 +25,32 @@ class RadioBremenIE(InfoExtractor):
}
}
def _real_extract ( self , url ) :
def _real_extract ( self , url ) :
mobj = re . match ( self . _VALID_URL , url )
video_id = self . _match_id ( url )
video_id = mobj . group ( ' video_id ' )
meta_url = " http://www.radiobremen.de/apps/php/mediathek/metadaten.php?id= %s " % video_id
meta_url = " http://www.radiobremen.de/apps/php/mediathek/metadaten.php?id= %s " % video_id
meta_doc = self . _download_webpage ( meta_url , video_id , ' Downloading metadata ' )
meta_doc = self . _download_webpage ( meta_url , video_id , ' Downloading metadata ' )
title = self . _html_search_regex ( " <h1.*>(?P<title>.+)</h1> " , meta_doc , " title " )
title = self . _html_search_regex ( " <h1.*>(?P<title>.+)</h1> " , meta_doc , " title " )
description = self . _html_search_regex ( " <p>(?P<description>.*)</p> " , meta_doc , " description " )
description = self . _html_search_regex ( " <p>(?P<description>.*)</p> " , meta_doc , " description " )
duration = self . _html_search_regex ( " Länge:</td> \ s+<td>(?P<duration>[0-9]+:[0-9]+)</td> " , meta_doc , " duration " )
duration = parse_duration (
self . _html_search_regex ( " Länge:</td> \ s+<td>(?P<duration>[0-9]+:[0-9]+)</td> " , meta_doc , " duration " ) )
page_doc = self . _download_webpage ( url , video_id , ' Downloading video information ' )
page_doc = self . _download_webpage ( url , video_id , ' Downloading video information ' )
pattern = " ardformatplayerclassic \ ( \' playerbereich \' , \' (?P<width>[0-9]+) \' , \' .* \' , \' (?P<video_id>[0-9]+) \' , \' (?P<secret>[0-9]+) \' , \' (?P<thumbnail>.+) \' , \' \' \ ) "
pattern = " ardformatplayerclassic \ ( \' playerbereich \' , \' (?P<width>[0-9]+) \' , \' .* \' , \' (?P<video_id>[0-9]+) \' , \' (?P<secret>[0-9]+) \' , \' (?P<thumbnail>.+) \' , \' \' \ ) "
mobj = re . search ( pattern , page_doc )
mobj = re . search ( pattern , page_doc )
width , video_id , secret , thumbnail = int ( mobj . group ( " width " ) ) , mobj . group ( " video_id " ) , mobj . group ( " secret " ) , mobj . group ( " thumbnail " )
video_url = (
video_url = " http://dl-ondemand.radiobremen.de/mediabase/ {:} / {:} _ {:} _ {:} .mp4 " . format ( video_id , video_id , secret , width )
" http://dl-ondemand.radiobremen.de/mediabase/ %s / %s _ %s _ %s .mp4 " %
( video_id , video_id , mobj . group ( " secret " ) , mobj . group ( ' width ' ) ) )
formats = [ {
' url ' : video_url ,
' ext ' : ' mp4 ' ,
' width ' : int ( mobj . group ( " width " ) ) ,
} ]
return {
return {
' id ' : video_id ,
' id ' : video_id ,
' title ' : title ,
' title ' : title ,
' description ' : description ,
' description ' : description ,
' duration ' : duration ,
' duration ' : duration ,
' formats ' : [
' formats ' : formats ,
{ ' url ' : video_url ,
' thumbnail ' : mobj . group ( ' thumbnail ' ) ,
' ext ' : ' mp4 ' ,
' width ' : width ,
' protocol ' : ' http '
}
] ,
' thumbnail ' : thumbnail ,
}
}