|
|
@ -1,8 +1,9 @@
|
|
|
|
# coding: utf-8
|
|
|
|
# coding: utf-8
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
|
|
|
|
|
|
|
|
import re
|
|
|
|
|
|
|
|
import itertools
|
|
|
|
import itertools
|
|
|
|
|
|
|
|
import re
|
|
|
|
|
|
|
|
import xml
|
|
|
|
|
|
|
|
|
|
|
|
from .common import InfoExtractor
|
|
|
|
from .common import InfoExtractor
|
|
|
|
from ..utils import (
|
|
|
|
from ..utils import (
|
|
|
@ -17,6 +18,7 @@ from ..utils import (
|
|
|
|
parse_iso8601,
|
|
|
|
parse_iso8601,
|
|
|
|
try_get,
|
|
|
|
try_get,
|
|
|
|
unescapeHTML,
|
|
|
|
unescapeHTML,
|
|
|
|
|
|
|
|
url_or_none,
|
|
|
|
urlencode_postdata,
|
|
|
|
urlencode_postdata,
|
|
|
|
urljoin,
|
|
|
|
urljoin,
|
|
|
|
)
|
|
|
|
)
|
|
|
@ -310,7 +312,13 @@ class BBCCoUkIE(InfoExtractor):
|
|
|
|
def _get_subtitles(self, media, programme_id):
|
|
|
|
def _get_subtitles(self, media, programme_id):
|
|
|
|
subtitles = {}
|
|
|
|
subtitles = {}
|
|
|
|
for connection in self._extract_connections(media):
|
|
|
|
for connection in self._extract_connections(media):
|
|
|
|
captions = self._download_xml(connection.get('href'), programme_id, 'Downloading captions')
|
|
|
|
cc_url = url_or_none(connection.get('href'))
|
|
|
|
|
|
|
|
if not cc_url:
|
|
|
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
captions = self._download_xml(
|
|
|
|
|
|
|
|
cc_url, programme_id, 'Downloading captions', fatal=False)
|
|
|
|
|
|
|
|
if not isinstance(captions, xml.etree.ElementTree.Element):
|
|
|
|
|
|
|
|
continue
|
|
|
|
lang = captions.get('{http://www.w3.org/XML/1998/namespace}lang', 'en')
|
|
|
|
lang = captions.get('{http://www.w3.org/XML/1998/namespace}lang', 'en')
|
|
|
|
subtitles[lang] = [
|
|
|
|
subtitles[lang] = [
|
|
|
|
{
|
|
|
|
{
|
|
|
|