您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add buttons to load the .lrc format file on the edit screen on typing-tube.net.
当前为
// ==UserScript== // @name lrcReader[typing-tube.net] // @namespace http://tampermonkey.net/lrcReader // @version 0.2 // @description Add buttons to load the .lrc format file on the edit screen on typing-tube.net. // @author Spacia // @match https://typing-tube.net/movie/edit?videoid=* // @grant none // ==/UserScript== //This is the Entry point. (function() { 'use strict'; AddLrcReaderElements(); })(); function AddLrcReaderElements(){ // Add a div element to be container to the bottom of the navigation menu "edit". var elDiv = document.createElement("div"); elDiv.classList.add('row'); elDiv.classList.add('ml-2'); elDiv.classList.add('w-100'); elDiv.id = "ContainerOflrcReader"; var elEdit = document.getElementById("edit"); elEdit.appendChild(elDiv); var elDevId = document.getElementById("ContainerOflrcReader"); // Add a button for uploading .lrc format file in container created by former code. var elTextDiv = document.createElement("div"); elTextDiv.classList.add("col-2"); elTextDiv.innerHTML = "lrcファイルを参照"; elDevId.appendChild(elTextDiv); var elForm = document.createElement("form"); elForm.classList.add("col-6"); elForm.innerHTML = "<div><input name='lrcFile' type='file' accept='.lrc'></div>"; elForm.addEventListener('change', onLoadLrc); elDevId.appendChild(elForm); // Add radio buttons to select English or Kana. var elForm2 = document.createElement("form"); elForm2.classList.add("col-4"); elForm2.innerHTML = "<span style='padding-right:20px;'><label><input id='lrcConverTypeKana' name='lrcConvertType' type='radio' value='kana' checked>かな </label></span><span><label><input name='lrcConvertType' type='radio' value='eng'>英語</label></span>"; elDevId.appendChild(elForm2); } function onLoadLrc(event){ var _file = event.target.files[0]; if(_file){ var fr = new FileReader(); fr.onload = function(e) { // A file was loaded. GetLinesOfLyrics(fr.result.split('\n')); } fr.readAsText(_file); }else{ alert("Failed to load file formated .lrc"); } } var isKanaMode; //load mode of kana or english function GetLinesOfLyrics(lines) { isKanaMode = document.getElementById('lrcConverTypeKana').checked; var i = 0; let promise = new Promise((resolve, reject) => { // #1 resolve(true) }) sub(promise, lines, i); } function sub(promise , lines, i){ promise.then((msg) => { // #2 msg = true; var line = lines[i++]; var time; var editedLine; //if empty line then don't execute the rest of code. var ptnOfTimeTag = /\[\d\d:\d\d:\d\d\]/g; if(ptnOfTimeTag.test(line) == false){ msg = false; } if(msg == true){ //get time for this line. var ptnOfTwoDigidTime = /\d\d/g; var timesStr = line.match(ptnOfTwoDigidTime); var minute = parseFloat(timesStr[0]); var second = parseFloat(timesStr[1]); var centiSec = parseFloat(timesStr[2]); time = minute * 60 + second + centiSec * 0.01; //console.log(time); //get line of text. editedLine = line.replace(ptnOfTimeTag,"").trim(); //console.log(editedLine); //Add time and lineLyrics to the timeline Table in the navigation menu "edit". document.getElementById("time").value = time; document.getElementById("words").value = editedLine; } return msg; }).then((msg) => { if(msg == true){ if(isKanaMode){ command_kakasi(); }else{ command_kakasi_en(); } return new Promise((resolve, reject) => { setTimeout(() => { resolve(msg) }, 1000) }) } return msg; }).then((msg) => { command_add(); if(msg == true){ } return msg; }).then((msg) => { if(i < lines.length){ sub(promise , lines, i); } return msg; }); }