diff options
| author | Yen Chi Hsuan <yan12125@gmail.com> | 2016-05-06 02:14:39 +0800 | 
|---|---|---|
| committer | Yen Chi Hsuan <yan12125@gmail.com> | 2016-05-06 02:14:39 +0800 | 
| commit | 6f59aa934bd5842a57d4c27ace0f3735be18ac27 (patch) | |
| tree | 0e5cc77940b0c713c63cd09859b2495fbc4bdc26 | |
| parent | 109db8ea64f9b6001d4854c1689f41ed9eb8136b (diff) | |
[periscope:user] Add new extractor for user pages
Closes #9388
| -rw-r--r-- | youtube_dl/extractor/extractors.py | 5 | ||||
| -rw-r--r-- | youtube_dl/extractor/periscope.py | 37 | 
2 files changed, 41 insertions, 1 deletions
| diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index aac85066f..c9d1422e5 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -561,7 +561,10 @@ from .parliamentliveuk import ParliamentLiveUKIE  from .patreon import PatreonIE  from .pbs import PBSIE  from .people import PeopleIE -from .periscope import PeriscopeIE +from .periscope import ( +    PeriscopeIE, +    PeriscopeUserIE, +)  from .philharmoniedeparis import PhilharmonieDeParisIE  from .phoenix import PhoenixIE  from .photobucket import PhotobucketIE diff --git a/youtube_dl/extractor/periscope.py b/youtube_dl/extractor/periscope.py index 514e9b433..0a4bc761d 100644 --- a/youtube_dl/extractor/periscope.py +++ b/youtube_dl/extractor/periscope.py @@ -7,6 +7,7 @@ from ..utils import parse_iso8601  class PeriscopeIE(InfoExtractor):      IE_DESC = 'Periscope' +    IE_NAME = 'periscope'      _VALID_URL = r'https?://(?:www\.)?periscope\.tv/[^/]+/(?P<id>[^/?#]+)'      # Alive example URLs can be found here http://onperiscope.com/      _TESTS = [{ @@ -79,3 +80,39 @@ class PeriscopeIE(InfoExtractor):              'thumbnails': thumbnails,              'formats': formats,          } + + +class PeriscopeUserIE(InfoExtractor): +    _VALID_URL = r'https?://www\.periscope\.tv/(?P<id>[^/]+)/?$' +    IE_DESC = 'Periscope user videos' +    IE_NAME = 'periscope:user' + +    _TEST = { +        'url': 'https://www.periscope.tv/LularoeHusbandMike/', +        'info_dict': { +            'id': 'LularoeHusbandMike', +            'title': 'LULAROE HUSBAND MIKE', +        }, +        # Periscope only shows videos in the last 24 hours, so it's possible to +        # get 0 videos +        'playlist_mincount': 0, +    } + +    def _real_extract(self, url): +        user_id = self._match_id(url) + +        webpage = self._download_webpage(url, user_id) + +        broadcast_data = self._parse_json(self._html_search_meta( +            'broadcast-data', webpage, default='{}'), user_id) +        username = broadcast_data.get('user', {}).get('display_name') +        user_broadcasts = self._parse_json( +            self._html_search_meta('user-broadcasts', webpage, default='{}'), +            user_id) + +        entries = [ +            self.url_result( +                'https://www.periscope.tv/%s/%s' % (user_id, broadcast['id'])) +            for broadcast in user_broadcasts.get('broadcasts', [])] + +        return self.playlist_result(entries, user_id, username) | 
