mirror of
https://codeberg.org/polarisfm/youtube-dl
synced 2024-11-26 18:34:32 +01:00
[radiocloud.jp] Add new extractor
This commit is contained in:
parent
d116918993
commit
5628541637
@ -865,6 +865,7 @@ from .radiocanada import (
|
|||||||
RadioCanadaIE,
|
RadioCanadaIE,
|
||||||
RadioCanadaAudioVideoIE,
|
RadioCanadaAudioVideoIE,
|
||||||
)
|
)
|
||||||
|
from .radiocloud import RadioCloudIE
|
||||||
from .radiode import RadioDeIE
|
from .radiode import RadioDeIE
|
||||||
from .radiojavan import RadioJavanIE
|
from .radiojavan import RadioJavanIE
|
||||||
from .radiobremen import RadioBremenIE
|
from .radiobremen import RadioBremenIE
|
||||||
|
70
youtube_dl/extractor/radiocloud.py
Normal file
70
youtube_dl/extractor/radiocloud.py
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
import re
|
||||||
|
|
||||||
|
from .common import InfoExtractor
|
||||||
|
|
||||||
|
from ..utils import (
|
||||||
|
ExtractorError,
|
||||||
|
extract_attributes,
|
||||||
|
get_elements_by_class,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class RadioCloudIE(InfoExtractor):
|
||||||
|
_VALID_URL = r'https?://(?:www\.)?radiocloud\.jp/archive/.*?content_id=(?P<id>[0-9]+)'
|
||||||
|
_TEST = {
|
||||||
|
'url': 'https://radiocloud.jp/archive/so?content_id=13165',
|
||||||
|
'md5': '6f97afc008931d72c21db1331dbdce94',
|
||||||
|
'info_dict': {
|
||||||
|
'id': '13165',
|
||||||
|
'ext': 'm4a',
|
||||||
|
'title': '毒蝮三太夫のミュージックプレゼント:千葉県市川市鬼高『お酒の専門店「酒壱番」』編',
|
||||||
|
'description': '1/16(月)放送(11:20~11:40頃)から。訪問先は、千葉県市川市鬼高3-15−5『お酒の専門店「酒壱番」』さん。47年続く国民的中継番組のトーク部分のみをお楽しみください。',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def _real_extract(self, url):
|
||||||
|
video_id = self._match_id(url)
|
||||||
|
webpage = self._download_webpage(url, video_id)
|
||||||
|
|
||||||
|
def get_input_by_name(html, name):
|
||||||
|
for e in re.finditer(r'<input.*?>', html):
|
||||||
|
a = extract_attributes(e.group())
|
||||||
|
if a.get('name') == name:
|
||||||
|
return a.get('value')
|
||||||
|
return None
|
||||||
|
|
||||||
|
element = None
|
||||||
|
for e in get_elements_by_class('contents_box', webpage):
|
||||||
|
if get_input_by_name(e, 'content_id') == video_id:
|
||||||
|
element = e
|
||||||
|
break
|
||||||
|
|
||||||
|
if not element:
|
||||||
|
raise ExtractorError('Could not find details of id %s' % video_id)
|
||||||
|
|
||||||
|
file_url = get_input_by_name(element, 'file_url')
|
||||||
|
if not file_url:
|
||||||
|
raise ExtractorError('Could not find player URL')
|
||||||
|
file_url = 'https:' + file_url
|
||||||
|
|
||||||
|
title = get_input_by_name(element, 'title')
|
||||||
|
if not title:
|
||||||
|
title = self._html_search_regex(r'<span>(.+?)</span>', element, 'title')
|
||||||
|
description = self._html_search_regex(r'<div>(.+?)</div>', element,
|
||||||
|
'description', fatal=False)
|
||||||
|
|
||||||
|
webpage = self._download_webpage(file_url, video_id,
|
||||||
|
headers={'Referer': url},
|
||||||
|
note='Downloading player',
|
||||||
|
errnote='Unable to download player')
|
||||||
|
|
||||||
|
file_url = self._search_regex(r'var\s+source\s*=\s*"(.+?)"', webpage, 'url')
|
||||||
|
|
||||||
|
return {
|
||||||
|
'id': video_id,
|
||||||
|
'title': title,
|
||||||
|
'description': description,
|
||||||
|
'url': file_url
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user