mirror of
https://github.com/soimort/you-get.git
synced 2025-02-03 16:53:56 +03:00
51 lines
1.5 KiB
Python
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')
|