您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
A script that makes easier to get lyrics from Chinese Touhou Wiki pages.
// ==UserScript== // @name thwiki.cc Lyrics Reader // @name:en Lyrics Reader on Chinese Touhou Wiki // @namespace https://takkkane.tumblr.com/scripts/lyricsReaderChinese // @supportURL https://twitter.com/TaxDelusion // @description A script that makes easier to get lyrics from Chinese Touhou Wiki pages. // @version 0.1.1 // @include https://thwiki.cc/* // @require https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/notify/0.4.2/notify.min.js // @grant none // ==/UserScript== $(document).ready(function () { //they're just in a row above the first lyrics row var lyricsHeaders = $("body").find(".tt-lyrics-header > td.tt-mainh, td.tt-tranh"); lyricsHeaders.each(function (index, header) { var onClickHandler = function () { var lyrics = ""; var line = ""; var lineSeparator = '\r'; $("body").find("tr.tt-main-ja, tr.tt-main-en, tr.tt-lyrics-sep").find("td:nth-child(" + (index + 2) + ")").each(function (i, e) { line = e.textContent.trim(); lyrics += (line + lineSeparator); }); lyrics = lyrics.trim(); utils.copyToClipboard(lyrics, header); }; $(header).on("click", onClickHandler); $(header).append("<span style='color:navy; color-background:white'>ℹ</span>"); }); }); // ----- utils var utils = { copyToClipboard: function (data, domElement) { var textArea = document.createElement("textarea"); textArea.value = data; domElement.appendChild(textArea); textArea.focus(); textArea.select(); try { var successful = document.execCommand('copy'); var msg = successful ? 'successful' : 'unsuccessful'; console.log('Fallback: Copying text command was ' + msg); $.notify('Copying lyrics was ' + msg + '!', {'position': 'top center', 'className': successful ? 'success' : 'error'}); } catch (err) { console.error('Fallback: Oops, unable to copy', err); } domElement.removeChild(textArea); } }; console.log("Loading done!");