diff options
| author | Alex Seiler <seileralex@gmail.com> | 2017-01-28 17:52:07 +0100 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2017-01-29 20:40:19 +0700 | 
| commit | f13da8af289d7d9365e34ef705a53ac62aa3b570 (patch) | |
| tree | 86b237419f2ffcd530c0be0f7595c38148cc3c5c | |
| parent | e228616c6e73561f0c6d32d6b681bbba321c06aa (diff) | |
[azmedien:playlist] Add support for topic and themen playlists
| -rw-r--r-- | youtube_dl/extractor/azmedien.py | 39 | ||||
| -rw-r--r-- | youtube_dl/extractor/extractors.py | 2 | 
2 files changed, 34 insertions, 7 deletions
diff --git a/youtube_dl/extractor/azmedien.py b/youtube_dl/extractor/azmedien.py index a89f71c20..cbc3ed564 100644 --- a/youtube_dl/extractor/azmedien.py +++ b/youtube_dl/extractor/azmedien.py @@ -5,8 +5,9 @@ import re  from .common import InfoExtractor  from .kaltura import KalturaIE  from ..utils import ( -    get_element_by_class, +    get_element_by_id,      strip_or_none, +    urljoin,  ) @@ -83,8 +84,8 @@ class AZMedienIE(AZMedienBaseIE):          return self._kaltura_video(partner_id, entry_id) -class AZMedienShowIE(AZMedienBaseIE): -    IE_DESC = 'AZ Medien shows' +class AZMedienPlaylistIE(AZMedienBaseIE): +    IE_DESC = 'AZ Medien playlists'      _VALID_URL = r'''(?x)                      https?://                          (?:www\.)? @@ -93,7 +94,12 @@ class AZMedienShowIE(AZMedienBaseIE):                              telebaern\.tv|                              telem1\.ch                          )/ -                        (?P<id>[0-9]+-show-[^/\#]+ +                        (?P<id>[0-9]+- +                            (?: +                                show| +                                topic| +                                themen +                            )-[^/\#]+                              (?:                                  /[0-9]+-episode-[^/\#]+                              )? @@ -109,6 +115,18 @@ class AZMedienShowIE(AZMedienBaseIE):          },          'playlist_count': 9,      }, { +        # URL with 'themen' +        'url': 'http://www.telem1.ch/258-themen-tele-m1-classics', +        'info_dict': { +            'id': '258-themen-tele-m1-classics', +            'title': 'Tele M1 Classics', +        }, +        'playlist_mincount': 15, +    }, { +        # URL with 'topic', contains nested playlists +        'url': 'http://www.telezueri.ch/219-topic-aera-trump-hat-offiziell-begonnen', +        'only_matching': True, +    }, {          # URL with 'show' only          'url': 'http://www.telezueri.ch/86-show-talktaeglich',          'only_matching': True @@ -136,10 +154,19 @@ class AZMedienShowIE(AZMedienBaseIE):                  for m in re.finditer(                      r'<a[^>]+data-real=(["\'])(?P<url>http.+?)\1', webpage)] +        if not entries: +            entries = [ +                # May contain nested playlists (e.g. [1]) thus no explicit +                # ie_key +                # 1. http://www.telezueri.ch/219-topic-aera-trump-hat-offiziell-begonnen) +                self.url_result(urljoin(url, m.group('url'))) +                for m in re.finditer( +                    r'<a[^>]+name=[^>]+href=(["\'])(?P<url>/.+?)\1', webpage)] +          title = self._search_regex(              r'episodeShareTitle\s*=\s*(["\'])(?P<title>(?:(?!\1).)+)\1',              webpage, 'title', -            default=strip_or_none(get_element_by_class( -                'title-block-cell', webpage)), group='title') +            default=strip_or_none(get_element_by_id( +                'video-title', webpage)), group='title')          return self.playlist_result(entries, show_id, title) diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index 086a2296d..2590b5e1b 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -82,7 +82,7 @@ from .awaan import (  )  from .azmedien import (      AZMedienIE, -    AZMedienShowIE, +    AZMedienPlaylistIE,  )  from .azubu import AzubuIE, AzubuLiveIE  from .baidu import BaiduVideoIE  | 
