|
|
@ -1,8 +1,6 @@ |
|
|
|
# coding: utf-8 |
|
|
|
from __future__ import unicode_literals |
|
|
|
|
|
|
|
import calendar |
|
|
|
import datetime |
|
|
|
import re |
|
|
|
|
|
|
|
from .common import InfoExtractor |
|
|
@ -13,20 +11,7 @@ from .common import InfoExtractor |
|
|
|
|
|
|
|
class FM4IE(InfoExtractor): |
|
|
|
IE_DESC = 'fm4.orf.at' |
|
|
|
_VALID_URL = r'http://fm4\.orf\.at/7tage#(?P<date>[0-9]+)/(?P<show>[\w]+)' |
|
|
|
|
|
|
|
def _extract_entry_dict(self, info, title, subtitle): |
|
|
|
result = { |
|
|
|
'id': info['loopStreamId'].replace('.mp3', ''), |
|
|
|
'url': 'http://loopstream01.apa.at/?channel=fm4&id=%s' % info['loopStreamId'], |
|
|
|
'title': title, |
|
|
|
'description': subtitle, |
|
|
|
'duration': (info['end'] - info['start']) / 1000, |
|
|
|
'timestamp': info['start'] / 1000, |
|
|
|
'ext': 'mp3' |
|
|
|
} |
|
|
|
|
|
|
|
return result |
|
|
|
_VALID_URL = r'http://fm4\.orf\.at/7tage/?#(?P<date>[0-9]+)/(?P<show>\w+)' |
|
|
|
|
|
|
|
def _real_extract(self, url): |
|
|
|
mobj = re.match(self._VALID_URL, url) |
|
|
@ -38,7 +23,18 @@ class FM4IE(InfoExtractor): |
|
|
|
show_id |
|
|
|
) |
|
|
|
|
|
|
|
entries = [ self._extract_entry_dict(t, data['title'], data['subtitle']) for t in data['streams']] |
|
|
|
def extract_entry_dict(info, title, subtitle): |
|
|
|
return { |
|
|
|
'id': info['loopStreamId'].replace('.mp3', ''), |
|
|
|
'url': 'http://loopstream01.apa.at/?channel=fm4&id=%s' % info['loopStreamId'], |
|
|
|
'title': title, |
|
|
|
'description': subtitle, |
|
|
|
'duration': (info['end'] - info['start']) / 1000, |
|
|
|
'timestamp': info['start'] / 1000, |
|
|
|
'ext': 'mp3' |
|
|
|
} |
|
|
|
|
|
|
|
entries = [extract_entry_dict(t, data['title'], data['subtitle']) for t in data['streams']] |
|
|
|
|
|
|
|
return { |
|
|
|
'_type': 'playlist', |
|
|
|