Browse Source

[douyutv] Add new extractor

master
bonfy 9 years ago
parent
commit
a172d96292
2 changed files with 60 additions and 0 deletions
  1. 1
      youtube_dl/extractor/__init__.py
  2. 59
      youtube_dl/extractor/douyutv.py

1
youtube_dl/extractor/__init__.py

@ -106,6 +106,7 @@ from .dctp import DctpTvIE
from .deezer import DeezerPlaylistIE
from .dfb import DFBIE
from .dotsub import DotsubIE
from .douyutv import DouyutvIE
from .dreisat import DreiSatIE
from .drbonanza import DRBonanzaIE
from .drtuber import DrTuberIE

59
youtube_dl/extractor/douyutv.py

@ -0,0 +1,59 @@
# coding: utf-8
from __future__ import unicode_literals
from .common import InfoExtractor
from ..utils import (
ExtractorError,
)
class DouyutvIE(InfoExtractor):
_VALID_URL = r'http://(?:www\.)?douyutv\.com/(?P<id>[A-Za-z0-9]+)'
'''
show_status: 1 2
'''
_TEST = {
'url': 'http://www.douyutv.com/iseven',
'info_dict': {
'id': 'iseven',
'title': '清晨醒脑!T-ara根本停不下来!',
'ext': 'flv',
'thumbnail': 're:^https?://.*\.jpg$',
'is_live': True,
}
}
def _real_extract(self, url):
video_id = self._match_id(url)
info_url = 'http://www.douyutv.com/api/client/room/' + video_id
config = self._download_json(info_url, video_id)
error_code = config.get('error')
show_status = config['data'].get('show_status')
if error_code is not 0:
raise ExtractorError('Server reported error %i' % error_code,
expected=True)
if show_status == '2':
raise ExtractorError('The live show has not yet started',
expected=True)
title = config['data'].get('room_name')
rtmp_url = config['data'].get('rtmp_url')
rtmp_live = config['data'].get('rtmp_live')
thumbnail = config['data'].get('room_src')
url = rtmp_url+'/'+rtmp_live
return {
'id': video_id,
'title': title,
'ext':'flv',
'url': url,
'thumbnail': thumbnail,
'is_live': True,
# TODO more properties (see youtube_dl/extractor/common.py)
}
Loading…
Cancel
Save