您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
You can custom background image of Discord;
当前为
- // ==UserScript==
- // @name Discord - Custom Background Image
- // @namespace http://tampermonkey.net/
- // @version 0.1
- // @description You can custom background image of Discord;
- // @author You
- // @match https://discord.com/channels/*/*
- // @icon https://www.google.com/s2/favicons?domain=discord.com
- // @grant GM.xmlHttpRequest
- // @connect i.imgur.com
- // @license MIT
- // ==/UserScript==
- (async window => {
- 'use strict';
- const intervalTime = 30 * 1000;
- const urls = [
- 'https://i.imgur.com/cHKbKQT.jpeg',
- 'https://i.imgur.com/sqmqy20.png',
- 'https://i.imgur.com/cCL6TPk.jpeg',
- 'https://i.imgur.com/Z6GYpxh.jpeg',
- 'https://i.imgur.com/Z6GYpxh.jpeg',
- 'https://i.imgur.com/FNJdY5h.jpeg',
- 'https://i.imgur.com/uKVG1XM.jpeg'
- ];
- const memo = new Map;
- const get = async url => {
- if(memo.has(url)) return memo.get(url);
- const res = await GM.xmlHttpRequest({
- method: 'GET',
- url: url,
- withCredentials: true,
- responseType: 'arraybuffer',
- });
- const _url = URL.createObjectURL(new Blob([res.response], {type: 'application/octet-binary'}));
- memo.set(url, _url);
- return _url;
- };
- let g_url = await get(urls[0]);
- const wait = resolve => {
- if(document.querySelector('[class^="chatContent"]')) return resolve();
- setTimeout(() => wait(resolve), 500);
- };
- await new Promise(resolve => wait(resolve));
- const set = () => {
- for(const v of document.querySelectorAll('*')) v.style.backgroundColor = 'rgba(0, 0, 0, 0)';
- document.body.children[0].children[3].style.backgroundColor = 'rgba(0, 0, 0, 0.7)';
- Object.assign(document.body.children[0].style, {
- 'background-image': 'url("' + g_url + '")',
- 'background-attachment': 'fixed',
- 'background-position': 'center center',
- 'background-size': 'cover',
- 'background-repeat': 'no-repeat',
- 'transition-duration': '1.5s'
- });
- };
- set();
- let _url = location.href,
- _time = 0,
- index = 0;
- const update = async () => {
- const time = performance.now();
- if(time - _time > intervalTime) {
- _time = Infinity;
- g_url = await get(urls[(++index) % urls.length]);
- _time = time;
- set();
- }
- const url = location.href;
- if(url !== _url) {
- _url = url;
- set();
- }
- requestAnimationFrame(update);
- };
- update();
- })(window.unsafeWindow || window);