you-get/src/you_get/extractors/qingting.py
2017-09-05 13:41:52 +08:00

51 lines
1.5 KiB
Python

import json
import re
from ..common import get_content, playlist_not_supported, url_size
from ..extractors import VideoExtractor
from ..util import log
__all__ = ['qingting_download_by_url']
class Qingting(VideoExtractor):
# every resource is described by its channel id and program id
# so vid is tuple (chaanel_id, program_id)
name = 'Qingting'
stream_types = [
{'id': '_default'}
]
ep = 'http://i.qingting.fm/wapi/channels/{}/programs/{}'
file_host = 'http://od.qingting.fm/{}'
mobile_pt = r'channels\/(\d+)\/programs/(\d+)'
def prepare(self, **kwargs):
if self.vid is None:
hit = re.search(self.__class__.mobile_pt, self.url)
self.vid = (hit.group(1), hit.group(2))
ep_url = self.__class__.ep.format(self.vid[0], self.vid[1])
meta = json.loads(get_content(ep_url))
if meta['code'] != 0:
log.wtf(meta['message']['errormsg'])
file_path = self.__class__.file_host.format(meta['data']['file_path'])
self.title = meta['data']['name']
duration = str(meta['data']['duration']) + 's'
self.streams['_default'] = {'src': [file_path], 'video_profile': duration, 'container': 'm4a'}
def extract(self, **kwargs):
self.streams['_default']['size'] = url_size(self.streams['_default']['src'][0])
def qingting_download_by_url(url, **kwargs):
Qingting().download_by_url(url, **kwargs)
site_info = 'Qingting'
download = qingting_download_by_url
download_playlist = playlist_not_supported('Qingting')