清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
#encoding:utf8
import urllib2
import urllib
import re
import sys
import os
import time
def Schedule(a,b,c):
per = 100.0 * a * b / c
if per > 100 : per = 100
sys.stdout.write(u"------进度:%.1f%%\r" % per)
sys.stdout.flush()
def createDir():
path = sys.path[0]
new_path = os.path.join(path,'flv')
if not os.path.isdir(new_path):
os.mkdir(new_path)
return new_path
def getList(id):
url = "http://www.yinyuetai.com/insite/get-video-info?flex=true&videoId=%d" % id
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
}
try:
req = urllib2.Request(url, None, headers)
res = urllib2.urlopen(req)
html = res.read()
reg = r"http://\w*?\.yinyuetai\.com/uploads/videos/common/.*?(?=&br)"
pattern=re.compile(reg)
findList = re.findall(pattern,html)
if len(findList) >= 3:
return findList[2]
else:
return findList[0]
except:
print u"读取视频列表失败!"
def download(id,name):
link = getList(id)
if link:
name = name + '.flv'
print u"下载:[%s]" % name
local = createDir()+'/'+name
try:
urllib.urlretrieve(link,local,Schedule)
print u"------下载完成:[%s]\n" % name
except:
print u"下载失败!\n"
#for url in urlList: #下载全部
#name = url.split('/')[-1].split('?')[0]
#name = getFlvName(id)+'-%d.flv' % i
#print u"下载:[%s]" % name
#local = createDir()+'/'+name
#urllib.urlretrieve(url,local,Schedule)
#i += 1
#print u" 下载完成:[%s]" % name
#print ''
else:
print u"没有发现视频!\n"
def getFlvName(id):
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
}
timeout = 5
url = 'http://v.yinyuetai.com/video/%d' % id
request = urllib2.Request(url, None, headers)
response = urllib2.urlopen(request, None, timeout)
responseHtml = response.read()
#print responseHtml
pattern=re.compile(r"<h3\sclass=\"fl\sf18\">(.+)<\/h3>")
findList = re.findall(pattern,responseHtml)
try:
return findList[0].decode('utf8')
except:
return False
def start():
while 1:
id = raw_input('ID:>')
try:
id = int(id)
break
except:
pass
name = getFlvName(id) #读取mv名字
if name == False: #读取失败则输入
print u'获取MV名字失败!输入MV名字'
name = raw_input(u'name:>')
name = name.decode('gbk')
#开始下载
print u"开始下载..."
download(id,name)
start()
if __name__ == '__main__':
start()