下载“音乐太” 的mv,下载音乐mv,使用于linux, wi
下载“音乐太” 的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
评论关闭