您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Musi.sh fix, https://github.com/TTFM-Labs/public/issues/7#issuecomment-812801722
// ==UserScript== // @name Musi.sh fix // @namespace http://tampermonkey.net/ // @version 0.2 // @description Musi.sh fix, https://github.com/TTFM-Labs/public/issues/7#issuecomment-812801722 // @author You // @match https://musi.sh/* // @icon https://www.google.com/s2/favicons?sz=64&domain=musi.sh // @grant none // @license WTFPL // ==/UserScript== (function() { 'use strict'; var config; function hookMusicKitInstance(i) { var oldSetQueue = i.setQueue; /* i.setQueue = function() { console.log("Musi.sh fix: MusicKit reconfigure"); MusicKit.configure(config); var newInstance = MusicKit.getInstance(); newInstance.setQueue = i.setQueue; newInstance.storekit._eventRegistry = i.storekit._eventRegistry; newInstance._registry = i._registry; console.log("Musi.sh fix: MusicKit instance change to ", newInstance); Object.assign(i, newInstance); console.log("Musi.sh fix: MusicKit old instance ", i); console.log("Musi.sh fix: setQueue", arguments); var setQueuePromise = oldSetQueue.apply(i, arguments); return setQueuePromise; }; */ var flipflop = 0; i.addEventListener("mediaItemDidChange", function() { if (flipflop === 1) { flipflop = 0; return; } console.log("Musi.sh fix: MusicKit mediaItemDidChange position", i.player._queue.position); console.log("Musi.sh fix: MusicKit reconfigure"); MusicKit.configure(config); var newInstance = MusicKit.getInstance(); newInstance.storekit._eventRegistry = i.storekit._eventRegistry; newInstance._registry = i._registry; newInstance.player._queue = i.player._queue; newInstance.player._queue.position -= 1; newInstance.player._registry = i.player._registry; console.log("Musi.sh fix: MusicKit instance change to ", newInstance); Object.assign(i, newInstance); console.log("Musi.sh fix: MusicKit old instance ", i); console.log("Musi.sh fix: MusicKit position", newInstance.player._queue.position); flipflop = 1; newInstance.player.play(); }); console.log("Musi.sh fix: hooked instance"); } window.addEventListener("load", function() { setTimeout(function() { var currInstance = MusicKit.getInstance(); console.log("Musi.sh fix: MusicKit instance initial ", currInstance); config = { developerToken: currInstance.developerToken, app: Object.assign({}, currInstance._bag.app), bitrate: currInstance.bitrate, }; console.log("Musi.sh fix: MusicKit config", config); hookMusicKitInstance(currInstance); }, 1); }, false); })();