Greasy Fork is available in English.
快速免费下载百度音乐
// ==UserScript==// @name baidu-music-download// @namespace [email protected]// @description 快速免费下载百度音乐// @author thunderhit// @include http://music.baidu.com/song/*// @grant GM_xmlhttpRequest// @grant GM_addStyle// @version 1.10// @run-at document-end// ==/UserScript==00var show_collection_num = true; //显示当前的收藏数var max_collection_num = 200; //当超过这个数字脚本会自动从收藏中删除音乐var baiduid = (function() {if (document.cookie.length > 0) {c_start = document.cookie.indexOf("BAIDUID" + "=");if (c_start != -1) {c_start = c_start + "BAIDUID".length + 1;c_end = document.cookie.indexOf(";", c_start);if (c_end == -1) c_end = document.cookie.length;return unescape(document.cookie.substring(c_start, c_end)).replace(":FG=1", "");}}return "";})();var songid = (function() {return location.href.match(/\/song\/(.*)/)[1];})();var ajax_get = function(cb, url) {GM_xmlhttpRequest({method: 'GET',url: url,headers: {Referer: location.href},onload: function(response) {cb(JSON.parse(response.responseText));},onerror: function(e) {console.log(e);}});};var ajax_post = function(cb, url) {GM_xmlhttpRequest({method: 'POST',url: url,data: 'ids=' + songid + '&type=song&pay_type=0&',headers: {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",},onload: function(response) {console.log(JSON.parse(response));},onerror: function(e) {console.log(e);}});};var music = {collect: function(cb) {ajax_get(cb, 'http://tingapi.ting.baidu.com/v1/restserver/ting?' + 'method=baidu.ting.favorite.addSongFavorite&format=json&from=bmpc&version=1.0.0&version_d=9.1.16&&baiduid=' + baiduid + '&songId=' + songid + '&time=' + (Math.round(new Date().getTime() / 1000)));},iscollect: function(callback) {ajax_get(function(data) {callback(data.data.isCollect);}, 'http://music.baidu.com/data/user/isCollect?type=song&ids=' + songid + '&r=' + Math.round(Math.random() * 100000) + (new Date().getTime()));},delcollection: function(id) {ajax_get(function(data) {}, 'http://music.baidu.com/data/user/deleteCollection?type=song&ids=' + id + '&r=' + Math.round(Math.random() * 100000) + (new Date().getTime()));},songdetail: function(cb) {ajax_get(cb, 'http://yinyueyun.baidu.com/data/cloud/download?songIds=' + songid);},getratedetail: function(rate_type, cb) {this.songdetail(function(json) {if (rate_type == #### && json.data.data.flac) {cb(json.data.data.flac.rate, json.data.data.flac.format, true);} else if (json.data.data[rate_type]) {cb(json.data.data[rate_type].rate, json.data.data[rate_type].rate, true);} else {cb(null, null, false);}});},getsonglist: function(cb) {ajax_get(cb, 'http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.favorite.getCollectSong&format=json&from=bmpc&version=1.0.0&version_d=9.1.16&bdiduid=' + baiduid + '&pn=0&rn=50');},download: function(type, target) {this.getratedetail(type, function(rate, format, isexist) {target.removeEventListener("click", event_handle, false);if (isexist) {var finalurl = 'http://yinyueyun.baidu.com/data/cloud/downloadsongfile?songIds=' + songid + '&rate=' + rate + '&format=' + format;location.assign(finalurl);target.href = finalurl;} else {target.click = null;target.text = '无资源';}});},};var main = function(rate_type, target) {music.iscollect(function(iscollect_flag) {if (iscollect_flag) {music.download(rate_type, target);} else {music.collect(function(data) {music.download(rate_type, target);});}});music.getsonglist(function(data) {if (max_collection_num && data.total > max_collection_num) {for (var i = 0; i < data.total; i++) {if (data.r###lt[i].song_id == songid) {continue;} else {music.delcollection(data.r###lt[i].song_id);}}}});};var event_handle = function(event) {main(event.target.getAttribute('rate'), event.target);};GM_addStyle('#music-download-ul>li{display:inline}.music-download-a{margin-top: 6px;margin-right: 6px;-moz-box-shadow:inset 0 39px 0 -24px #e67a73;-webkit-box-shadow:inset 0 39px 0 -24px #e67a73;box-shadow:inset 0 39px 0 -24px #e67a73;background-color:#e4685d;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;border:1px solid #fff;display:inline-block;cursor:pointer;color:#fff;font-size:14px;padding:2px 15px;text-decoration:none;text-shadow:0 1px 0 #b23e35}.music-download-a:hover{background-color:#eb675e}.music-download-a:active{position:relative;top:1px}');var list = (function() {var ul = document.createElement('ul');ul.id = 'music-download-ul';var a = document.createElement('a');a.className = 'music-download-a';a.href = 'javascript:void(0);';var rates = [128, 192, 320, ####]; //#### = 无损for (var i = 0; i < rates.length; i++) {var clone_a = a.cloneNode();clone_a.setAttribute('rate', rates[i]);clone_a.innerHTML = rates[i] + "kbps";clone_a.addEventListener('click', event_handle, false);var li = document.createElement('li');li.appendChild(clone_a);ul.appendChild(li);}if (show_collection_num) {var span = document.createElement('span');span.setAttribute('id', 'music-download-cn');span.setAttribute('style', 'color: rgb(194, 194, 194);');var li = document.createElement('li');li.appendChild(span);ul.appendChild(li);}return ul;})();var s = document.getElementsByClassName('song-opera')[0];s.parentElement.insertBefore(list, s.nextElementSibling);music.getsonglist(function(data) {var cn = document.getElementById('music-download-cn') || null;if (cn) {cn.innerHTML = '当前收藏数:' + data.total;}});