​​​​ 周杰伦出道16年精选 | 苏生不惑的博客

周杰伦出道16年精选

这是一篇旧文。
偶然在微博看到周杰伦出道16年精选73首歌的视频,地址http://weibo.com/tv/v/EcAmx4z11?from=music 顿时让无数人开始怀旧,那是一代人的青春啊,如果要在那么多经典歌曲里找一首配今天的文,那便是《晴天》了。那条微博转发已过万,里面73首歌我几乎可以从头唱到尾,我曾经也是追星一族,哈哈。

看完视频后我就想下载到电脑,可以时不时拿来怀旧下,视频是由秒拍录制的,播放的是一个swf文件,地址http://wscdn.miaopai.com/splayer2.2.0.swf?scid=GcezAtC7sRC6~1S3GXxLkA__&token=&autopause=false&fromweibo=false ,于是开始用python下载视频,源代码:https://gist.github.com/zhiyue/f49c8e951d5339b9b0c763f0ce8e1a6e

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
import urllib.parse
import requests

headers = {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate, sdch",
"Accept-Language": "zh-CN,zh;q=0.8,en;q=0.6",
"Connection": "keep-alive",
"Host": "api.miaopai.com",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)"
" Chrome/50.0.2661.102 Safari/537.36",
"X-Requested-With": "ShockwaveFlash/23.0.0.166"

}

def get_mp4_addr(base_url):
api_url = 'http://api.miaopai.com/m/v2_channel.json'
rs = urllib.parse.urlparse(base_url)
q = urllib.parse.parse_qs(rs.query)
scid = q['scid'][0]
params = {
'fillType': '259',
'scid': scid,
'vend': 'miaopai'
}
headers['Referer'] = base_url
r = requests.get(api_url, params=params, headers=headers)
#获取到的json结构为
"""
{
'status': 200,
'msg': 'OK',
'result': {
'category_info': [

],
'liveStatus': 0,
'otherinfo': {
'othertype': 3,
'weiboId': '2709577332',
'url': 'http: //weibo.com/2709577332',
'weiboNick': 'Happy张江',
'mark1': '@Happy张江',
'mark2': 'weibo.com/2709577332',
'vend': 'miaopai'
},
'ext': {
'h': 358,
'lengthNice': '29: 11',
'location': '',
'owner': {
'icon': 'http: //tp1.sinaimg.cn/2709577332/180/40022299983/0',
'loginName': 'paike_ex1p1ji8gr',
'signed_info': '',
'status': 1086,
'top_num': 0,
'suid': 'P7Z0CNbUcrTke~V0',
'v': True,
'info': '',
'nick': 'Happy张江',
'gold': 0,
'talent_signed': 0,
'talent_v': 1,
'oldIcon': 'http: //tp1.sinaimg.cn/2709577332/180/40022299983/0',
'org_v': 0,
'talent_name': '知名博主'
},
'finishTime': 1476280433842,
'length': 1751,
'finishTimeNice': '10-12',
'ft': '#周杰伦#出道16年精选73首歌,从青涩的小男生到幸福的爸爸,音乐风格也有很多创新,你是否从第一首开始可以跟着哼到最后!',
'status': 30,
't': '#周杰伦#出道16年精选73首歌,从青涩的小男生到幸福的爸爸,音乐风格也有很多创新,你是否从第一首开始可以跟着哼到最后!',
'w': 640
},
'pic': {
'm': '_m.jpg',
's': '_s.jpg',
'base': 'http: //dlqncdn.miaopai.com/stream/GcezAtC7sRC6~1S3GXxLkA__'
},
'type': 16,
'ad': {
'video': '',
'url': '',
'pic': ''
},
'stream': {
'ver': 'miaopai',
'sign': 'ssig=6d6e2196b6d1e33d196e5744fa90979b&time_stamp=1476532658459',
'ios': 'mp4miaopai',
'base': 'http: //gslb.miaopai.com/stream/GcezAtC7sRC6~1S3GXxLkA__.mp4?vend=miaopai&',
'vend': 'miaopai',
'and': 'mp4'
},
'place_top': 0,
'scid': 'GcezAtC7sRC6~1S3GXxLkA__',
'ext2': {
'isPub': 2,
'length': 1751,
'createTimeNice': '10-12',
'createTime': 1476279232807,
'guid': 0,
'vend': 'miaopai'
},
'topicinfo': [
'周杰伦'
]
}
}
"""
msg = r.json()['msg']
result = r.json()['result']
file_name = result['ext']['ft']
if msg == 'OK':
stream_type = result['stream']['and']
base = result['stream']['base']
sign_str = result['stream']['sign']
mp4_addr = '%s?%s&f=/%s.%s' % (base, sign_str, scid, stream_type)
return mp4_addr, '%s.%s' % (file_name, stream_type)

def download_video(mp4_addr, file_name):
r = requests.get(mp4_addr, stream=True)
if r.status_code == 200:
with open(file_name, 'wb') as f:
for chunk in r.iter_content(chunk_size=4096):
if chunk:
f.write(chunk)

if __name__ == '__main__':
#如果想下载其他视频,只要替换这个链接即可
url = 'http://wscdn.miaopai.com/splayer2.2.0.swf?scid=GcezAtC7sRC6~1S3GXxLkA__&token=&autopause=false&fromweibo=false'
mp4_addr, file_name = get_mp4_addr(url)
download_video(mp4_addr, file_name)

最后我把视频上传到百度网盘了,想要的小伙伴自己下载吧,地址http://pan.baidu.com/s/1eRAllJk