diff options
| author | Sergey M․ <dstftw@gmail.com> | 2016-09-18 16:56:40 +0700 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2016-09-18 16:56:40 +0700 | 
| commit | 14ae11efab64baf4994688490474609554c1bf80 (patch) | |
| tree | 73e3f162427c96edceb4b2db76054333ebb13c6c | |
| parent | 190d2027d0b6c785cf789edf6c1bdac2ef650a66 (diff) | |
[vyborymos] Add extractor (Closes #10692)
| -rw-r--r-- | youtube_dl/extractor/extractors.py | 1 | ||||
| -rw-r--r-- | youtube_dl/extractor/vyborymos.py | 55 | 
2 files changed, 56 insertions, 0 deletions
diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index 4baf4cd48..8166fd4f9 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -1069,6 +1069,7 @@ from .vporn import VpornIE  from .vrt import VRTIE  from .vube import VubeIE  from .vuclip import VuClipIE +from .vyborymos import VyboryMosIE  from .walla import WallaIE  from .washingtonpost import (      WashingtonPostIE, diff --git a/youtube_dl/extractor/vyborymos.py b/youtube_dl/extractor/vyborymos.py new file mode 100644 index 000000000..884aecb71 --- /dev/null +++ b/youtube_dl/extractor/vyborymos.py @@ -0,0 +1,55 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor + + +class VyboryMosIE(InfoExtractor): +    _VALID_URL = r'https?://vybory\.mos\.ru/(?:#precinct/|account/channels\?.*?\bstation_id=)(?P<id>\d+)' +    _TESTS = [{ +        'url': 'http://vybory.mos.ru/#precinct/13636', +        'info_dict': { +            'id': '13636', +            'ext': 'mp4', +            'title': 're:^Участковая избирательная комиссия №2231 [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$', +            'description': 'Россия, Москва, улица Введенского, 32А', +            'is_live': True, +        }, +        'params': { +            'skip_download': True, +        } +    }, { +        'url': 'http://vybory.mos.ru/account/channels?station_id=13636', +        'only_matching': True, +    }] + +    def _real_extract(self, url): +        station_id = self._match_id(url) + +        channels = self._download_json( +            'http://vybory.mos.ru/account/channels?station_id=%s' % station_id, +            station_id) + +        formats = [] +        for cam_num, (sid, hosts, name, _) in enumerate(channels, 1): +            for num, host in enumerate(hosts, 1): +                formats.append({ +                    'url': 'http://%s/master.m3u8?sid=%s' % (host, sid), +                    'ext': 'mp4', +                    'format_id': 'camera%d-host%d' % (cam_num, num), +                    'format_note': '%s, %s' % (name, host), +                }) + +        info = self._download_json( +            'http://vybory.mos.ru/json/voting_stations/136/%s.json' % station_id, +            station_id, 'Downloading station info') + +        title = info['name'] + +        return { +            'id': station_id, +            'title': self._live_title(title), +            'description': info.get('address'), +            'is_live': True, +            'formats': formats, +        }  | 
