/* eslint-disable no-extra-semi */ // ==UserScript== // @name 9ku.com 九酷音乐下载 // @namespace https://greasyfork.org/zh-CN/users/812943 // @version 0.0.4 // @description 九酷音乐下载工具,一键另存下载MP3文件,一键复制歌曲文件名 // @author gafish // @match https://www.9ku.com/play/*.htm // @icon https://www.google.com/s2/favicons?domain=9ku.com // @license MIT // @require https://cdn.jsdelivr.net/npm/copy-to-clipboard@3.3.1/example/index.js // @grant none // ==/UserScript== ;(function (jQuery, copyToClipboard) { 'use strict' const box = jQuery('.ppBox') const feifa = jQuery('#feifa') const downloadedKey = 'chrome_plugin_downloaded' let musicInfo const init = () => { const { singer, musicname, song_id, meida } = window const { mp3 } = meida musicInfo = { singer, musicName: musicname, songID: song_id, mp3URL: mp3, downloadFileName: `${singer} - ${musicname}.mp3`, } if (!box[0]) return box.css({ height: 340 }) addDownloadButton() addMp3FileName() hidePalylistAd() const downloaded = getDownloaded() if (downloaded.includes(musicInfo.songID)) { addDownloadedTag() } } const getDownloaded = () => { const downloaded = window.localStorage[downloadedKey] || '[]' const downloadedArr = JSON.parse(downloaded) return downloadedArr } const addDownloadButton = () => { if (!box || !musicInfo) return const downloadBtn = jQuery(` 右键另存MP3文件 `) downloadBtn .css({ display: 'block', backgroundColor: '#f00', color: '#fff', padding: '5px 10px', borderRadius: 5, margin: 10, textAlign: 'center', height: 30, lineHeight: '30px', }) .contextmenu(() => { const downloaded = getDownloaded() if (!downloaded.includes(musicInfo.songID)) { downloaded.push(musicInfo.songID) window.localStorage[downloadedKey] = JSON.stringify(downloaded) } addDownloadedTag() }) box.append(downloadBtn) } const addMp3FileName = () => { if (!box || !musicInfo) return const fileNameContaner = jQuery(`
点击复制文件名
${musicInfo.downloadFileName}
`) fileNameContaner .css({ display: 'block', backgroundColor: '#ccc', color: '#000', padding: '5px 10px', borderRadius: 5, margin: 10, textAlign: 'center', height: 40, lineHeight: '20px', cursor: 'pointer', }) .click(() => { copyToClipboard(musicInfo.downloadFileName) fileNameContaner.find('b').text('已复制') }) box.append(fileNameContaner) } const addDownloadedTag = () => { if (box.find('#downloaded').length) return const downloadedTag = jQuery(`
已下载
`) downloadedTag.css({ position: 'absolute', top: -10, left: -10, zIndex: 99, backgroundColor: 'yellow', color: '#f00', borderRadius: '50%', border: '1px solid #f00', textAlign: 'center', width: 50, height: 50, lineHeight: '50px', transform: 'rotate(-45deg)', }) box.prepend(downloadedTag) } const hidePalylistAd = () => { let i = 0 const findAdLi = () => { if (i > 1000) return const sprr = jQuery('#songlist li[id]') setTimeout(() => { findAdLi() i++ }, 1000) sprr.hide() } findAdLi() } const reShowPlayer = () => { feifa.html(`
该歌曲侵犯相关权益人权利,九酷原站不提供试听
`) window.ndPlayer = new window.KuPlayer() window.musiclist() } const checkMp3 = () => { if (!window.meida.mp3) { setTimeout(checkMp3, 200) return } init() } // 非法音乐,重新显示播放器 if (feifa) { reShowPlayer() } checkMp3() })(window.jQuery, window.copyToClipboard)