下载“音乐太” 的mv,下载音乐mv,使用于linux, wi


使用于linux, win*没有试过。

由于自己喜欢MV,去网站点击下载很麻烦还需要积分,作为一个程序员自然会用技术的手段为自己服务,所以想写一个脚本下载自己喜欢的视频,在晚上进行下载,下载完成后自动关机。

使用说明:

将自己喜欢的mv地址放在文本中,每个地址占一行。并配置保存的地址,这样就可已下载了,如果有重复的地址并不会重新下载。

如果想实现下载完成后动关机 使用 sudo python download.py && shutdown -h 1

#!/usr/bin/env python#-*-coding:utf-8-*-import urllib2import urllibimport re,osimport timeimport sysdef rec_time(func):    """    记录运行时间    """    def _rec_time(*args):        pre_time = time.time()        f = func(*args)        print 'start time:',pre_time,'\\tend time:',time.time(),'\\ttotal:',time.time()-pre_time        return f    return _rec_timedef urlcallback(a, b, c):    """    callback    """    prec = 100.0*a*b/c    if 100 < prec:        prec = 100    print "%.2f%%" % (prec,)def getsize(path):    """    return file size by kb    """    return str(os.path.getsize(path)/1000)+' kb'@rec_timedef download(url_list, save_path):    """    下载文件,需要传递要下载文件的地址,以及要保存的位置    url_list为list 格式为[{'url':'','name':''},……]    save_path 为要保存文件的地址,如果不存在则创建    """    start_time = time.time()    if not os.path.exists(save_path):        os.mkdir(save_path)    for url in url_list:        name = os.path.join(save_path, url['name'])        if os.path.exists(name):            print>>sys.stdout, '已经存在 ', name, getsize(name), time.time() - start_time            continue        else:            try:                urllib.urlretrieve(url['url'], name)                print>>sys.stdout, '下载完成', name, getsize(name), time.time() - start_time            except:                print>>sys.stdout, 'downlad error'def get_content(url):    """    获取匹配网页的内容    """    req = urllib2.Request(url, headers={'User-Agent':'Magic Brower'})    webpage = urllib2.urlopen(req).read()    return webpagedef get_url(url_list):    """    根据url获取页面中视频的地址    并将结果放在download_url中,并返回    """    download_url = []    for u in url_list:        webpage = get_content(u)        href_com = re.compile("""(http://.*?.flv\\?sc=.*?=\\d+)""")        href_list = href_com.findall(webpage)        name = re.compile("""<meta property="og:title" content="(.*?)"/>""")        file_name = name.findall(webpage)        if href_list and file_name:            if href_list[0].find("""http://""") == 0:                download_url.append({'url':href_list[0],'name':file_name[0]+'.flv'})        else:            print>>sys.stderr, "没有匹配的内容", u    return download_urldef read_url(path):    """    read file for url    """    urls = []    f_handler = open(path, 'r')    for line in f_handler.readlines():        if line != '\\n':            urls.append(line.strip('\\n'))    return urlsif __name__ == "__main__":    url_list = read_url('/home/xfmo/yinyuetai.txt')    for i in range(100):        url_data = get_url(url_list)        if url_data != None:            break;        else:            time.sleep(5)    download(url_data,'/media/disk_01/video')#该片段来自于http://byrx.net

评论关闭