跳至主要内容

歌曲地址解析器 yosong

项目开源地址:音乐消除国界,下载废除权限:歌曲地址解析器 yosong 感谢作者

那么,现在情况是这个样子的,我又想下歌了。在很久很久以前,百度音乐上的歌曲存有 128kbps、192kbps、320kbps 三种品质的,当时注册一个普通帐号就可以下载任意品质,在懒惰魔的诱惑下,我写了个叫 biabiamiamia 的程序,帮我下载指定歌手的全部歌曲
,那时候,喜欢的歌手基本都被拖到硬盘上了。最近,广播里放了几首新人的歌,邓紫棋版的“黑腹美”很是喜欢,好吧,把 biabiamiamia 翻出来看下还能跑不?我勒个去,完全用不起啊。是当个丑男还是当个懒人呢?好吧,一懒到底,必须得有个程序帮我批量下载。
现在的百度音乐存有普通品质(128kbps)、高品质(192kbps)、超高品质(320kbps)、无损品质(flac 800+kbps)四种,其中,320 的需要 VIP 帐号才能下载,而 flac 的甚至需要白金 VIP 才能下载,程序必须首先解决帐号权限的问题;另外,之前监管不那么严格的时候,百度音乐提供大量歌曲免费供大家下载,后来百度开始收费,那么相应百度自己需要先购买这些歌曲的版权,对于百度买了版权的歌曲,它当然可以通过收费会员机制盈利,但,未购买版权的歌曲,即便服务器上有现成的资源,也不得提供给会员下载,所以,程序还得解决这类因百度自身版权而无法下载的问题,比如,王菲-《醇经典》-誓言(http://music.baidu.com/song/s/75053f8340854da16d5 )。
耽误了我一周乒乓球时光,总算找到了可靠方法,剩下的就是编码实现 yosong,除了上述两个功能外,顺带实现了其它几项,基本上,现在的 yosong 具备了以下能力:
0)绕开白金收费会员才能下载无损品质歌曲的限制;
1)绕开百度自身版权问题歌曲而无法下载的限制(即便白金收费会员从官方渠道也无该功能);
2)绕开非大陆之外区域无法下载的限制(即便白金收费会员从官方渠道也无该功能);
3)一键式全站歌曲下载(即便白金收费会员从官方渠道也无该功能);
4)绕开高频访问出现验证码的限制。
虽然我用了"下载"这个词,但 yosong 并不会为你下载任何歌曲,严格地说,它是个百度歌曲最终下载地址解析工具,就我而言,我会先让 yosong 帮我解析出指定歌手的所有歌曲的 320 码率最终下载地址,然后以专辑为单位丢给迅雷帮我批量下载。
##源码安装
####‘linux’ 0)唯一依赖 libcurl,请自行安装;
1)代码采用 C++11 编写,gcc 版本不低于 4.7.1。
2)命令行下运行:
$ cd yosong/build/
$ cmake .
$ make && sudo make install
####‘osX’ 先将 build/CMakeLists.txt 中的
TARGET_LINK_LIBRARIES(yosong curl pthread)
替换成
TARGET_LINK_LIBRARIES(yosong curl pthread iconv)
其他同 linux 构建方法。
##命令行选项
yosong 是一个命令行程序,要用好它,你得先了解几个命令行选项的常识:
0)--option 'argc',其中,--option 称之为命令行选项,argc 为命令行参数;
1)某些命令行参数中可能含有对 shell 有特殊含义的字符(如,后台运行的 &、用于分割符的空格),为避免 shell 误解,通常,应该用英文单引号包裹命令行参数。如,--user 'yangyangwithgnu';
2)某些命令行选项可以有多个参数,通常,每个参数单独用英文单引号包裹,参数间用空格分割。如,--album '八度空间' '范特西' '我很忙';
yosong 典型的用法:
yosong --user 'yangyangwithgnu' --password 'abcd1234' --artist '伍佰'
这样,yosong 就会帮你把歌手伍佰的所有歌曲的 320 码率下载地址解析出来,一是输出在屏幕上、一是保存至 ~/伍佰@HHMMSS.txt 中。
具体而言,yosong 提供了如下命令行选项。
--help
显示帮助信息。该选项优先级最高,出现该选项时忽略其他所有选项。
可选。
--version
显示当前版本信息。该选项优先级仅次 --help
可选。
--user
指定百度帐号。普通免费帐号即可,无需白金付费会员帐号。
必填。
单参数。
无默认值。
--password
指定百度帐号密码。
必填。
单参数。
无默认值。
--artist
指定歌手名。
必填。
单参数。
无默认值。
--album
指定专辑名。该专辑必须归属 --artist 指定歌手的,否则无法下载。若未指定该选项则默认下载 --artist 指定的歌手的所有专辑、所有歌曲。若有多张专辑,请空格隔开,如,--album '八度空间' '范特西' '我很忙'。
可选。
多参数。
无默认值。
--quality
指定歌曲品质。百毒音乐上的歌曲有四种品质:标准品质(128kbps)、高品质(192kbps)、超高品质(320kbps)、无损品质(800+kbps),yosong 依次有四种参数与之对应:128、192、320、flac。如果指定品质不存在,那么依次找 320、192、128、flac 等存在的品质,找到即下。
必填。
单参数。
默认值,320。
--ignore-size-lower
有些歌曲尺寸太小相应音质就不高,若想忽略小尺寸的歌曲,可以通过该选项指定一个以 MB 为单位的尺寸下限,凡低于该尺寸的歌曲均不下载。注意,0)该选项的参数可以指定小数;1)指定时不用带单位,如,--ignore-size-lower 6 而非 --ignore-size-lower 6M;2)如果不在乎歌曲尺寸可以将该选项指定为 0。
必填。
单参数。
默认值,6。
--path
指定歌曲最终下载地址保存路径,文件命名规则:artistname@hhmmss.txt
必填。
单参数。
默认值,~/
##FQA
Q0:yosong 可以解析哪些歌手的歌曲?
A0http://music.baidu.com/artist
Q1:为何我昨天解析出的最终下载地址,今天下载全部失败呢?
A1:最终下载地址是有有效期的,要下载时才解析,不要先解析一大堆等多久才下载,很可能过期滴。
Q2:yosong 为何不集成下载工具?
A2:我是个受尽 K.I.S.S. 摧残的人儿,术有专攻,让其他第三方专业下载工具去执行具体下载任务吧。当然,我也是个有爱的人儿,帮你准备了
bool Song::download (const string& path, const string& quality, const unsigned timeout);
成员函数,它内部集成 aria2c,适当调整下 main.cpp 中的逻辑即可集成下载。我倒是建议直接用迅雷,以专辑为单位把整个专辑的下载地址拷贝下来,迅雷自动除去非 URL 文本,批量下载,并且还能正确给文件命名。
Q3:为何有类似“咖哩鱼蛋(1.1MB too small)”红色报错信息?
A3:有些歌曲尺寸太小相应音质就不高,对于您这样有品味的人,宁可不下载也不要被这些低质声音污染耳朵,所以,你可以通过该选项指定一个以 MB 为单位的尺寸下限,告诉 yosong 忽略小于该尺寸的歌曲。如果你是个接受度很广的人,可以将 --ignore-size-lower 设置为 0。
Q4:为何默认品质是 320 而不是无损的 flac?
A4:尼玛,劳资的车载音响不支持 flac 格式 (ง •̀_•́)ง
Q5:为何迅雷下载回来的歌曲出现类似 96892368400320.mp3 这样的文件名?
A5:yosong 解析出来的最终下载地址类似 http://yinyueshiting.baidu.com/data2/music/51503996/96892368400320.mp3?xcode=0518d0d4beb3be2fea45adb97777a278d990c3a07c5eb44d ,通常来说,下载工具会向资源提供服务端查询文件名,然后再下载,迅雷在这方面做得不错,但如果你向单个资源服务器同时发起大量并行查询,其中某几个可能查询失败,所以就出现迅雷按 URL 中的信息给文件命名的情况。要规避这种情况,你可以减少并行下载任务数量(4 个为宜),或者,对已经下载的文件,右键查看音频属性,那儿会有正确的歌曲名,如下图:

(音频属性中提取真实文件名)
Q6:周杰伦的歌明显不全嘛?
A6:对于百度未收录的歌曲资源,yosong 无能为力。
Q7:yosong 要求输入百毒帐号,安不安全?
A7:不安全。我可能把持不住用你的帐号干各种邪恶、抑郁以及不纯洁的事。为了您一身的英明,建议你注册个小号,明白我的意思了么,亲爱的。
Q8:yosong 是否具备“一键”解析百毒音乐全站歌曲的能力?
A8:哼哼哼,好像、或许、应该、我觉得,是具备的。你知道,只需指定歌手名,yosong 能解析该歌手的所有专辑的所有歌曲,同时,yosong 又能遍历出所有歌手,所以,只需增加八行代码即可,具体是 ...,等下,我接个电话先,010-65232656 打来的 ...
Q9:我指定下载 flac 这种无损品质,为何 yosong 下载回来的是 mp3 格式呢?
A9:百毒音乐上的歌曲含有标准品质(128kbps)、高品质(192kbps)、超高品质(320kbps)、无损品质(800+kbps)等四种品质,前三者为 mp3 格式、最后一种为 flac 格式。大部分歌曲四种品质都有,少部分歌曲缺失某类品质,如果指定品质不存在,那么 yosong 依次查找 320、192、128、flac 等存在的品质,找到即下,所以,如果你指定的是 flac 而下载回来的是 mp3,那肯定是该歌曲缺失 flac 品质。至于说,在指定品质不存在时,查找优先级为何把 flac 排在最后,前面说过了,那是因为劳资的车载音响不支持 flac 格式,基本上,我只下载 320 品质的 mp3,如果某歌曲没有 320 的,我希望下载 192 的,而不是“自作聪明”下 flac 的。
Q10:yosong 最小只能以专辑为单位下载,如果我只想下载单首歌曲,咋办啊?
A10:请在门外帮我把门关上。
Q11:非正常退出 yosong 有无危害?
A11:yosong 通过某些机制绕开百度限制,其中涉及把歌曲加入收藏,收藏夹有收藏歌曲数量的限制(8K),虽然 yosong 会自动清理由它加入收藏的歌曲,但,当非正常退出时,清理这步可能未执行,所以,建议定期到 http://yinyueyun.baidu.com/ 手工清理收藏夹,否则,yosong 无法正常运行。
##接下来你可以
yosong 不是终点,而是你的起点,基于它你可以:
0)调用 Song::download() 集成 aria2c 下载工具;
1)创建 GUI 版本,为害怕 CLI 的亲们带去曙光;
2)创建网站版本,yosong 在幕后,提供歌曲下载地址解析,类似硕鼠网;
3)移植 windows 版本。
##最后的一定是最不重要的

Popular posts from 产品随想的博客

《Becoming Steve Jobs》Chapter 12 Two Decisions

Jim Collins, the bestselling author of the management classics Built to Last: Successful Habits of Visionary Companies and Good to Great: Why Some Companies Make the Leap … and Others Don’t, has a wonderful phrase to describe an essential characteristic of great leaders: deep restlessness. Collins applies the phrase to Steve, one of the two great leaders who inspire him the most (the other is Winston Churchill, the great English politician who was prime minister during most of World War II, from 1940 to 1945, and again from 1951 to 1955). Collins believes this restlessness is far more important and powerful than simple ambition or raw intelligence. It is the foundation of resilience, and self-motivation. It is fueled by curiosity, the ache to build something meaningful, and a sense of purpose to make the most of one’s entire life. 自己何其有幸,在不到30的年纪,就能感受到乔布斯的心境 “The things he was trying to do,” says Collins, “were always hard. Sometimes those things beat him up. But the response to fighti...

产品随想 | 周刊 第69期:Do not go gentle into that good night

Products Windows Apps That Amaze Us   https://amazing-apps.gitbook.io/windows-apps-that-amaze-us/ 令人精细的Windows App 文物出版社   https://book.douban.com/press/2456/ 这是一个宝藏出版社,出品书籍质量非常高,大开眼界 blind   https://www.teamblind.com/ 老外的匿名职场社交工具,挺有意思,看看硅谷的meme 中国科学技术大学测速网站   https://test.ustc.edu.cn/ 看着还不错,挺靠谱的 底层代码是LibreSpeed   https://github.com/librespeed/speedtest 能不能好好说话?   https://github.com/itorr/nbnhhsh 也是我的一个痛点 Tree Style Tab (aka TST)   https://github.com/piroor/treestyletab 一个超强的浏览器扩展插件,树状呈现浏览器标签 Failory Pitch Decks   https://www.failory.com/pitch-deck 超级多的融资计划投资板,Pitch Book AutoCut   https://github.com/mli/autocut 用文本编辑器剪视频 全网漫游指南   https://tagly.notion.site/tagly/a333efd8c3e54e12b123acd541e8d3e6 数字时代的指引,希望他们成功 IT eBooks   https://it-ebooks.info/ IT书籍下载 ToastFish   https://github.com/Uahh/ToastFish 一个利用摸鱼时间背单词的软件。 利用Win10通知栏,出现、背单词 Ideas 沈向洋:IDEA 如何找到创新的「甜区」   https://mp.weixin.qq.com/s/OlI5VUxQKU_ijWZClQCG0Q AIGC How Did Nor...

可能比较危险的

全网监控公司: 1)中国厦门的美亚柏科 2)KIS(Knowlesys Intelligence System) 3)除中美之外的第三大AI监控技术供应商是:日本的NEC Corporation 中国的VPN公司: 1)VyprVPN、玲珑加速器 Point: 1)被GFW屏蔽的IP,反向也会无法访问大陆网络

《Becoming Steve Jobs》Chapter 15 The Whole Widget

What the world did see was an effective and visionary leader at the height of his powers. These were complicated years for Apple, but Steve handled almost every challenge in exactly the manner he wanted. He had fallen into leadership at such a young age, but he was comfortable in that role now, and justifiably sure of his capacity to guide Apple’s tens of thousands of employees to the goals he set for them. During these years, he would ensure the company’s continued success in personal computers by engineering a deft switch to a new kind of microprocessor; ruthlessly and successfully managing some major transitions in his executive team; and optimizing and building upon the efficiency and ambition of the company’s product development “treadmill,” as Tim Cook describes it. This is also when he delivered what is likely to be remembered as the most notable product of his life, the iPhone, and then improved even that by pivoting once again into a strategy he personally had not wanted to pu...

《Becoming Steve Jobs》Chapter 11 Do Your Level Best

As a mass-market consumer electronics device, the iPod would eventually be sold, of course, all the usual places: Best Buy, Circuit City, big-box department stores, and even the computer retailers like CompUSA. Steve disdained all these outlets. His obsession with his products continued well after they’d been manufactured. The tacky, low-margin hustle of these chains ran completely against the minimalist aesthetic of his products and the clean exuberance of his marketing. There was only one place where he really enjoyed seeing his products sold to the public: his own Apple stores, which had debuted four months ahead of the iPod. 觉得那些喧嚣、嘈杂的零售渠道,配不上自己极美的产品 Going back as far as the debut of the Mac, Steve had always groused about the way Apple computers were sold in its resellers’ stores. The way his computers were displayed and sold represented the very worst of what could go wrong when things weren’t done his way. The salespeople, always interested in quick turnover, seemed to make litt...

ISSUU使用指南--木喵

作者: 木喵   出处: Wonderworks 问:issuu是什么? 答:Issuu是国外的一个在线文档共享网站,它是你的PDF文档发布专家。它类似于我们熟悉的youtube,但它共享的是文档、杂志之类的文本。 简而言之、同志们想看国外的各种杂志? 想找国外的汇报文本么? 想借鉴国外学生的作品集么? 那么你就要用到它啦~ 今天主要和大家讲两个方面 一、如何在pc端使用和下载issuu上的pdf文档 首先我们打开issuu的网址 https://issuu.com/ 我们可以很清楚的看到网页上呢都是国外的杂志以及一些作者自己制作的pdf文档 首先我们点击右上角的 sign up  然后填写相关信息注册一个账户: 注册完成之后我们就可以搜索我们想要找的资料: 比如说,我想找一些分析图的资料,我们就搜索: architecture diagram 然后我们就可以看到相关的文档了: 点击你所选择的文档, 好了问题来了: sorry,this publication is not available 这个时候!就需要在用pc端的我们做一件必不可少的事: 翻墙 然后我们就能将页面刷新粗来了 好、接下来是非常有建设性意义的一步 怎样把我们网页上的文件 下载下来 呢? 截图? no~no~no~ 接下来,让木喵告诉你怎么下载: 首先你需要复制上面的网址 然后将 https://wenfan.hk/issuu/index_link.php 在另一个网址中打开 将你之前复制的pdf的网址粘贴在下面的对话框中 点击 I‘m not a robot 再点击 get it 然后会出现一堆网址代码 我们 全选 打开你的迅雷点击 新建 将你之前的复制粘贴到下载链接里 然后呢~我们就全都下载成功啦~ 然后我们回到之前的网页向下看 我们可以看到有上传文档的作者(记得要关注哟) 然后还有 info   share   stack   ❤ 如果...

《Becoming Steve Jobs》Chapter 14 A Safe Haven for Pixar

Iger had big news to share: The following day, March 13, Disney would announce that he would become the next CEO of Disney, replacing Michael Eisner. Eisner had been CEO since 1984, and had followed a great first decade with a second one that can only be described as mediocre and turbulent. By the end, he had disappointed shareholders and alienated just about every stakeholder who had a vested interest in the company. One of those was Pixar’s CEO, who disliked Eisner so much that he had publicly announced that the company would find a new distributor once its existing contract with Disney ended in 2006. “Steve,” said Iger, “before you read it in the paper tomorrow, I’m calling to let you know I’m going to be named the next CEO of the company. I don’t fully know what that’s going to mean in terms of Disney and Pixar, but I’m calling to tell you I’d like to figure out a way to keep this relationship alive.” There was a long pause on the other end of the line. Iger had pondered this call ...

产品随想 | 读《中国是部金融史》:第二章 秦始皇统一了货币吗(秦朝)

战国时代什么最重要? 答:人才! 十地有的是,有人就能在土地上耕种,就能产出粮食。 积攒人品、招揽居民的方法,就是变法。魏国的李悝、赵国的公仲连、楚国的吴起、 韩国的申不害、齐国的邹忌⋯⋯七家诸侯都使出浑身解数鼓励别国的国民迁徙到自己的土地上—因为只有这样才能产出更多粮食,才能在战争的时候保证有兵源。 ──思路和现在的放开户口、人才引进,拉动GDP,是一样的 所谓抑商也就三条。 第一,秦国不能出现粮食贸易。(如果秦人买不到粮食就只能自己去种地,种地的人最实在) 第二,加重商税,重到任何贸易品种都无利可图。 第三,降低商人地位。战国七雄,只有在秦困,商人才与赘婿并列为最低等的网人。 货币是一枚一枚的铜钱,分散在国人手中,泰孝公如何能贪天下之利?只有禁绝货币,才能把所有利益都归于国君,国君才能更有势力(利出于一孔者,其国无敌) 商鞅从来没有“重农”。他真实的想法是:民弱国强、 国强民弱,所以,要想做最有权势的国君,就必须让天下人穷困(民弱国强、国强民弱, 故有道之国务在弱民)! 农、工、士、商四类人中,“农人〞必须依附于田宅,最缺乏流动性,手里也最没钱,是最容易管理的对象,也是最好的“弱民”。 据说,商鞅“重农"的功绩在于给全国农人分配士地;据说,商鞅治下,每个男丁可以分配到一百亩土地。“百亩之田、五商之宅”是战国时代孟子的理想,最早出子《周礼》,到了《汉书》中居然成为商鞅的土地分配标准。 就为这,商鞅被歌幼了几干年 ──蜜糖? 砒霜? 商鞅之所以敢如此放心大胆地盘剥,是因为控制单一的农户比控制强大的宗族容易许多。毕竞宗族力量在一定程度上可以对抗王室,而被拆分为一个个家庭,就没有任何能力对抗封建集权。 ──破宗族,分田地 至于农人,毫无血缘关系的五家被编成一“伍”。谁敢反抗,五个农户全体受罚, 一般情况下会全被诛杀。即使有人跑出了家乡,只要在秦国境内,没有良民证的人也难免被抓获。没有良民证的结果就是被杀掉。 ──看到“良民证”,我想到了“核酸码” 商鞅认为,笨的人好管理(民&则易治也)。《诗经》《尚书》是周朝文化的代表, 如果网人以《诗》《书》中的道理去蛊惑人心,有一个人,就能让上千人不再以耕战求富货;如果信奉《诗》《书》的人当了县官,就会有一个县的人不再尊敬国君;如果天下人都信奉《诗》《书》的道理,势必有人结党于下、议论政令,秦孝公的将不再是秦孝公的...

Foobar2000 组件安装教程

 原作者 博客地址   汉化作者 Asion博客   关于foobar 2000的一些资源 前言 foobar2000 由于其软件架构特点以及开放的姿态,使得第三方很容易开发组件(component)来拓展它的功能。由于在官网下载的默认安装文件只带了少量几个默认的组件,满足不了使用的需求,例如:默认不带 ape,tta,tak 等音频文件格式的解码器,很多无损压缩格式音乐没法播放。所以自己下载安装组件是必备的基本技能。 foobar2000 的中文汉化版(Asion 汉化)为了方便使用,集成了无损压缩文件解码器以及一些其它有用的插件,安装时选上即可,不喜欢折腾的建议使用汉化版。 这里组件指的是 foobar2000 标准组件(*.dll 文件),而非 vst 插件等其它插件,姑且把组件分为两类: 官方组件: 英文版安装包自带,安装时可选择; 第三方组件:非官方自带的组件 除了 foo_input_std.dll 和 foo_ui_std.dll 这两个组件是必须的外,其它的所有组件都 非必需 的,可以随需要增删。第三方组件可以去 官网 、 官方论坛 或者 官方 wiki 去找,也可以去贴吧等地逛逛。 下载 还是要强调一下,这里说的是 foobar2000 component ,不是中文网上通常说的 vst 插件。 下载好的组件包一般是 xxx.zip 或 xxx.fb2k-component 格式的文件,也有用 7z 打包的。前两种都是 zip 压缩(只要把 fb2k-component 改成 zip 文件就变成了 zip: 包)。标准状况下压缩包里的内容结构应该是 xxx.zip yyy.dll README.txt (可能没有) LICENCE.txt (可能没有) (其它杂七杂八) 除少数外一般只有一个 xxx.dll 文件.一定要注意压缩包结构不能是: xxx.zip yy folder (文件夹) zzz.dll … 否则要解压缩,提取那个 dll 文件。 安装 方法一(推荐) 打开 foobar2000 的菜单 文件 > 首选项(file >preferences) 的 组件(components...

《Becoming Steve Jobs》Chapter 17 “Just Tell Them I’m Being an Asshole”

For several months, I had been working to set up a joint interview of Steve, Andy Grove, Bill Gates, and Michael Dell. The confab was supposed to kick off the reporting for a book I had in mind. I had what I thought was a snappy title—Founders Keepers—and a plan to describe how a handful of geeky entrepreneurs had evolved into captains of industry; how self-absorbed inventors morphed into self-taught empire builders; how shaggy-haired idealists managed to stay in the saddle even as the companies they created grew rapidly by orders of magnitude, and as their own wealth and influence over the world itself became far more than the stuff of dreams. 好可惜啊,这次采访没有成形 During this time, Steve came to visit me in the hospital a couple of times. I was so addled with sedatives and painkillers and my own delirious hallucinations that during one visit I expressed my sincerest regrets at not being able to play saxophone in a Beatles retrospective show he was planning to put on in Las Vegas with Ringo S...