main.py 1.8 KB
Newer Older
M
Mort Yao 已提交
1
#!/usr/bin/env python
M
Mort Yao 已提交
2

M
Mort Yao 已提交
3
__all__ = ['main', 'any_download', 'any_download_playlist']
M
Mort Yao 已提交
4 5 6

from .downloader import *
from .common import *
M
Mort Yao 已提交
7 8 9 10 11 12 13 14

def url_to_module(url):
    site = r1(r'http://([^/]+)/', url)
    assert site, 'invalid url: ' + url
    
    if site.endswith('.com.cn'):
        site = site[:-3]
    domain = r1(r'(\.[^.]+\.[^.]+)$', site)
M
Mort Yao 已提交
15 16
    if not domain:
        domain = site
M
Mort Yao 已提交
17 18 19 20
    assert domain, 'unsupported url: ' + url
    
    k = r1(r'([^.]+)', domain)
    downloads = {
M
Mort Yao 已提交
21
        '163': netease,
M
Mort Yao 已提交
22
        '56': w56,
M
Mort Yao 已提交
23
        'acfun': acfun,
M
Mort Yao 已提交
24
        'bilibili': bilibili,
M
Mort Yao 已提交
25
        'cntv': cntv,
M
Mort Yao 已提交
26
        'dailymotion': dailymotion,
M
Mort Yao 已提交
27
        'facebook': facebook,
M
Mort Yao 已提交
28
        'google': googleplus,
M
Mort Yao 已提交
29
        'iask': sina,
M
Mort Yao 已提交
30
        'ifeng': ifeng,
31
        'iqiyi': iqiyi,
M
Mort Yao 已提交
32
        'joy': joy,
M
Mort Yao 已提交
33
        'kankanews': bilibili,
M
Mort Yao 已提交
34
        'ku6': ku6,
M
Mort Yao 已提交
35
        'mixcloud': mixcloud,
36
        'nicovideo': nicovideo,
37
        'pptv': pptv,
M
Mort Yao 已提交
38
        'qq': qq,
M
Mort Yao 已提交
39
        'sina': sina,
M
Mort Yao 已提交
40
        'smgbb': bilibili,
M
Mort Yao 已提交
41
        'sohu': sohu,
M
Mort Yao 已提交
42
        'soundcloud': soundcloud,
M
Mort Yao 已提交
43
        'tudou': tudou,
M
Mort Yao 已提交
44
        'tumblr': tumblr,
M
Mort Yao 已提交
45
        'vimeo': vimeo,
G
gongqijian 已提交
46
        'xiami': xiami,
M
Mort Yao 已提交
47 48
        'yinyuetai': yinyuetai,
        'youku': youku,
49
        'youtu': youtube,
M
Mort Yao 已提交
50
        'youtube': youtube,
M
Mort Yao 已提交
51
        #TODO
M
Mort Yao 已提交
52 53 54 55 56 57 58 59 60 61 62 63 64 65
    }
    if k in downloads:
        return downloads[k]
    else:
        raise NotImplementedError(url)

def any_download(url, output_dir = '.', merge = True, info_only = False):
    m = url_to_module(url)
    m.download(url, output_dir = output_dir, merge = merge, info_only = info_only)

def any_download_playlist(url, output_dir = '.', merge = True, info_only = False):
    m = url_to_module(url)
    m.download_playlist(url, output_dir = output_dir, merge = merge, info_only = info_only)

M
Mort Yao 已提交
66
def main():
67
    script_main('you-get', any_download, any_download_playlist)