-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdbfm.py
70 lines (54 loc) · 1.66 KB
/
dbfm.py
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
#!/usr/bin/env python
# coding:utf-8
import json
import urllib
import redis
import config
class DoubanFM:
def __init__(self):
self.r = redis.Redis()
try:
# 获取豆瓣认证相关
self.get_pass()
except:
print "failed to get pass"
exit()
try:
self.get_song_list()
except:
print "failed to get songs list"
exit()
def get_song_list(self):
params = urllib.urlencode({
'app_name': 'radio_desktop_win',
'version': 100,
'user_id': self.r.get('user_id'),
'expire': self.r.get('expire'),
'token': self.r.get('token'),
'type': 'n',
'channel': 0,
})
j_str = urllib.urlopen(
'http://www.douban.com/j/app/radio/people?%s' % params
).read()
j = json.loads(j_str)
song_list = []
for song in j['song']:
song_list.append(song['url'])
for song_url in song_list:
self.r.rpush('song_list', song_url)
def get_pass(self):
params = urllib.urlencode({
'app_name': 'radio_desktop_win',
'version': 100,
'email': config.email,
'password': config.password,
})
j_str = urllib.urlopen(
'http://www.douban.com/j/app/login', params).read()
j = json.loads(j_str)
self.r.set('user_id', j['user_id'])
self.r.set('expire', j['expire'])
self.r.set('token', j['token'])
if __name__ == "__main__":
d = DoubanFM()