平时比较喜欢听豆瓣电台的,于是加心了很多歌曲,和很多人一样都想把加心的歌曲下载到本地。毕竟豆瓣电台并不会循环播放你的加心歌曲的,于是搜了一下,发现网上只是通过某些手段获得加心歌曲的列表,然后再用其他的工具下载,这里有很多弊端,比如可能会有歌名一样的情况,而且有些小众歌曲无法或者说很难在网上搜到,于是就写了这个用于直接在豆瓣网上下载加心歌曲的小程序。
注意到加心的歌曲其实都是对应到某个专辑上的,并且我们可以让我们喜欢的专辑开始播放利用这个地址http://douban.fm/?context=channel:0|subject_id:2781176
然后手动的话就可以通过抓包来获取你想要的歌曲下载地址了,把这一系列动作写成程序就可以自动下载所有加心歌曲了。
程序使用了BeautifulSoup,可以在这里下载http://www.crummy.com/software/BeautifulSoup/#Download下载BeautifulSoup.py文件和本程序放在同一目录下即可。
下面是程序:
# coding: utf-8
from BeautifulSoup import BeautifulSoup
import urllib, urllib2, cookielib, re, json, eyeD3, os
num_p = re.compile(r'(\d+)')
songs_dir = 'songs'
base_url = 'http://douban.fm/j/mine/playlist?type=n&h=&channel=0&context=channel:0|subject_id:%s'
invalid = ['/', '\\', ':', '*', '?', '"', '<', '>', '|']
def valid_filename(s):
return filter(lambda x:x not in invalid, s)
def get_songs_information(url):
subject_id = num_p.search(url).groups()[0]
ret = json.loads(urllib2.urlopen(base_url % subject_id, timeout=20).read())
return filter(lambda x:x['album'].endswith(subject_id+'/'), ret['song'])
def download(song):
try:
os.mkdir(songs_dir)
except:
pass
filename = '%s.mp3' % valid_filename(song['title'])
filepath = os.path.join(songs_dir, filename)
if os.path.exists(filepath):
return
urllib.urlretrieve(song['url'], filepath)
picname = song['picture'][1+song['picture'].rindex('/'):]
picpath = os.path.join(songs_dir, picname)
urllib.urlretrieve(song['picture'].replace('mpic','lpic'), picpath)
tag = eyeD3.Tag()
tag.link(filepath)
tag.header.setVersion(eyeD3.ID3_V2_3)
tag.encoding = '\x01'
tag.setTitle(song['title'])
tag.setAlbum(song['albumtitle'])
tag.setArtist(song['artist'])
tag.setDate(song['public_time'])
tag.addImage(3, picpath)
os.remove(picpath)
tag.update()
def html_decode(html):
#return html.replace('&', '&').replace('<', '<').replace('>', '>').replace('"', '"').replace(''', "'")
import HTMLParser
return HTMLParser.HTMLParser().unescape(html)
def get(myurl, cookie):
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookielib.CookieJar()))
urllib2.install_opener(opener)
req = urllib2.Request(myurl)
req.add_header('User-Agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)')
req.add_header('Cookie', cookie)
content = urllib2.urlopen(req, timeout=20).read()
soup = BeautifulSoup(str(content))
for div in soup.findAll('div', {'class' : 'info_wrapper'}):
p = div.find('div', {'class' : 'song_info'}).findAll("p")
sid = div.find('div', {'class' : 'action'})['sid']
try:
print "song:" + html_decode(p[0].string) + "\nsinger:" + html_decode(p[1].string) + "\nalbum:" + html_decode(p[2].a.string)
except:
print "song..."
mark = False
try:
for j in range(10):
songs = get_songs_information(str(p[2].a))
for song in songs:
if sid == song['sid']:
download(song)
mark = True
break
if mark:
break
if mark:
print 'succeed!\n\n'
else: print 'fail!\n\n'
except Exception as e:
print e.message+'\n'
def main():
url = 'http://douban.fm/mine?start=%d&type=liked'
cookie = raw_input('cookie:')
print 'you should enter the pages you want to download'
page0 = int(raw_input('page from:'))
page1 = int(raw_input('page to:'))
for i in range(page1-page0+1):
get(url%((i+page0-1)*15), cookie)
if __name__ == '__main__':
main()
然后程序需要输入你的豆瓣电台的cookie和歌曲的开始和结束的页数(稍微响应下用户需求),当然对于很多人可能不知道如何获得cookie,那下面简单说一下。
利用chrome,进入豆瓣电台的页面然后右键审查元素,切入到network标签,然后再刷新一下网页(不要忘记是在登录状态下操作哦~)
然后左侧选择第一个文件,在header下,如上图就可以看到你的cookie了,ok尽情的下载你的加心歌曲吧!
—————-我是传说中的分割线——————————
在scturtle童鞋的提示下,现在给mp3文件加入了歌手,专辑,封面图片等tag,然后完整的源代码压缩包可以在这里下载
ps:scturtle提醒说firefox下右键-查看页面信息-安全-查看cookie
pss:为了方便广大人民群众特推出exe版本,解压缩后点击里面的doubanfm.exe即可!
—————-再次更新的分割线请读我>_< -------------------------------- 由于豆瓣电台去掉了从某个专辑开始听的功能,所以呢之前的方法基本就是不能用了,但是再次注意到,豆瓣电台的分享,分享出去的链接是从某首歌开始播放的,但是这个需要歌曲的sid和ssid即可,sid很好搞,但是ssid就难了,这里要感谢猫鱼酱他写的豆瓣fm hacker的插件收集了很多的sid和ssid,并且提供了对外使用的接口,利用他的接口,这个脚本就可以再次安心的工作了。在这里下载最新的代码运行即可。
—————-2013年5月21日的再次分割线 ——————————–
猫鱼酱的接口不能用了,于是现在自己写爬虫抓取ssid记录到自己的sae上,脚本可以工作了,但是由于爬虫工作刚刚开始,所以歌曲还不是很全,最新代码依旧在github上在这里下载最新的代码运行即可。
—————-2013年6月10日的再次分割线 ——————————–
脚本再次更新,下载正常多了,而且加了个download_album.py可以下载一个专辑的歌曲,输入专辑的时候像这样输入即可 /subject/2978518/ ,最新代码依旧在github上在这里下载
—————-2013年9月3日的再次分割线 ——————————–
每次都需要和豆瓣斗智斗勇啊。。。现在获取加心列表的难度有点大,所以需要多输入一个user_id_sign,首先进入加心列表页面,按F12,或者右键审查元素,点到console里,输入window.user_id_sign,然后吧值输入到脚本就好了,最后最新代码依旧在github上在这里下载
—————-2013年11月18日的再次分割线 ——————————–
现在增加了kbps的选项,可以选64,128,192,只有买了pro的同学才能下载高品质,没买的同学只能下64的了,最后最新代码依旧在github上在这里下载
—————-2013年12月30日的再次分割线 ——————————–
发现现在window.user_id_sign获取不到,现在是在加心列表页去获取window.SP这个值即可
不错哦
@卜卜口: 嘿嘿,网上的都是去别处下载,还是自己写的直接下载用起来方便啊\(^o^)/
很赞。。
测试可用啊……
不过douban的文件都好小啊……
话说像beautiful soup这种常用的还是放到site-packages比较好吧
&你和超哥好像都要去pycon啊,知道的时候已经卖完票了,信息阻塞啊……
@orbbyrp: 唔,原来你也想去pycon啊
@isnowfy: 对啊,不过去不了了啊
1.S2i70090.lvana Maria Pereira de Souza disse: meu pai esta doente e eu não estou com condições de ir lá .Ele mora em juazeiro . Eu precisaria de passagens ida e volta para juazeiro do norte ida dia 08 e volta dia 14 de julho . que DEUS abençõe. +2Was this answer helpful?
64位不行?
@gsc: 应该和64位没啥关系的
用了下,很赞!感谢作者
输入cookie 和页数后 窗口消失 怎么回事
@2222: 可能是cookie输错了,你仔细按照chrome获得cookie的方式,“cookie:”不要输,只输后面的内容,而且要复制全,你可以再试试
@isnowfy:
Traceback :
File “doubanfm.py”, line 61, in
File “doubanfm.py”, line 58, in main
File “doubanfm.py”, line 22, in get
AttributeError: ‘NoneType’ object has no attribute ‘findAll’
@April4: 这还是cookie没有输入正确的缘故,cookie后面是xxx=”xxx”;yyy=”yyy”;有好多项,一定要全部复制全才可以
弱弱的问,复制完cookie,怎么才能粘贴到你的.exe里面去啊?
@akimelb: 直接在程序窗口的标题栏右键,粘贴就好了
小白..看不懂求教..下载了那个压缩包..然后iu就不知怎么做了
@nian: 解压缩之后运行doubanfm.exe然后会让你输入cookie,和要下载的加心的歌曲的页数,cookie就是上文中说的用chrome获得,输入cookie后回车,之后输入页数页数就是如果你想下载加心列表里第2页至第5页的歌曲就先输2,回车,再输5回车
真是厉害!谢谢
exe版本已经不能下载了,求发送一个,多谢
@youthcould: 不好意思,我的错,链接已经修改,可以下载了
这个主要是有人不会获得cookes,但是也很简单了,这里又另外一个方法:http://blog.satikey.com/?p=194,访问:http://blog.satikey.com/tools/douban 可以获取你的加心歌曲
@satikey: 之所以考虑用cookie而不是用用户名密码的方式,是因为用户名密码方式用一段时间之后可能会要求输入验证码就有点麻烦了
Ca doit se mesurer, en termes de tourisme & d’image de marque de Paris.J’ai jamais mis les pieds à Paris-Plage, mais c’est pas parce que ça ne m&sÃiuo;qnts©resre pas que ça ne fait pas venir du tourisme – qui constitue quand même une bonne partie du PNB…
很不错哦,谢谢! 试了,下了几首歌了。。非常感谢,很棒的python脚本
只支持ID3里全为英文和汉语日语的呢,若是遇到罗马字母就自己关掉了啊,这个解决不了?
@messtoy: 修复了一下,可以再试试
经常出现failed怎么办……?还有请问怎样才能使下载完成之后窗口不要立刻关闭,好让我把文件列表和成功与否复制下来?
谢谢!
@fiammanda: fail的原因一个是网络原因,一个是豆瓣上已经没有这首歌了,你可以尝试重新下载,已经下载过的歌不会重复下载的,对于第二个问题你可以在命令行提示符下,定位到程序所在文件夹,输入“douban.exe”,引号不要输,就可以了
You are truly not alone Rick. The site was created to help those of us who do feel so alone. I know how hard it can be to open up. Just reading the site and sending your thofthguul note is a good step in the right direction! Keep reading the blog. Warmly, Dan
You’re a real deep thrneki. Thanks for sharing.
豆瓣FM不错,这篇文章也真不错~
下载的时候很快,就是不知道下载到哪里去了,原来那个版本不能下载日文和罗马文,现在这个却不知道下载哪里。
@messtoy: 下载到程序所在目录下一个叫songs的文件夹里了
Più che prendercela ti ringraziamo!Come già detto, il vostro parere ci serve per migliorare e sforzarci a venire incontro alle esigenze dei lettori.Siete voi che mantenete in piedi il blog, di conseguenza è voi che dobbiamo aszrrtale.Goacie, e chi ha qualcosa da aggiungere lo faccia pure!
没有songs文件夹,我自己在程序文件夹下新建一个后就全部fail了
@messtoy: 不好意思,豆瓣改版了,脚本暂时失效了,感觉用红心兆赫的方法不太好,还没想到什么好方法
ohno!那下载红心兆赫就没戏了是吧。。。。
@messtoy: 改了下,暂时可以用了。。。
@messtoy: 还是不能用诶,我用原来的方式下载都fail了,而且那些PY文件怎么用
@messtoy: 原来的不能用了,现在exe的版本还没改,只改了py版本的,你需要下载个python2.7来运行最新代码里的douban.py
下载不了了?
@calf: 豆瓣把从某个专辑开始听的功能去掉了,我这个脚本就暂时失效了,悲剧。。。
@isnowfy: 有没有人知道豆瓣MP3路径的规则?
@calf: 应该是没有,豆瓣采取了很多措施来防止你猜测规则,目测是通过sid,ssid,当前时间,再加上个不公开salt之后md5来搞的
@isnowfy: 参考一下这篇文章http://lisie.hdu.edu.cn/passionke/?p=4105,这个工具目前还是可以下载的,但他控制不了要下哪些歌曲http://www.douban.com/note/217186067/
@calf: 只是下载的话很容易,基于红心兆赫做就可以,但是这样十分不优美,得到的列表都是随机的
@isnowfy: 能获取到歌曲的ssid吗?sid是页面上有的。
@calf: ssid得不到,要是能得到的话就可以有办法获得歌曲地址了
@isnowfy: 研究了一天,终于找到方法了,在原来的代码上做了些修改,已经ok了。。。
@calf: orz,求方法>_<
可是windows系统不能安装PY。。。。exe版本什么时候大概能做出来呢
@messtoy: windows下也有python2.7可以安装的
BCL, It is nice to our stolen money is going to a good cause, unlike the stolen spshoorsnip funds, which just went to make sure greaseball Librano troughing pigs get to drive expensive cars.
@isnowfy: 加我Q574633091
贪心下载了python3.3版本的,结果运行不了,乖乖换回了2.7~ 现在正嗷嗷下着呢,赞一个!
@阿潘: 是啊,现在只能用2.7跑,3.*都会出问题的。。。
I think the clutterbug gene runs in fandom. Almost everyone I know is a collector of some kind, and it is terribly hard to let go of books.I might be a different person today if I had not aprtnepiced with Frank Kelly Freas. Loved him to death, but he was a hoarder. Scared the crap out of me to see what a state he was in. I swore I would never let it happen to me.
Superior thinking deortsnmated above. Thanks!
成了!
可用。谢谢啦
lz,可否分享一下ssid的获取方法?
@夜阑: 文章里说了啊,我是用的http://blog.csdn.net/anhulife/ 提供的接口
今天晚上又不行了,在py平台下运行程序时流量总是不跑,唉。。。。亏我还刚新攒了五页的红心,总是出现fail。
@yoyo杰杰克: 是有些fail还是都fail了,要是有些fail的话可以隔几天再试试,不好说是什么情况
you should enter the pages you want to download
page from:1
page to:3
song:Someday
singer:Nickelback
album:The Long Road
song:What Goes Around…/…Comes Around Interlude
singer:Justin Timberlake
album:Futuresex/Lovesounds[Deluxe Edition]
song:Spanish Song Bird
singer:Keren Ann
album:Not Going Anywhere
fail!
song:Peep Game
singer:2Pac
album:Strictly 4 My N.I.G.G.A.Z.
这种情况到底是怎么回事,流量几乎不跑,跑了点又归零了,个别几首跑的都fail了,昨晚就一直fail,今天就不done也不fail总跳过,还是不能下载。
songs文件夹也不自己建立,我自己新建后也没用
@yoyo杰杰克: 我知道你的问题了,是因为你用的不是最新的代码,最新的代码这里下载 https://github.com/isnowfy/download_doubanfm/zipball/master ,友情提示一下,以后不要把cookie随便贴在公共的地方,会让你的帐号变的不安全,我已经把你的cookie在评论里删除掉了
d(^_^o)nice~
不错,试了一下,就是不知道是不是网速的原因,怎么就卡在半路半天没有反应了。。。支持一下!
@sky: 重试了一下,现在倒还可以,虽然速度有点慢
@sky: 应该是网络的问题吧,有什么问题可以重新跑程序,已经下过的歌不会重新下,所以有想重新下的歌要先删掉才行
我用的是评论里贴出的最新代码,可是依然无法建立songs文件夹,虽然命令行界面显示了歌曲信息,也没有fail的提示,可是还是无法下载音乐
@__73__: 也没有显示succeed信息吗,有可能是下载的比较慢,是卡在一首歌曲上,还是显示了很多首,每首是不是既没有succeed提示,也没有fail提示
@__73__: 没有卡顿,每首都非常快地展示一下歌曲信息就过去了,没有fail提示也没有succeed提示
Opiate antagonist drugs can also be exlgicuatinrcy painful when taken by someone who already has drugs in their system. Feel like you should at least mention this.
Your answer lifts the incelligente of the debate.
回上一条评论时又去试了下,这次成功了。。。
@__73__: 能用就好,有时莫名卡住,应该重新运行就可以了
不能用……提示:
File “douban.py”, line 69
print “song:” + html_decode(p[0].string) + “\nsinger:” + html_decode(p[1].st
ring) + “\nalbum:” + html_decode(p[2].a.string)
^
SyntaxError: invalid syntax
@O2: 不要用python3来运行,要用python2.7运行
ubuntu下python版本是2.7.4
输入cookies 和 页码后 咋没反映。也没报错。等了一会就回到当前目录了
@shadow: 如果没有提示下载的歌曲详细信息的话应该是cookie输的有错或者不全
@isnowfy: 确实是,谢谢,现在可以了
能不能直接导出链接然后用迅雷下载?那个比较快,找了两个抓链接的总是抓不全。
http://xiaobude.com/app/douban/
http://www.zyview.cn/doubanfm#
第二个里面有个软件可以把数字还原成歌名,但是没有封面什么的。
@Jeremy: 导出的地址下载也是没有封面的,我是用程序加上的封面,而且感觉把地址一首首复制到迅雷上也略麻烦了些
我用了你给我的最新代码,不成,py v273,不显示失败也不是成功,songs文件夹依旧不自己建立,然后下载5月21那个版本,结果一样。
song:The Way You Move
singer:OutKast
album:Grammy Nominees 2004
song:Old City (Instrumental)
singer:The Shanghai Restoration Project
album:The.Shanghai.Restoration.Project-Instrumentals
song:MCMXXXVII
singer:The Shanghai Restoration Project
album:The.Shanghai.Restoration.Project-Instrumentals
情况就是这样了
@yoyo杰杰克: 以前的版本会有这个问题,21号的那个版本重新下载也是这样的吗
@isnowfy: y一样啊
@yoyo杰杰克: 确定一下是否是最新代码,douban.py是否有ins_ssid这个东西
@isnowfy: def ins_ssid(cookie):
try:
myurl = ‘http://douban.fm/j/mine/playlist?type=n&sid=&pt=0.0&channel=-3&from=mainsite’
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookielib.CookieJar()))
urllib2.install_opener(opener)
req = urllib2.Request(myurl)
req.add_header(‘User-Agent’, ‘Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)’)
req.add_header(‘Cookie’, cookie)
content = urllib2.urlopen(req, timeout=20).read()
for song in json.loads(content)[‘song’]:
urllib.urlopen(‘http://redb.sinaapp.com/ins/doubanfm/%s/%s/’ % (song[‘sid’], song[‘ssid’])).read()
except:
pass
这个?
@isnowfy: 从新又下过一遍,发现还是老样子,只是显示歌曲信息。。。难道时候因为歌曲不全嘛?
@yoyo杰杰克: 最近发现有时候是因为sae不太稳定,你看看 http://redb.sinaapp.com/ 这个地址能正常访问吗
@isnowfy: hello world
This comment is hidden to you.Thanks for the nice Christmas thoughts and the plugin gift.I hope you and your family have a peaceful Christmas season and a wonderful New Year. Let’s hope 2013 is prosperous for us all.Best win;ss! • &sbsp; • h&nbep;This comment is hidden to all users except to its author!
@isnowfy: 现在是有些成功有些失败。的确看起来很不稳定了,因为大多数失败的,近期能不能解决呢?
@yoyo杰杰克: 暂时没什么解决方法,理论上成功的应该还是占大多数吧,可以多尝试重新跑几次
@isnowfy: 重跑几次的结果都是输入cookie和页码之后闪一些不待看清的东西就自动关掉了
@isnowfy: 换一台电脑也是这样。。。
@yoyo杰杰克: “闪一些不待看清的东西就自动关掉了”应该是你输的cookie有问题,之前不是有成功的吗,为什么现在又不行
@isnowfy: 发现成功的只有极个别的诶,cookie不能有错啊。我完整的复制了。
@yoyo杰杰克: 再次更新了,请重新下载最新版本
@isnowfy: 基本全部能下,但是下载页数超过6页就下载不了了,多试几次也是这样,无奈分开下载。
chriss dit :svp j un probleme / apres avoir installer un tweak dont je me rappel pas ;sur iphone 4S non desimlocker . j’ai vue qu’il cherche a trouver le reseau sans carte sim . puis il s&psan;’ebt bloquer . il se connecte en mode dfu et reconnu par itune en mode normal mais il redemarre apres un certain temp . j’ai pas de shsh . et je veux pas le mettre a jour car je veux garder la version 5.1.1 . y’as t’il un moyen et merci
有批量下载加以工具http://www.appinn.com/douban-fm-xigongda-download/
我想自动下载所听的每一首歌。边听边下载。
@Garth: 你应该注意到我程序完成的比那个要早,边听边下的话,找一个叫豆瓣FM-Hacker插件就好了
@isnowfy: 嗯!发现python应用挺广的。
64位win8,输入完结束页后,过了20秒左右,自动退出了,啥都没有。
@Garth: 豆瓣页面有变化,所以改了下代码,现在可以了,现在最新代码运行即可
Hi isnowfy,
我有一点不明白,我们没有登录豆瓣音乐,单单使用cookie可以进入我的私人页面吗?
@Shouhua: 我没有用用户名密码的方式是因为懒的去处理验证码的问题。。。至于cookie,就是你在用户名密码输入之后网站记住你的一种方式,有cookie网站就知道是你就不需要你再次输入用户名密码,所以用cookie也相当于你是以登录状态去访问,所以可以访问你的私人页面
请问为什么我用你的脚本一开始获取不到歌曲列表
@xiaoy: 豆瓣电台那里获得列表又变化了。。。所以现在需要这样,按F12,或者右键审查元素,点到console里,输入window.user_id_sign,然后吧值输入到脚本就好了
@isnowfy: 现在脚本还能用吗,我试着怎么获取不了加心的歌曲列表了,求指导
@smallest: 能用,首先进入加心列表页面,按F12,或者右键审查元素,点到console里,输入window.user_id_sign
下载的音质的很不好,我买了pro 但是下载下来的还是64kps 这是为什么
@Eyck: 对的,豆瓣电台的音质是挺低的,因为我没有买pro,所以我不知道pro的音乐地址是哪里。。。所以用我程序暂时只能下载低音质的,抱歉啊。。。
非常感谢,终于下下来了,(*^__^*) 嘻嘻……对了,歌词可以下么? 0.0
@伊始: 歌词现在还没有做,以后有可能吧。。。
高手啊。果然好用。太感谢了
请问下window.user_id_sign需要怎么填写?
@Charles: 首先用chrome进入你的加心列表那个页面,点F12,点console,输入window.user_id_sign回车,把显示出来的值输入到程序即可
@isnowfy: prereq = urllib2.Request(‘http://douban.fm?start=%sg%sg’ % (sid, ssid))
prereq.add_header(‘User-Agent’, ‘Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)’)
print urllib2.urlopen(prereq, timeout=60).read()
req = urllib2.Request(base_url % kbps)
req.add_header(‘User-Agent’, ‘Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)’)
请问下先获取http://douban.fm?start=%sg%sg’ % (sid, ssid)这个url有什么作用,能对后面的http://douban.fm/j/mine/playlist?type=n&sid=&pt=0.0&channel=0&from=mainsite&kbps=%d这个页面的爬取提供什么帮助吗?
@Charles: 先访问那个,然后再访问playlist的时候playlist的第一首就是那首歌
@isnowfy: 谢谢,请问下这个规律你怎么找到的呀?即
1.http://douban.fm?start=%sg%sg‘ % (sid, ssid)这个页面怎么找到的哦?
这个我找到了,通过豆瓣分享,就能知道url了。
麻烦您看下我的第二个问题,谢谢~~
2.怎么发现了先访问上面的url,在访问playlist的第一首就是要的歌曲信息了?
我在豆瓣fm直接听当前歌曲的时候,查看playlist里面的东西居然不包含当前的听的歌曲,按道理当前听的一首歌访问的url和你上面提到的http://douban.fm?start=%sg%sg’ % (sid, ssid)应该是一样的把?
@Charles: 文章也提到了,豆瓣有个分享当前歌曲的功能,分享出去的链接就是从当前歌开始听
@isnowfy: 现在貌似代码不能用了,获取ssid的时候都是各种提示403.
@Charles: 我看了看,输cookie的时候输入加心列表那个页面的cookie就好了。。。
额。。。为什么我获取的window.user_id_sign是undefined。。。
@Vespa: 额,这个貌似没说清楚,需要在加心列表页才能获得。。。
@isnowfy:
我在win7 32bit上不论在加心列表还是播放页面都无法获取sign id,都是wundefined,chrome上。
win8.1 64位上没有问题。这是什么原因,py平台版本都是一个
@yoyo杰杰克: 现在获取window.SP即可
@isnowfy: win8.1 一样也不行了。。。。。
@Vespa: 啊,发现豆瓣那边又变了。。。于是现在变为获取window.SP这个值了。。。
@isnowfy: SP返回来是两个冒号,试了一下居然还可以。。。但是有个问题就在于,很多下载都是fail了,少部分是success。。。
@Vespa: 我这大部分是success,我的暂时是能下载那些专辑页能加心的那些。。。
楼主威武啊 我看代码去了
请问LZ,window.SP是在红心页查看源码得到的么?我这看到的怎么是这种值。
window.SP = “::”;
@halfcrazy: 是的,直接输就可以
每次碰到有特殊符号或者特殊文字就会fail掉甚至干脆自己关闭,能不能不让程序出错后自动退出。
@yoyo杰杰克: 出错应该只影响当前歌曲,其他歌的下载应该不受影响,自动退出是什么意思
@isnowfy: 就是一般情况下出错的是fail,是个别歌曲并不影响其他的正如你说。但是当我大批量下载比如下载七八页的歌曲时,会出现没有下完程序自动就退出了的情况,往往要对照着寻找已经下到最后一首歌重新下。
@yoyo杰杰克: 没有下完自动退出不清楚什么情况,是后面都失败了吗
@isnowfy: 自动退出,后面几页根本就没有下到啊,连fail 的机会都没有,直接退出了。
We load great logs into our Central Boiler, which heats three houses and a shed. It only works because we live in the midst of dead forests, fallen to pine beetles. We do728#&1n;t split the wood because it swallows the sectioned trees whole. I suggested to C.J. Box that in his next novel, he can dispose of a body in a Central Boiler.
@yoyo杰杰克: 不太清楚自动退出什么情况,只要页数写的大应该都能下载才对
现在window.user_id_sign和window.SP都获取不了。完全无法下载了。
@yoyo杰杰克: 我这个不好用了呢,你可以尝试用我同学的这个 https://github.com/scturtle/doubanFML
куча графики сюжет сраный там