[vimeo] fix album extraction (issue #15704)
This commit is contained in:
parent
6202f08e1b
commit
a58f5b9c83
@ -27,6 +27,7 @@ from ..utils import (
|
|||||||
urlencode_postdata,
|
urlencode_postdata,
|
||||||
unescapeHTML,
|
unescapeHTML,
|
||||||
parse_filesize,
|
parse_filesize,
|
||||||
|
xpath_text,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -833,9 +834,16 @@ class VimeoAlbumIE(VimeoChannelIE):
|
|||||||
'url': 'https://vimeo.com/album/2632481',
|
'url': 'https://vimeo.com/album/2632481',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
'id': '2632481',
|
'id': '2632481',
|
||||||
'title': 'Staff Favorites: November 2013',
|
'title': 'Vimeo / Staff Favorites: November 2013',
|
||||||
},
|
},
|
||||||
'playlist_mincount': 13,
|
'playlist_mincount': 13,
|
||||||
|
}, {
|
||||||
|
'url': 'https://vimeo.com/album/4786409',
|
||||||
|
'info_dict': {
|
||||||
|
'id': '4786409',
|
||||||
|
'title': 'Vimeo / NSSpain 2017',
|
||||||
|
},
|
||||||
|
'playlist_mincount': 25,
|
||||||
}, {
|
}, {
|
||||||
'note': 'Password-protected album',
|
'note': 'Password-protected album',
|
||||||
'url': 'https://vimeo.com/album/3253534',
|
'url': 'https://vimeo.com/album/3253534',
|
||||||
@ -861,7 +869,34 @@ class VimeoAlbumIE(VimeoChannelIE):
|
|||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
album_id = self._match_id(url)
|
album_id = self._match_id(url)
|
||||||
return self._extract_videos(album_id, 'https://vimeo.com/album/%s' % album_id)
|
rss_url = url + '/rss'
|
||||||
|
|
||||||
|
doc = self._download_xml(rss_url, album_id, fatal=True)
|
||||||
|
|
||||||
|
playlist_title = doc.find('./channel/title').text
|
||||||
|
playlist_desc_el = doc.find('./channel/description')
|
||||||
|
playlist_desc = None if playlist_desc_el is None else playlist_desc_el.text
|
||||||
|
|
||||||
|
entries = []
|
||||||
|
for it in doc.findall('./channel/item'):
|
||||||
|
next_title = it.find('title').text
|
||||||
|
next_url = xpath_text(it, 'link', fatal=False)
|
||||||
|
if not next_url:
|
||||||
|
continue
|
||||||
|
|
||||||
|
entries.append({
|
||||||
|
'_type': 'url_transparent',
|
||||||
|
'url': next_url,
|
||||||
|
'title': next_title,
|
||||||
|
})
|
||||||
|
|
||||||
|
return {
|
||||||
|
'_type': 'playlist',
|
||||||
|
'id': album_id,
|
||||||
|
'title': playlist_title,
|
||||||
|
'description': playlist_desc,
|
||||||
|
'entries': entries,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class VimeoGroupsIE(VimeoAlbumIE):
|
class VimeoGroupsIE(VimeoAlbumIE):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user