Greasy Fork

来自缓存

Greasy Fork is available in English.

酷狗美化免费vip

用动听的音乐温暖你我

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         酷狗美化免费vip
// @namespace    http://tampermonkey.net/
// @version      1.1
// @description  用动听的音乐温暖你我
// @author       煮酒
// @match        *://www.kugou.com/mixsong/*
// @match        *://www.kugou.com/song/*

// @grant        GM_xmlhttpRequest
// @grant        GM_download
// @grant        GM_addStyle
// @require      https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js
// @require      https://cdn.bootcdn.net/ajax/libs/nprogress/0.2.0/nprogress.min.js
// @connect      *
// ==/UserScript==
console.log("==================================插件启动成功==================================")
let mp3_Hash = "";
let sq_hash = "";
let g_hash = "";
let albumid = "";
let mp3_Url = "";
let mp3_Name = "";
let url = "";
let download_url = "";
let download_hash = "";


window.location.href="https://www.kugou.com/song/#hash=";


// 添加按钮选择音质
var down_load_div = document.getElementsByClassName("btnArea2 clearfix")[0];
down_load_div.innerHTML = "";
// 超高音质
var button_ws = document.createElement("button");
button_ws.id = "down_load_ws";
button_ws.textContent = "下载超高音质(需设置flac为白名单)";
button_ws.style.width = "230px";
button_ws.style.height = "50px";
button_ws.style.color = "#fff";
button_ws.style.cursor = "pointer";
button_ws.style.background = "#000";
down_load_div.appendChild(button_ws);
// 高音质
var button_g = document.createElement("button");
button_g.id = "button_g";
button_g.textContent = "下载高音质";
button_g.style.width = "230px";
button_g.style.height = "50px";
button_g.style.color = "#fff";
button_g.style.cursor = "pointer";
button_g.style.background = "#000";
button_g.style.margin = "3px 0px";
down_load_div.appendChild(button_g);
// 普通音质
var button_mp3 = document.createElement("button");
button_mp3.id = "button_mp3";
button_mp3.textContent = "下载普通音质";
button_mp3.style.width = "230px";
button_mp3.style.height = "50px";
button_mp3.style.color = "#fff";
button_mp3.style.cursor = "pointer";
button_mp3.style.background = "#000";
down_load_div.appendChild(button_mp3);


var audio_au=document.getElementById('myAudio')
// 监听audio开始播放事件(事件在视频/音频(audio/video)开始播放时触发。)
audio_au.addEventListener("play", function () {
    // console.log("播放");
    vk=setInterval(abn,600);
    // 判断是否需要修改src属性
    if (audio_au.getAttribute("data-hash") != mp3_Hash) {
        getMp3Detail();
    }
})

// 监听audio暂停播放事件(事件在视频/音频(audio/video)停止播放时触发。)
audio_au.addEventListener("pause", function () {
    clearInterval(vk);
})


// 点击下载按钮 超高音质
button_ws.onclick = function () {
    if (download_url == mp3_Url) {
        alert(mp3_Name + " 已在下载中!")
    } else {
        downloadBySrc(mp3_Url);
    }
};
// 点击下载按钮 高音质
button_g.onclick = function () {
    if (g_hash == download_hash) {
        alert(mp3_Name + " 已在下载中!");
    } else {
        download_hash = g_hash;
        getMp3UrlSrc();
    }
};


// 点击下载按钮 普通音质
button_mp3.onclick = function () {
    if (mp3_Hash == download_hash) {
        alert(mp3_Name + " 已在下载中!");
    } else {
        download_hash = mp3_Hash;
        getMp3UrlSrc();
    }
};

// 点击下载按钮 超高音质
document.getElementById('pb_download').onclick = function () {
    if (download_url == mp3_Url) {
        alert(mp3_Name + " 已在下载中!")
    } else {
        downloadBySrc(mp3_Url);
        setTimeout(function () {
            document.getElementsByClassName('ui-popup ui-popup-show ui-popup-focus')[0].style.display = "none"
        }, 50)
    }
};

// 获取高音质或者普通音质的MP3地址并且下载
function getMp3UrlSrc() {
    url = "http://8.142.95.208:5001/url/byhash?hash=" + download_hash + "&albumid=" + albumid;
    GM_xmlhttpRequest({
        method: "get",
        url: url,
        onload: function (r) {
            let jsonTxt = r.responseText;
            let json = JSON.parse(jsonTxt);
            downloadBySrc(json.data.play_url);
        }
    })
}

// 点击下载 by url
function downloadBySrc(download_url_quality) {
    download_url = download_url_quality;
    let loaded = 0.0;
    NProgress.set(0.0);      // 与.start()
    GM_download({
        url: download_url,
        name: mp3_Name + download_url.substr(download_url.lastIndexOf(".")), //不填则自动获取文件名
        saveAs: true, //布尔值,显示"保存为"对话框
        onerror: function (error) {
            //如果下载最终出现错误,则要执行的回调
            console.log(error)
            console.log(mp3_Name + "  下载报错,请反馈!");
        },
        onprogress: (pro) => {
            //如果此下载取得了一些进展,则要执行的回调
            // console.log(pro.loaded) //文件加载量
            // console.log(pro.totalSize) //文件总大小
            let size = (pro.loaded / pro.totalSize).toFixed(1);
            if (loaded != size) {
                loaded = size;
                NProgress.inc(0.1);
            }
        },
        ontimeout: () => {
            //如果此下载由于超时而失败,则要执行的回调
            console.log(mp3_Name + "下载超时,请反馈!");
        },
        onload: () => {
            //如果此下载完成,则要执行的回调
            console.log(mp3_Name + "   下载完成!");
            NProgress.done();
        }
    })
}

// 播放无损音质
function getSqMp3Play(url) {
    // get请求获取无损音质的信息
    GM_xmlhttpRequest({
        method: "get",
        url: url,
        onload: function (r) {
            let jsonTxt = r.responseText;
            let json = JSON.parse(jsonTxt);
            mp3_Url = json.data.play_url;
            mp3_Name = json.data.audio_name;
            document.getElementById('myAudio').src = mp3_Url;
            document.getElementById('openKugou').href = mp3_Url;
            if (document.getElementById('myAudio').paused) {
                document.getElementById('myAudio').play();
            }
            console.log(mp3_Name + mp3_Url.substr(mp3_Url.lastIndexOf(".")) + "   加载完成");
        }
    })
}

//隐藏原有进度条
down_yj=document.getElementById('bar');
down_yj.style.display="none";
// 添加进度条
down_j=document.getElementsByClassName("controls-bar")[0]
var button_m = document.createElement("progress");
button_m.id = "h";
button_m.style.width = "100%";
button_m.style.height = "3px";
button_m.style.color = "#fff";
button_m.style.cursor = "pointer";
button_m.style.background = "#000";
button_m.value = 0;
button_m.max = 0;
down_j.appendChild(button_m);


// 添加当前进度按钮
var button_ms = document.createElement("span");
button_ms.id = "h1";
button_ms.style.width = "13px";
button_ms.style.height = "13px";
// button_m.style.color = "#fff";
// button_ms.style.cursor = "span";
button_ms.style.position = "absolute";
button_ms.style.left =0;
button_ms.style.top ="51px";
// button_ms.textContent ="a";
button_ms.style.background="white";
button_ms.style.borderRadius="50%";
down_j.appendChild(button_ms);


//初始化
h1=document.getElementById("h1")
h2=document.getElementById("h")
aac=0;
v=1;
bb=0;
cc=0;
jia=0;
xx={};


//通过进度按钮调整进度条
h1.onmousedown=function(){
  v=0;
  document.onmousemove=function(event){
    xx={'x':event.pageX,'y':screenY};
    x=xx["x"];
    if(v==0){
      if (-1<jia && jia<362){
        cc=x-bb;
        if (cc<20){
          if(cc>-20){
            jia=jia+cc;
          }
        }
        console.log(jia)
        h1.style.left=jia+"px";
        h2.value=aac/362*jia;//进度条跟进
        bb=x
      }
    if(jia<0){
      jia=0
    }
    if(jia>361){
      jia=361
    }
    }
  }
}

//松开进度按钮时调整播放时间
document.onmouseup=function(){
  if(v==0){
    // console.log(jia);
    let video = document.getElementsByTagName('audio')
    video[0].currentTime = aac/362*jia;
  }
  v=1;
}

//实时更新进度条
abn= function skip() {
    if(v==1){
        var abc=document.getElementById('myAudio').currentTime;
        aac=document.getElementById('myAudio').duration;
        h2.value = abc;
        h2.max = aac;
        h1.style.left=364/aac*abc+"px";
    }
}

// 打开网页时检查是否播放音乐
// function c1(){
//     var video1 = document.getElementById('myAudio')
//     if(!video1.paused){
//       vk=setInterval(abn,600);
//     }else{
//       clearInterval(vk);
//       clearInterval(vk1);
//     }
// }
// vk1=setInterval(c1,600);


// js修改audio的src属性,即播放链接
function getMp3Detail() {
    mp3_Hash = document.getElementById('myAudio').getAttribute("data-hash");
    let play_hash = mp3_Hash;
    let searchQualityUrl = 'http://m.kugou.com/app/i/getSongInfo.php?cmd=playInfo&hash=' + play_hash;
    // 查询音质
    GM_xmlhttpRequest({
        method: "get",
        url: searchQualityUrl,
        onload: function (r) {
            let jsonTxt = r.responseText;
            let json = JSON.parse(jsonTxt);
            albumid = json.albumid.toString();
            g_hash = json.extra['320hash'];
            if (g_hash == '') {
                button_g.style.display = 'none';
            } else {
                button_g.style.display = 'block';
                play_hash = g_hash;
            }
            sq_hash = json.extra.sqhash;
            if (sq_hash == '') {
                button_ws.style.display = 'none';
            } else {
                button_ws.style.display = 'block';
                play_hash = sq_hash;
            }
            // 访问第三方解析无损接口
            url = "http://8.142.95.208:5001/url/byhash?hash=" + play_hash + "&albumid=" + albumid;
            getSqMp3Play(url);
            x=0;
            bb=0;
            cc=0;
            jia=0;

      }
    })
}


// 删除播放界面导航栏

sc_cc1=document.getElementsByClassName('cmhead1');
sc_cc2=document.getElementsByClassName('cmhead2');
sc_cc3=document.getElementsByClassName('singerContent clearfix');
sc_cc1[0].remove()
sc_cc2[0].remove()

//添加首页
var ss_s= document.createElement("iframe");
ss_s.id = "ss_s";
ss_s.style.width = "100%";
ss_s.style.height="calc(97vh - 80px)";
ss_s.src="https://www.kugou.com/";
ss_s.style.border="0px";
ss_s.style.overflowY="scroll";
ss_s.style.overflowX="scroll";
document.body.appendChild(ss_s);




//添加歌词
var yc=document.getElementById('audioModule')
var di_v1= document.createElement("div");
di_v1.id = "di_v";
di_v1.style.width = "100%";
di_v1.style.height = "30px";
di_v1.innerText="暂无歌词";
di_v1.style.position="absolute";
di_v1.style.left="0px";
di_v1.style.fontSize="17px";
di_v1.style.top="-30px";
di_v1.style.textAlign="center";
di_v1.style.backgroundColor="Gray";
// di_v1.style.zIndex="1001";
yc.appendChild(di_v1);
var ss_xs=document.getElementsByClassName('showHide-playbar');
ss_xs[0].style.marginTop="-125px";

function gc_hq(){
  sc_cc4=document.getElementsByClassName('ie8FontColor playOver')[0].innerHTML
  document.getElementById("di_v").innerText=sc_cc4
}


//调整首页高度
var ss_sss=document.getElementById('ss_s')
ss_xs[0].onclick=function(){
  // console.log(ss_sss.style.height)
  if(ss_sss.style.height=="calc(97vh - 80px)"){
    ss_sss.style.height="calc(112vh - 80px)";
  }else{
    ss_sss.style.height="calc(97vh - 80px)";
  }
  // ss_sss.style.height="calc(112vh - 80px)";
}







//添加播放界面隐藏按钮

var input_sk= document.createElement("span");
input_sk.id = "yc";
input_sk.style.width = "36px";
input_sk.style.height = "36px";
input_sk.style.backgroundImage="url(https://www.kugou.com/common/images/icon_rs_i4.png)";
input_sk.style.backgroundSize="100%";
input_sk.style.position="absolute";
input_sk.style.right="-100px";
input_sk.style.top="25px";
input_sk.style.zIndex="1001";
var yc_jia=document.getElementsByClassName('mode-volume-list');
yc_jia[0].appendChild(input_sk);

var spa=document.getElementsByClassName('mainPage');
var yc_1=document.getElementById('yc');
spa[0].style.position="fixed";
spa[0].style.width="100%";
spa[0].style.top="calc(110vh - 80px)";
spa[0].style.transition="top 1s linear 0s"
var ge_c=document.getElementById('di_v');

gc_ss=setInterval(gc_hq,"900");
yc_1.onclick=function(){
  if(spa[0].style.top !="0px"){
    spa[0].style.top="0px"
    ge_c.style.display="none"
    ss_xs[0].style.marginTop="-96px";
    clearInterval(gc_ss);
    yc_1.style.transform = "rotate(180deg)";
  }else{
    yc_1.style.transform = "rotate(0deg)";
    spa[0].style.top= "calc(110vh - 80px)";
    ge_c.style.display="block"
    ss_xs[0].style.marginTop="-125px";

    gc_ss=setInterval(gc_hq,"900");

  }

}


//播放界面下移
var qu_top=document.getElementsByClassName('content');
qu_top[0].style.top="0px"

//歌词隐藏与显示按钮
// var yc=document.getElementById('')
var di_gc_c= document.createElement("span");
di_gc_c.id = "di_gc_cc";
di_gc_c.style.width = "30px";
di_gc_c.style.height = "30px";
di_gc_c.innerText="词";
di_gc_c.style.position="absolute";
di_gc_c.style.right="-50px";
di_gc_c.style.top="30px";
di_gc_c.style.zIndex="1001";
di_gc_c.style.fontSize="17px";
di_gc_c.style.color="white"
// var kz_mb=document.getElementsByClassName('mode-volume-list');

yc_jia[0].appendChild(di_gc_c);

var di_gc_cc=document.getElementById('di_gc_cc')
var di_vv1=document.getElementById('di_v')
di_gc_cc.onclick=function(){
  if(spa[0].style.top !="0px"){
    if(di_vv1.style.display=="none"){
      gc_ss=setInterval(gc_hq,"900");
      di_vv1.style.display="block";
      ss_sss.style.height="calc(97vh - 80px)";
      ss_xs[0].style.marginTop="-125px";
    }else{
      di_vv1.style.display="none";
      ss_xs[0].style.marginTop="-96px";
      clearInterval(gc_ss);
      ss_sss.style.height="calc(103vh - 80px)";
    }
  }
}