您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
Splits long paragraphs at the period nearest to the split point.
// ==UserScript== // @name Split Long Paragraphs // @namespace http://tampermonkey.net/ // @version 3 // @description Splits long paragraphs at the period nearest to the split point. // @match *://ranobes.top/* // @match *://ranobes.net/* // @icon https://www.google.com/s2/favicons?sz=64&domain=ranobes.top // @license MIT // @grant none // ==/UserScript== (function() { 'use strict'; function ellipsize(s) { return s.substring(0, 64).trim().replace(/[^\w\s\d]+$/, "") + "..."; } function log(text) { console.log(`Split Long Paragraphs: ${text}`); } const MAX_WORD_COUNT = 80; const section = document.querySelector(".story #arrticle"); if (!section) { return; } const nodes = Array.from(section.querySelectorAll('p')); section.childNodes.forEach(child => { if (child.nodeType === Node.TEXT_NODE) { nodes.push(child); } }) for (let i = 0; i < nodes.length; i++) { const node = nodes[i]; const text = node.textContent.trim(); const words = text.split(/\s+/); // Max word count before splitting if (words.length > MAX_WORD_COUNT + Math.floor(MAX_WORD_COUNT / 2)) { // Find closest split point to MAX_WORD_COUNT at a period const sentences = text.split(/(?<=[^\.]\.)\s+/); let sentenceIndex = 0; let wordCount = 0; for (const sentence of sentences) { wordCount += sentence.split(/\s+/).length; // log(`${ellipsize(sentence)} totalWordCount:${wordCount}`); if (wordCount >= MAX_WORD_COUNT) { break; } sentenceIndex += 1; } if (wordCount !== 0) { log(`Splitting... \`${ellipsize(text)}\` wordCount:${words.length} sentenceIndex:${sentenceIndex} totalSentences:${sentences.length}`); node.textContent = ''; let p = document.createElement('p'); p.textContent = sentences.slice(0, sentenceIndex + 1).join(" ").trim(); node.parentNode.insertBefore(p, node); p = document.createElement('p'); p.textContent = sentences.slice(sentenceIndex + 1).join(" ").trim(); node.parentNode.insertBefore(p, node); nodes.push(p); node.remove(); } } } })();