您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
给虾米歌单添加歌曲封面(新版本)
// ==UserScript== // @name xiami album // @namespace http://tampermonkey.net/ // @version 0.1 // @description 给虾米歌单添加歌曲封面(新版本) // @description:en insert album for xiami music(for new version) // @author Beats0 // @match https://www.xiami.com/favorite/* // @match https://www.xiami.com/collect/* // @grant none // @require https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.min.js // ==/UserScript== (function () { 'use strict' let href = window.location.href let flag = false const n = document.cookie.match(/(?:^|;\s*)xm_sg_tk=([^;]*)/); const a = n && n[1] if (!a) return const showFavoriteAlbum = () => { const hasPage = document.querySelector('.rc-pagination-item-active') const page = hasPage ? Number(document.querySelector('.rc-pagination-item-active').getAttribute('title')) : 1 const userId = href.match(/\d+/)[0] const params = { type: 1, pagingVO: { page, pageSize: 100 }, userId } const r = a.split('_')[0] + '_xmMain_' + '/api/favorite/getFavorites' + '_' + JSON.stringify(params) const _s = md5(r) const trs = document.querySelectorAll('.table-container table tbody tr') if(trs[0].childElementCount !== 5) return fetch(`https://www.xiami.com/api/favorite/getFavorites?_q=%7B%22type%22:1,%22pagingVO%22:%7B%22page%22:${page},%22pageSize%22:${params.pagingVO.pageSize}%7D,%22userId%22:%22${userId}%22%7D&_s=${_s}`, { method: 'GET' }).then(response => response.json()) .then((data) => { if (data.code !== 'SUCCESS') { window.alert('请求失败!') return } const { songs } = data.result.data songs.forEach((song, index) => { const albumEl = document.createElement('td') albumEl.innerHTML = ` <div style=" display: flex; width: 100px; height: 100px; margin-left: -10px; "> <img src="${song.albumLogoS}" style="width: 100%;"> </div>` trs[index].insertBefore(albumEl, trs[index].childNodes[0]) }) }) } const showCollectAlbum = () => { const hasPage = document.querySelector('.rc-pagination-item-active') const page = hasPage ? Number(document.querySelector('.rc-pagination-item-active').getAttribute('title')) : 1 const listId = Number(href.match(/\d+/)[0]) const params = { listId, pagingVO: { page, pageSize: 30 } } const r = a.split('_')[0] + '_xmMain_' + '/api/collect/getCollectSongs' + '_' + JSON.stringify(params) const _s = md5(r) const trs = document.querySelectorAll('.table-container table tbody tr') if(trs[0].childElementCount !== 5) return fetch(`https://www.xiami.com/api/collect/getCollectSongs?_q=%7B%22listId%22:${listId},%22pagingVO%22:%7B%22page%22:${page},%22pageSize%22:${params.pagingVO.pageSize}%7D%7D&_s=${_s}`, { method: 'GET' }).then(response => response.json()) .then((data) => { if (data.code !== 'SUCCESS') { window.alert('请求失败!') return } const { songs } = data.result.data songs.forEach((song, index) => { const albumEl = document.createElement('td') albumEl.innerHTML = ` <div style=" display: flex; width: 100px; height: 100px; margin-left: -10px; "> <img src="${song.albumLogoS}" style="width: 100%;"> </div>` trs[index].insertBefore(albumEl, trs[index].childNodes[0]) }) }) } const switchAlbum = () => { const collectRe = /ollect/ const favoriteRe = /favorite/ if (collectRe.test(href)) { showCollectAlbum() } else if (favoriteRe.test(href)) { showFavoriteAlbum() } } const clickListener = () => { const pagers = document.querySelectorAll('.rc-pagination li') for (let i = 0; i < pagers.length; i++) { pagers[i].addEventListener('click', () => { setTimeout(switchAlbum, 2000) }, false) } } const injected = () => { setTimeout(function () { switchAlbum() clickListener() }, 3000) } if(!flag) { injected() flag = true } document.addEventListener('click', () => { const newHref = window.location.href if(flag && href !== newHref) { injected() href = newHref console.log(href) } }) })()