aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2016-07-19 22:49:38 +0700
committerSergey M․ <dstftw@gmail.com>2016-07-19 22:49:38 +0700
commit05087d1b4c4d7171b6121f700468149c175e2058 (patch)
tree66fc5ebc6ed8be69acf041ad0655de8f92547276
parenta66a73ee905cb1ef9cc63c86d68f5b87cbfe2582 (diff)
[bbc] Improve extraction from sxml playlists
-rw-r--r--youtube_dl/extractor/bbc.py20
1 files changed, 17 insertions, 3 deletions
diff --git a/youtube_dl/extractor/bbc.py b/youtube_dl/extractor/bbc.py
index 4b3cd8c65..e3b14c854 100644
--- a/youtube_dl/extractor/bbc.py
+++ b/youtube_dl/extractor/bbc.py
@@ -589,7 +589,8 @@ class BBCIE(BBCCoUkIE):
'info_dict': {
'id': '150615_telabyad_kentin_cogu',
'ext': 'mp4',
- 'title': "YPG: Tel Abyad'ın tamamı kontrolümüzde",
+ 'title': "Tel Abyad'da IŞİD bayrağı indirildi YPG bayrağı çekildi",
+ 'description': 'md5:33a4805a855c9baf7115fcbde57e7025',
'timestamp': 1434397334,
'upload_date': '20150615',
},
@@ -603,6 +604,7 @@ class BBCIE(BBCCoUkIE):
'id': '150619_video_honduras_militares_hospitales_corrupcion_aw',
'ext': 'mp4',
'title': 'Honduras militariza sus hospitales por nuevo escándalo de corrupción',
+ 'description': 'md5:1525f17448c4ee262b64b8f0c9ce66c8',
'timestamp': 1434713142,
'upload_date': '20150619',
},
@@ -818,8 +820,20 @@ class BBCIE(BBCCoUkIE):
# http://www.bbc.com/turkce/multimedya/2015/10/151010_vid_ankara_patlama_ani)
playlist = data_playable.get('otherSettings', {}).get('playlist', {})
if playlist:
- entries.append(self._extract_from_playlist_sxml(
- playlist.get('progressiveDownloadUrl'), playlist_id, timestamp))
+ for key in ('progressiveDownload', 'streaming'):
+ playlist_url = playlist.get('%sUrl' % key)
+ if not playlist_url:
+ continue
+ try:
+ entries.append(self._extract_from_playlist_sxml(
+ playlist_url, playlist_id, timestamp))
+ except Exception as e:
+ # Some playlist URL may fail with 500, at the same time
+ # the other one may work fine (e.g.
+ # http://www.bbc.com/turkce/haberler/2015/06/150615_telabyad_kentin_cogu)
+ if isinstance(e.cause, compat_HTTPError) and e.cause.code == 500:
+ continue
+ raise
if entries:
return self.playlist_result(entries, playlist_id, playlist_title, playlist_description)