Tải tối đa 200 chương từ truyen.tangthuvien.vn
目前為
// ==UserScript==
// @name Chapter Downloader
// @namespace http://tampermonkey.net/
// @version 3.0
// @description Tải tối đa 200 chương từ truyen.tangthuvien.vn
// @author Bạn
// @match https://truyen.tangthuvien.vn/doc-truyen/*
// @grant none
// ==/UserScript==
(function () {
'use strict';
let maxChapters = 200;
let downloadedChapters = 0;
let isAutoDownloading = false;
// UI Panel setup
const panel = document.createElement('div');
panel.innerHTML = `
<textarea id="content-textarea" style="width:100%; height:300px; margin-bottom:10px;"></textarea>
<button id="start-btn">Bắt đầu</button>
<button id="stop-btn">Dừng</button>
<button id="clear-btn">Xoá</button>
<button id="copy-btn">Sao chép</button>
<div style="font-size: 12px; color: gray; margin-top: 10px;">
Tải tối đa ${maxChapters} chương.
</div>
`;
Object.assign(panel.style, {
position: 'fixed',
top: '10%',
right: '10px',
width: '300px',
backgroundColor: '#f8f8f8',
border: '1px solid #ccc',
borderRadius: '5px',
padding: '10px',
zIndex: 9999,
boxShadow: '0 0 10px rgba(0,0,0,0.2)',
});
document.body.appendChild(panel);
const textarea = document.getElementById('content-textarea');
const startBtn = document.getElementById('start-btn');
const stopBtn = document.getElementById('stop-btn');
const clearBtn = document.getElementById('clear-btn');
const copyBtn = document.getElementById('copy-btn');
// Helper: get current chapter content
function extractChapterContent() {
const titleElement = document.querySelector('h2');
const contentElement = document.querySelector('.box-chap');
if (!titleElement || !contentElement) return false;
const title = titleElement.innerText.trim();
const content = contentElement.innerText.trim();
if (textarea.value) {
textarea.value += `\n\n---\n\n${title}\n\n${content}`;
} else {
textarea.value = `${title}\n\n${content}`;
}
downloadedChapters++;
return true;
}
// Helper: go to next chapter
function goToNextChapter() {
const nextBtn = document.querySelector('.bot-next_chap.bot-control');
if (nextBtn) nextBtn.click();
}
// Monitor for new page load
function waitForNewContent(callback) {
const oldTitle = document.querySelector('h2')?.innerText;
const checkInterval = setInterval(() => {
const newTitle = document.querySelector('h2')?.innerText;
if (newTitle && newTitle !== oldTitle) {
clearInterval(checkInterval);
callback();
}
}, 800);
}
function startAutoDownload() {
isAutoDownloading = true;
downloadedChapters = 0;
downloadLoop();
}
function downloadLoop() {
if (!isAutoDownloading || downloadedChapters >= maxChapters) {
console.log('✅ Dừng tự động.');
isAutoDownloading = false;
return;
}
const success = extractChapterContent();
if (!success) {
console.log('⚠️ Không tìm thấy nội dung.');
isAutoDownloading = false;
return;
}
goToNextChapter();
waitForNewContent(() => {
setTimeout(downloadLoop, 1000);
});
}
// Event listeners
startBtn.addEventListener('click', startAutoDownload);
stopBtn.addEventListener('click', () => { isAutoDownloading = false; });
clearBtn.addEventListener('click', () => { textarea.value = ''; });
copyBtn.addEventListener('click', () => {
textarea.select();
document.execCommand('copy');
alert('📋 Đã sao chép!');
});
})();