跳至主要内容

歌曲地址解析器 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 产品随想的博客

申请日本研究生---转载

原文地址: 申请日本研究生 首先有必须向大家解释一下日语中这个“研究生”的概念以及日本的大学院的基本设置。  日语中“研究生”用英文来说是research student,在日本的大学是非正规生,也就是说没有学位也不可以修得学分,一般情况下只能在研究生阶段结束以后得到一份“研究生修了证明书”,这个回国是没有用处的。  最初研究生的设立,并不是为了大学院备考者。但是现在外国留学生都利用这个课程来作为进入大学院正规课程的一个途径。说直接一点,就是为了拿到签证,来日本考大学院的一个途径。  研究生又分为两种,一为学部研究生,申请的资格为大学本科毕业及其预定毕业者,或者是满16年学习经历的都有资格申请。第二种为大学院研究生一般是硕士毕业以及其预定毕业者有资格申请。  简单的说,可以把中日的高中到博士的就学阶段和名称对比如下:  日本:高校 学部 学部研究生 修士 大学院研究生 博士  中国:高中 本科 硕士预科 硕士 博士预科 博士  |--------- | ----------|  |  统称大学院  研究生的申请基本上为书类选考,也就是只要提交必要的材料和得到指教教官的许可就可以申请。也有个别好的大学需要书面考试,但为数不多。  研究生的申请可以是国内出愿(人在日本),也可以是海外出愿(人在中国)。  日本大学院的基本设置。  一般是##大学大学院###研究科的机构下,分博士前期(相当于国内的硕士)和博士后期(博士),有些大学的有些专业没有博士后期,一般就叫做修士课程。  研究生下又有具体专攻的划分。  申请研究生第一步  是和你想去大学的导师联系,希望他能够当你的指导教官(当然事先搜集有关大学,导师的资料是必备的,要确定这个大学一定招研究生.相关信息。  可以利用小春留学论坛学校版提供的以下信息搜索引擎  也可以利用日文门户网站yahoo等来搜索。)  联系导师的合理时间,一般在你希望入学时间(一般一年有两次,4月和10月,)的6-12个月前.具体时间各个学校,各个专业不同不同。  至少6个月前是一定要联系拉,否则会来不及.  国内本科大4在校生,建议在进入大4后就着手准备联系导师事项.  联系导师的方法,材料及注意事项  1。可以通过电子邮件,书信,传真,电话各种工具。最方便,最便宜的方式推荐用电子邮件。有些导师是不公开电子邮件的,那就只能利用其他工具拉。 

乔布斯自己的话

我對建立一家屹立不搖的公司有著不滅的熱情。我希望激發公司裡的人做出偉大的產品,其他都是其次的。能獲利當然很好,因為這樣你才有更多的本錢去做很棒的產品。然而,最重要的动机還是產品,而不是獲利。史考利就是把優先順序搞錯了, 把赚钱當成首要目標。雖然製造產品和追求獲利只有些微的不同,但這目標的確關係到一切,包括你要雇用什麼樣的人,晉升哪些人,在開會的時候要討論什麼。 有些人會說:「給消費者想要的東西。」但這不是我的做法。我們必須在消費者知道自已想要什麼東西之前,就幫他們想好了。記得福特曾說:「如果我問顧客他們要什麼,他們必然會回答我:跑得更快的馬!」除非你拿出東西給顾客看,不然他們不知道自己要什麼。這就是為什麼我從不仰賴市場調查。我們的任務是預知,就像看一本書,儘管書頁上還是一片空白,我們已可讀出上面寫的東西。 寶麗來的蘭德曾提到人文與科學的交會。我喜歡這樣的交會,這就是最神奇的地方。目前創新的人很多,我的職涯最突出的並非創新。蘋果能打動很多人的心,是因為我們的創新還有很深的人文淵源。我認為,偉大的工程師和偉大的藝術家很類似。他們都有表達自己的深切欲望。其實,為第一代麥金塔打拚的精英當中,有些也會寫詩或作曲。在1970 年代,人們用電腦表達他們的創造力。像達文西和米開朗基羅這樣偉大的藝術家,本身也是科學家。米開朗基羅不只是會雕刻,也知道如何開採石材。 蘋果能做的,就是幫消費者整合。因為一般人都很忙,一星期七天,一天二十四小時,完全抽不出時間想這些。如果你對製造偉大的產品充滿热情,你就會想整合,把你的硬體、軟體和內容變成一個整體。如果你想開關新的疆土,你得自己來。如果你要使你的產品開放,和其他軟、硬體相容,就不得不放棄你的一些遠見或夢想。 過去的矽谷,在不同的時間點都曾出現過獨領風騷的大公司。最早是惠普,他們曾稱霸一段很長的時問,接著進入半導體時代,快捷和英特爾是其中的佼佼者。之後蘋果也曾光芒耀眼,然後又黯淡下來。到了今天,我想最强的就是蘋果,而 Google 緊跟在後。我認為蘋果禁得起時間考騐。蘋果這幾年的表現非常亮眼,日後仍會是電腦科技的先鋒。 向微軟丢石頭很簡單。微軟顯然不再像過去那樣意興風發,不再舉足輕重,但我還是認為他們過去的成就很了不起,那真是不容易。他們是經營獲利的高手,對產品發展則沒那麼有野心。蓋兹自認為是產品的推手,懂產品的人。其實,他不是,他是個生意人。

Good for the Soul, Steven Levy, 2006, Newsweek

Interview During the iPod's development process did you get a sense of how big it would become? The way you can tell that you're onto something interesting is if everybody who knows about the project wants one themselves, if they can't wait to go out and open up their own wallets to buy one. That was clearly the case with the iPod. Everybody on the team wanted one. Other companies had already tried to make a hard disk drive music player. Why did Apple get it right? We had the hardware expertise, the industrial design expertise and the software expertise, including iTunes. One of the biggest insights we have was that we decided not to try to manage your music library on the iPod, but to manage it in iTunes. Other companies tried to do everything on the device itself and made it so complicated that it was useless. What was the design lesson of the iPod? Look at the design of a lot of consumer products—they're really complicated surfaces. We tried mak

产品随想 | 周刊 第122期:务必要疯狂地怀抱雄心,且还要疯狂地真诚

你可能是个大器晚成的人——那些早年失败却在晚年成功的人具备的特质。   https://mp.weixin.qq.com/s/6gBPM5u1y2QNJsdnfd_O1Q 好喜欢这句话:人的一生可以在很多方面帮助你,但有两样东西是别人无法给予你的:好奇心和动力。这两样东西必须由自己来提供。 The House of Arnault,His company, LVMH, bought up many of the world’s major luxury brands. And he’s not finished shopping.   https://www.bloomberg.com/features/2024-lvmh-bernard-arnault/ 介绍奢侈品巨头 大模型的扑克牌:独家内幕故事   https://mp.weixin.qq.com/s/YfFN7yjbyyPIy3MC89HdXA Club Deal. Vinod Khosla, Marc Andreessen And The Billionaire Battle For AI's Future   https://www.forbes.com/sites/alexkonrad/2024/06/04/inside-silicon-valley-influence-battle-for-ai-future/ AI计算机的样子,会是怎么样? Tinokwan Lighting Consultants   https://www.instagram.com/tinokwanlighting/ 估计也是世界顶级的灯光设计公司 “He saw beauty in both art and engineering,” Jobs said, “and his ability to combine them was what made him a genius.” 乔布斯评价达芬奇 中华珍宝馆   https://g2.ltfc.net/home 文化传承还是得靠民间这些喜爱之人 Morphic   https://github.com/miurla/morphic An AI-powered search engine with a generative UI 试用了下,体验非常不错 「务必要疯狂地

内网域名访问内网服务器

部门ftp服务器和远程服务器内网域名无法访问问题困扰我好久,钻研了几天,终于明白了一些,和大家做一个分享, 原帖子在这里 ,表示感谢

产品随想 | 周刊 第51期:Never let a good crisis go to waste

Products Paperless-ngx   https://github.com/paperless-ngx/paperless-ngx A community-supported supercharged version of paperless: scan, index and archive all your physical documents 自架设服务,文档聚合 Tube Archivist on YouTube   https://github.com/tubearchivist/tubearchivist Your self hosted YouTube media server 自托管YouTube流媒体播放 Emby Server Emby Server is a personal media server with apps on just about every device. 自己掌控流媒体 Pointless   https://github.com/kkoomen/pointless An endless drawing canvas desktop app made with Tauri (Rust) and React 无限画布白板工具,Tauri构建,跨多端 PWA LIST   https://www.pwalist.app/ 一些好玩的PWA应用,有些还不错 Pomofocus 番茄钟 Song Search “Find me a song by lyrics.”   https://songsear.ch/ Nanopi Openwrt   https://github.com/klever1988/nanopi-openwrt Openwrt for Nanopi R1S R2S R4S R5S 香橙派 R1 Plus 固件编译 纯净版与大杂烩 Project ImmortalWrt   https://github.com/immortalwrt/immortalwrt An opensource OpenWrt variant for mainland China users. China用户专用......心情复杂 YAOF   https://github.com/QiuSimons/YAOF Yet Ano

产品随想 | 周刊 第56期:西方出版商应该拒绝思想审查

Products IKEA's latest AR app can erase your furniture to showcase its own   https://www.engadget.com/ikea-ar-app-lets-you-preview-its-furniture-in-your-own-house-130004284.html LiDAR的实际应用 JustLive-Android   https://github.com/guyijie1211/JustLive-Android 一个集成国内多个直播平台内容的App,非常好用 2022口腔护理评测合集,护齿攻略不容错过   https://mp.weixin.qq.com/s/ktyG9K_dwbcha4F0qm3Elw 有调出品 NAS媒体库资源归集整理工具 NAS Tools   https://github.com/jxxghp/nas-tools NAS媒体库资源归集、整理自动化工具 Citizenship Consciousness & Privacy British publishers censor books for western readers to appease China   https://www.ft.com/content/63cbf209-656f-4f99-9ee3-722755c228ed?shareType=nongift 西方出版商应该拒绝这样的思想审查 Boris Nemtsov Tailed by FSB Squad Prior to 2015 Murder   https://www.bellingcat.com/news/2022/03/28/boris-nemtsov-tailed-by-fsb-squad-prior-to-2015-murder/ 克格勃特工 Design My NYC Apartment Tour: $1,875/Month in Manhattan   https://www.youtube.com/watch?v=2ABFuMGkp9k 曼哈顿1800刀月租的房子,还是很棒的呀 The Hardest Trip - Mandelbrot Fractal Zoom   https://www.you

Class 3

一. shell脚本 基本语法  #!/bin/bash    声明解释该脚本的程序,使用后可使用bash内建的指令 #!被称为魔数    魔数后应指定运行该脚本所需程序的完整路径 特点 shell脚本解释器

产品随想 | 陪读《爱因斯坦传》:11-18章

  第十一章 爱因斯坦的宇宙,1916—1919 施瓦茨希尔德先是计算了一个非旋转的球形恒星外部的时空曲率。几周以后,他又寄给爱因斯坦一篇论文,讨论了这样一颗恒星内部的时空曲率是什么样子。 无论是哪种情况,似乎都可能有某种不同寻常的事情发生,事实上是必然会发生。如果一颗恒星(或任何物体)的所有质量都被压缩到一个足够小的空间(即后来所谓的施瓦茨希尔德半径〉中,那么所有计算似乎都失效了。时空将无限地自行弯曲下去。对我们的太阳而言,如果它的所有质量都被压缩到不足两英里的半径内,这种情况就会发生。而地球则需要压缩到大约1/3 英寸。 这就意味着,在这种情况下,施瓦茨希尔德半径之内没有任何东西能够逃脱引力的牵引,甚至连光或其他形式的辐射也不行。时间也将延缓到停滞。换句话说,在外面的观察者看来,施瓦茨希尔德半径附近的旅行者似乎被冻结了,从而驻足不前。 ──后来的黑洞 在整个宇宙中,现已发现许多黑洞。我们银河系中心就有一个,质量比太阳大几百万倍。“黑洞并不稀少,它们并不是我们宇宙的一种偶然点缀,”戴森说,“只有在这里,爱因斯坦的广义相对论才能大显身手,光芒四射。也仅仅在这里,空间和时间才丧失了自己的特性,共同融入一种由爱因斯坦的方程精确描绘的卷曲的四维结构。” 现在想象这样一种情形:如果这些平直居民的二维仍然在一个表面上,但这一表面(以一种在他们看来相当微妙的方式〉发生了轻微弯曲,或者说,如果他们仍然局限于二维,但其平直表面就像是--个球面,情况会怎样?正如爱因斯坦所说:“现在让我们考患一种二维存在,但这次是在球面上而不是在平面上。”这些平直居民射出的箭看上去仍然沿直线运动,但最终却会折返,就像沿地球表面航行的水手最终会从反方向归来一样。 平直居民所处的二维空间的弯曲使其表面是有限的,但却没有任何边界。无论他们沿着什么方向旅行,都不会到达宇宙的尽头或边缘,但最终会回到同一位置。正如爱因斯坦所说:“这种思考的迷人之处在于认识到:这些生物的宇宙是有限的,但却没有边界。〞如果这些平直居民的表面类似于一个膨胀的气球,那么他们的整个宇宙将会不断膨胀,但仍然没有边界。 在这样一个弯曲的宇宙中,沿任何方向发出的光将沿肴表面上的一条直线运动,但仍然会折回自身。“构想这样一种有限无界的空间,是迄今为止关于宇宙本性的最伟大的思想之一,”物理学家玻恩这样说。 的确如此,但这个弯曲的宇宙之外是什么呢?曲

有关DNS

Windows下DNS命令 查看本机DNS缓存:ipconfig /displaydns 清除本机DNS缓存:ipconfig /flushdns 查看本机DNS地址:nslookup 查看本机网络设置:ipconfig /all