5sing Assist

修改 5sing 歌曲页面下载按钮链接为真实歌曲链接。

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, Greasemonkey alebo Violentmonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, % alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey alebo Userscripts.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie správcu používateľských skriptov.

(Už mám správcu používateľských skriptov, nechajte ma ho nainštalovať!)

Advertisement:

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

(Už mám správcu používateľských štýlov, nechajte ma ho nainštalovať!)

Advertisement:

// ==UserScript==
// @name                5sing Assist
// @namespace           http://example.com
// @description         修改 5sing 歌曲页面下载按钮链接为真实歌曲链接。 
// @include             http://5sing.kugou.com/yc/*
// @include             http://5sing.kugou.com/fc/*
// @include             http://5sing.kugou.com/bz/*
// @run-at              document-end
// @grant               none
// @author              xiofee <[email protected]>
// @version             0.2
// @copyright           2014-2016,xiofee
// ==/UserScript==
/* History
 * 2014-12-18 v0.1 首个版本 | The first version.
 * 2016-06-06 v0.2 依然可用,只是改个版本号,刷个存在感。 | Still available, only changed version number.
 */
/** 
* 
*  Base64 encode / decode 
* 
*  @author haitao.tu 
*  @date   2010-04-26 
*  @email  [email protected] 
* 
*/
(function() {
function Base64() {
  // private property
  _keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
  // public method for decoding
  this.decode = function (input) {
    var output = '';
    var chr1,
    chr2,
    chr3;
    var enc1,
    enc2,
    enc3,
    enc4;
    var i = 0;
    input = input.replace(/[^A-Za-z0-9\+\/\=]/g, '');
    while (i < input.length) {
      enc1 = _keyStr.indexOf(input.charAt(i++));
      enc2 = _keyStr.indexOf(input.charAt(i++));
      enc3 = _keyStr.indexOf(input.charAt(i++));
      enc4 = _keyStr.indexOf(input.charAt(i++));
      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;
      output = output + String.fromCharCode(chr1);
      if (enc3 != 64) {
        output = output + String.fromCharCode(chr2);
      }
      if (enc4 != 64) {
        output = output + String.fromCharCode(chr3);
      }
    }
    output = _utf8_decode(output);
    return output;
  }
  // private method for UTF-8 decoding

  _utf8_decode = function (utftext) {
    var string = '';
    var i = 0;
    var c = c1 = c2 = 0;
    while (i < utftext.length) {
      c = utftext.charCodeAt(i);
      if (c < 128) {
        string += String.fromCharCode(c);
        i++;
      } else if ((c > 191) && (c < 224)) {
        c2 = utftext.charCodeAt(i + 1);
        string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
        i += 2;
      } else {
        c2 = utftext.charCodeAt(i + 1);
        c3 = utftext.charCodeAt(i + 2);
        string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
        i += 3;
      }
    }
    return string;
  }
};
function isListenPage() {
  var _isListen = false;
  // Listen mode page not use pageOptions.
  if ('undefined' == typeof pageOptions) {
    _isListen = true;
  }
  return _isListen;
}
function getEncryptSongInfo() {
  var _info;
  if (isListenPage()) {
    // Listen mode page
    _info = globals.ticket;
  } else {
    // Normal mode page
    _info = pageOptions.ticket;
  }
  var _base64 = new Base64();
  var _songObj = eval('(' + _base64.decode(_info) + ')');
  return _songObj;
}
function getRealSongUrl() {
  var _songInfo = getEncryptSongInfo();
  return _songInfo.file;
}
function getDownloadButton() {
  var _downBtn;
  if (isListenPage()) {
    _downBtn = document.getElementById('func_Down');
  } else {
    _downBtn = document.getElementsByClassName('func_icon3') [0];
    _downBtn = _downBtn.getElementsByTagName('a') [0];
  }
  return _downBtn;
}
var downBtn = getDownloadButton();
downBtn.href = getRealSongUrl();
})();