Greasy Fork is available in English.
当鼠标悬停在页面的文本上时,自动搜索该文本并显示相关CD试听, 暂未能加载图片
// ==UserScript==
// @name TSDM天使动漫专辑bilibili试听
// @author MasterJack
// @namespace http://greasyfork.icu/zh-CN/users/833787-masterjack
// @version 1.0
// @description 当鼠标悬停在页面的文本上时,自动搜索该文本并显示相关CD试听, 暂未能加载图片
// @include *://www.tsdm39.com/forum.php?mod=forumdisplay&fid=612*
// @include *://www.tsdm39.com/forum.php?mod=forumdisplay&fid=581*
// @include *://www.tsdm39.com/forum.php?mod=forumdisplay&fid=356*
// @include *://www.tsdm39.com/forum.php?mod=forumdisplay&fid=503*
// @include *://www.tsdm39.com/forum.php?mod=forumdisplay&fid=419*
// @include *://www.tsdm39.com/forum.php?mod=forumdisplay&fid=612*
// @include *://www.tsdm39.com/forum.php?mod=forumdisplay&fid=417*
// @include *://www.tsdm39.com/forum.php?mod=forumdisplay&fid=8*
// @include *://www.tsdm39.com/forum.php?mod=forumdisplay&fid=334*
// @include *://www.tsdm39.com/forum.php?mod=forumdisplay&fid=36*
// @include *://www.tsdm39.com/forum.php?mod=forumdisplay&fid=85*
// @include *://www.tsdm39.com/forum.php?mod=forumdisplay&fid=467*
// @include *://www.tsdm39.com/forum.php?mod=forumdisplay&fid=9*
// @include *://www.tsdm39.com/forum.php?mod=forumdisplay&fid=433*
// @include *://www.tsdm39.com/forum.php?mod=forumdisplay&fid=63*
// @include *://www.tsdm39.com/forum.php?mod=forumdisplay&fid=13*
// @include *://www.tsdm39.com/forum.php?mod=forumdisplay&fid=453*
// @include *://www.tsdm39.com/forum.php?mod=forumdisplay&fid=247*
// @include *://www.tsdm39.com/forum.php?mod=forumdisplay&fid=452*
// @include *://www.tsdm39.com/forum.php?mod=forumdisplay&fid=12*
// @include *://www.tsdm39.com/forum.php?mod=forumdisplay&fid=249*
// @include *://www.tsdm39.com/forum.php?mod=forumdisplay&fid=37*
// @include *://www.tsdm39.com/forum.php?mod=forumdisplay&fid=596*
// @grant GM_xmlhttpRequest
// @license GPL version 3
// ==/UserScript==
(function() {
'use strict';
var searchDelay = 500; // 设置延迟时间(以毫秒为单位)
var searchTimeout; // 用于存储搜索延迟的计时器
// 创建一个用于显示CD封面的DOM元素
var coverElement = document.createElement('div5');
coverElement.style.position = 'fixed';
coverElement.style.width = '180px'; // 设置固定宽度为200px
coverElement.style.height = '1000px'; // 设置固定高度为200px
coverElement.style.background = 'rgba(255, 255, 255, 0)'; // 设置背景为白色
coverElement.style.opacity = '1'; // 设置不透明度为1
coverElement.style.transformOrigin = 'top right'; // 设置缩放原点为左上角
coverElement.style.zIndex = '0'; // 设置元素的层叠顺序为9999
coverElement.style.right = '200px'; // 设置固定左边距为10px
coverElement.style.top = '-50px'; // 设置固定上边距为10px
// 创建一个用于显示CD封面结果的容器
var resultContainer = document.createElement('div5');
resultContainer.classList.add('cd-cover-results'); // 添加自定义的CSS类名
resultContainer.style.padding = '0px'; // 添加内边距,调整样式
coverElement.appendChild(resultContainer);
// 将CD封面元素添加到页面
document.body.appendChild(coverElement);
// 监听页面的鼠标悬停事件
document.addEventListener('mouseover', function(event) {
var target = event.target;
if ((target.tagName.toLowerCase() === 'th' && target.classList.contains('common')) ||
(target.tagName.toLowerCase() === 'a' && target.classList.contains('ast'))) {
var searchText = target.textContent.trim(); // 获取鼠标悬停文本
// 删除包含方括号内的任意内容
searchText = searchText.replace(/\[.*?\]/g, '');
// 删除所有空格
searchText = searchText.replace(/\s/g, '');
// 取消之前的搜索延迟计时器
clearTimeout(searchTimeout);
searchTimeout = setTimeout(function() {
// 发起搜索请求
if (searchText) {
searchCDCover(searchText, function(response) {
// 在CD封面结果容器中显示搜索结果
resultContainer.innerHTML = response;
// 缩放显示结果到指定大小(例如缩放到宽度为200px,高度为200px)
coverElement.style.transform = 'scale(0.5)';
});
}
}, searchDelay);
}
else {
// 清空CD封面结果容器和缩放样式
coverElement.style.transform = 'scale(0.5)';
}
});
// 发起搜索请求的函数
function searchCDCover(searchText, callback) {
// 替换为实际的搜索请求URL
var search_first_URL = 'https://m.bilibili.com/search?keyword='
var search_Second_URL = ''
var searchURL = search_first_URL + encodeURIComponent(searchText) + search_Second_URL;
GM_xmlhttpRequest({
method: 'GET',
url: searchURL,
headers: {
'User-Agent': 'Mozilla/5.0 BiliDroid/5.15.0 ([email protected])'
},
onload: function(response) {
callback(response.responseText);
},
onerror: function(error) {
console.error('Error fetching CD cover images:', error);
}
});
}
})();