您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Merge and copy
当前为
// ==UserScript== // @name Copy-Text // @version 1.0 // @description Merge and copy // @author Ep Tien Sinh // @match *://69shuba.cx/*/* // @match *://www.qidian.com/chapter/* // @match *://fanqienovel.com/reader/* // @match *://www.ixdzs8.tw/* // @match *://www.qimao.com/*/* // @match *://www.keleshuba.net/* // @match *://www.17k.com/* // @match *://www.piaotia.com/*/*/*/* // @grant GM_setClipboard // @grant GM_download // @namespace https://gf.qytechs.cn/users/1402485 // ==/UserScript== (function() { 'use strict'; // Cấu hình cho từng trang bằng cách sử dụng một đối tượng var pageConfigs = [ { urlContains: '69shuba.cx/*', headerSelector: 'body > div.container > div.mybox > div.txtnav > h1', contentSelector: 'body > div.container > div.mybox > div.txtnav', trashSelectors: [ '#txtright', 'div.contentadv', 'div.bottom-ad', 'div.txtinfo.hide720' // Thêm các selector 'rác' khác tại đây ] }, { urlContains: 'www.qidian.com', headerSelector: '#reader-content > div.min-h-100vh.relative.z-1.bg-inherit > div > div.relative > div > h1', contentSelector: 'div.enable-review', trashSelectors: [ '#reader-content > div > div > div.relative > div > div.text-s-gray-500.mt-4px.text-bo4.flex.items-center.flex-wrap', 'span.review' ] }, { urlContains: 'fanqienovel.com', headerSelector: 'div.muye-reader-box-header > h1', contentSelector: 'div.muye-reader-content' }, { urlContains: 'ixdzs8.tw', headerSelector: '#page > article > h3', contentSelector: '#page > article > section' }, { urlContains: 'www.qimao.com', headerSelector: '#__layout > div > div.wrapper.reader.reader-layout-theme > div.main > div > div > div > div.chapter-detail-wrap.reader-box > div.chapter-detail-wrap-info > h2', contentSelector: '#__layout > div > div.wrapper.reader.reader-layout-theme > div.main > div > div > div > div.chapter-detail-wrap.reader-box > div.chapter-detail-wrap-content > div.show-part > div' }, { urlContains: 'www.keleshuba.net', headerSelector: '#nr_title', contentSelector: '#nr1', trashSelectors1: [ 'div[data-ad-slot="1016693305"]' ] }, { urlContains: 'www.17k.com', headerSelector: '#nr_title', contentSelector: '#nr1', trashSelectors1: [ 'div[data-ad-slot="1016693305"]' ] }, { urlContains: 'www.piaotia.com', headerSelector: '#content > h1', contentSelector: '#content', trashSelectors1: [ '#content > div', '#content > table' ] }, // Thêm cấu hình cho các trang khác tương tự ]; function mergeAndCopy(config) { var headerElement = document.querySelector(config.headerSelector); var contentElement = document.querySelector(config.contentSelector); var trashSelectors = config.trashSelectors || []; trashSelectors.forEach(function(selector) { var trashElements = document.querySelectorAll(selector); trashElements.forEach(function(element) { element.remove(); }); }); if (headerElement && contentElement) { var headerContent = headerElement.textContent.trim().replace(/\s{2,}/g, '\n'); var contentHtml = contentElement.innerHTML; var contentText = contentHtml.replace(/ /g, ' ') .replace('(adsbygoogle = window.adsbygoogle || []).push({});', '') .replace(/<br\s*[\/]?>/gi, '\n') .replace(/<\/p>/gi, '\n') .replace(/<p[^>]*>/gi, '') .replace(/<[^>]+>/g, ''); contentText = contentText.trim().replace(/\s{2,}/g, '\n').replace(/\n{3,}/g, '\n\n'); var lines = contentText.split('\n'); var headerPattern = headerContent.replace(/第\d+章/, '第\\d+章'); var headerRegex = new RegExp(headerPattern); if (lines.length > 0 && headerRegex.test(lines[0].trim())) { lines[0] = lines[0].replace(headerRegex, '').trim(); } contentText = lines.join('\n').trim(); if (window.location.href.includes('www.qimao.com')) { var headerLines = headerContent.split('\n'); if (headerLines.length > 1) { headerContent = headerLines.join(' ').trim(); // Gộp hai dòng tiêu đề lại } } var mergedContent = headerContent + '\n\n' + contentText + '\n\n'; var mergedLines = mergedContent.split('\n'); if (window.location.href.includes('www.piaotia.com')) { if (mergedLines.length > 10) { mergedContent = mergedLines.slice(10).join('\n'); } } else if (window.location.href.includes('69shuba.cx')) { var wrongChapter = /^\d+\.\s*(第\d+章)/; var correctChapter = /^第\d+章/; var line = mergedLines[0].trim(); if (wrongChapter.test(line)) { mergedLines[0] = line.replace(wrongChapter, '$1').trim(); } if (mergedLines.length > 2) { var line3 = mergedLines[2].trim(); if (correctChapter.test(line3)) { mergedLines.splice(2, 1); } } mergedContent = mergedLines.join('\n'); } return mergedContent; } return ''; } function navigate(direction) { var buttonTexts = direction === 'next' ? ['下一章', '下一页'] : ['上一章', '上一页']; var button = null; buttonTexts.some(text => { button = Array.from(document.querySelectorAll('a, button, span')).find(el => el.textContent.trim() === text); return button !== undefined; // Dừng vòng lặp nếu tìm thấy }); if (button) { if (button.tagName.toLowerCase() === 'a') { window.location.href = button.href; } else { button.click(); } } } function applyPageConfig() { var currentUrl = window.location.href; var config = pageConfigs.find(function(config) { return currentUrl.includes(config.urlContains); }); if (config) { return mergeAndCopy(config); } return ''; } function getCurrentPageConfig() { var currentUrl = window.location.href; return pageConfigs.find(function(config) { return currentUrl.includes(config.urlContains); }); } function checkNavigationButtons() { var nextTexts = ['下一章', '下一页']; var prevTexts = ['上一章', '上一页']; var nextButton = null; var backButton = null; nextTexts.some(text => { nextButton = Array.from(document.querySelectorAll('a, button, span')).find(el => el.textContent.trim() === text); return nextButton !== undefined; }); prevTexts.some(text => { backButton = Array.from(document.querySelectorAll('a, button, span')).find(el => el.textContent.trim() === text); return backButton !== undefined; }); if (nextButton) { nextButton.style.display = 'block'; } if (backButton) { backButton.style.display = 'block'; } } function checkNavigationButtonsOnLoad() { checkNavigationButtons(); } var autoClickInterval; var isCopying = false; var copiedChapters = []; function startAutoClick() { autoClickInterval = setInterval(function() { if (!isCopying) { isCopying = true; var currentPageConfig = getCurrentPageConfig(); if (currentPageConfig) { var mergedContent = applyPageConfig(); if (!copiedChapters.includes(mergedContent)) { appendToClipboard(mergedContent); copiedChapters.push(mergedContent); } } setTimeout(function() { var nextButtonExists = checkNextButtonExists(); if (!nextButtonExists) { // Dừng auto-click nếu không còn chương tiếp theo stopAutoClick(); return; } navigate('next'); setTimeout(function() { isCopying = false; }, 1000); // Tăng thêm thời gian chờ sau khi chuyển chương để đảm bảo quá trình copy hoàn thành }, 800); // Chuyển chương sau 0.8 giây } }, 1500); // Điều chỉnh thời gian chờ để tránh copy lặp lại (tăng lên 1.5 giây) autoClickButton.textContent = 'Stop Auto'; localStorage.setItem('autoClickRunning', 'true'); } function checkNextButtonExists() { var buttonTexts = ['下一章', '下一页']; // Các văn bản cho nút "Next" var nextButton = null; buttonTexts.some(text => { nextButton = Array.from(document.querySelectorAll('a, button, span')).find(el => el.textContent.trim() === text); return nextButton !== undefined; }); return nextButton !== undefined; } function clearClipboardAndStartAutoClick() { navigator.clipboard.writeText('').then(function() { startAutoClick(); }, function(err) { }); } function appendToClipboard(newContent) { navigator.clipboard.readText().then(function(currentContent) { const combinedContent = currentContent + newContent; navigator.clipboard.writeText(combinedContent).then(function() { }, function(err) { }); }, function(err) { }); } function stopAutoClick() { clearInterval(autoClickInterval); autoClickInterval = null; autoClickButton.textContent = 'Auto Click'; localStorage.removeItem('autoClickRunning'); var headerText = 'clipboard'; navigator.clipboard.readText().then(clipboardContent => { if (clipboardContent) { var blob = new Blob([clipboardContent], { type: 'text/plain' }); let downloadLink = window.URL.createObjectURL(blob); let downloadArgs = { url: downloadLink, name: `${headerText}.txt` }; GM_download(downloadArgs); } }).catch(err => { }); } var copyNextButton = createButton('Copy & Next', '50px', '490px', function() { var mergedContent = applyPageConfig(); // Lấy nội dung hợp nhất GM_setClipboard(mergedContent); setTimeout(function() { navigate('next'); }, 1000); }); document.body.appendChild(copyNextButton); var autoClickButton = createButton('Auto Click', '50px', '370px', function() { if (!autoClickInterval) { clearClipboardAndStartAutoClick(); } else { stopAutoClick(); } }); document.body.appendChild(autoClickButton); var nextButton = createButton('Next Chương', '10px', '490px', function() { navigate('next'); checkNavigationButtons(); }); document.body.appendChild(nextButton); var backButton = createButton('Back Chương', '10px', '370px', function() { navigate('back'); checkNavigationButtons(); }); document.body.appendChild(backButton); function createButton(text, bottom, left, clickHandler) { var button = document.createElement('button'); button.textContent = text; button.style.position = 'fixed'; button.style.bottom = bottom; button.style.left = left; button.style.zIndex = '9999'; button.style.width = '110px'; button.style.height = '35px'; button.style.backgroundColor = text.includes('Next') ? 'green' : 'blue'; button.style.color = 'white'; button.addEventListener('mousedown', function() { button.style.backgroundColor = 'yellow'; button.style.color = 'black'; }); button.addEventListener('mouseup', function() { button.style.backgroundColor = text.includes('Next') ? 'green' : 'blue'; button.style.color = 'white'; }); button.addEventListener('click', clickHandler); return button; } if (localStorage.getItem('autoClickRunning') === 'true') { startAutoClick(); } function main() { checkNavigationButtonsOnLoad(); applyPageConfig(); } document.addEventListener('DOMContentLoaded', main); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址