您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
导出 想看、看过、清单 | Export Want, watched, list
// ==UserScript== // @name JavDB 导出 想看、看过、清单(改) // @namespace 导出想看 // @version 1.0 // @description 导出 想看、看过、清单 | Export Want, watched, list // @include https://javdb*.com/users/want_watch_videos* // @include https://javdb*.com/users/watched_videos* // @include https://javdb*.com/users/list_detail* // @include https://javdb*.com/lists* // @require https://cdn.sheetjs.com/xlsx-0.20.3/package/dist/xlsx.full.min.js // @grant GM_xmlhttpRequest // @grant GM_listValues // @license MIT // ==/UserScript== let allVideosInfo = JSON.parse(localStorage.getItem('allVideosInfo')) || []; let allowExport = JSON.parse(localStorage.getItem('allowExport')) || false; let exportButton = null; let url = window.location.href; //获取视频信息 function getVideosInfo() { const videoElements = document.querySelectorAll('.item'); const videosInfo = Array.from(videoElements).map((element) => { const title = element.querySelector('.video-title').textContent.trim(); const [id, ...titleWords] = title.split(' '); const formattedTitle = titleWords.join(' '); const [score, scoreNumber] = element.querySelector('.value').textContent.replace(/[^0-9-.,]/g, '').split(','); const releaseDate = element.querySelector('.meta').textContent.replace(/[^0-9-]/g, ''); return { id, title: formattedTitle, score: Number(score), scoreNumber: Number(scoreNumber), releaseDate: releaseDate }; }); return videosInfo; } // 翻页 function scrapeAllPages() { const videosInfo = getVideosInfo(); allVideosInfo = allVideosInfo.concat(videosInfo); localStorage.setItem('allVideosInfo', JSON.stringify(allVideosInfo)); const nextPageButton = document.querySelector('.pagination-next'); if (nextPageButton) { nextPageButton.click(); setTimeout(() => scrapeAllPages(), 2000); } else { exportVideosInfo(); } } // 导出数据 function exportVideosInfo() { allowExport = false; localStorage.setItem('allowExport', JSON.stringify(allowExport)); allVideosInfo.sort((a, b) => a.id.localeCompare(b.id)); const json = JSON.stringify(allVideosInfo); const jsonBlob = new Blob([json], { type: 'application/json' }); const jsonUrl = URL.createObjectURL(jsonBlob); const downloadLink = document.createElement('a'); const dateTime = (new Date()).toISOString().replace('T', ' ').split('.')[0]; let fileName = ''; if (url.includes('/watched_videos')) { fileName = 'javdb看过的影片'; } else if (url.includes('/want_watch_videos')) { fileName = 'javdb想看的影片'; } else if (url.includes('/list_detail')) { const breadcrumb = document.getElementsByClassName('breadcrumb')[0]; const li = breadcrumb.parentNode.querySelectorAll('li'); fileName = li[1].innerText; } else if (url.includes('/lists')) { fileName = document.querySelector('.actor-section-name').innerText; } // 导出xlsx fileName = fileName + " "+dateTime; const worksheet = XLSX.utils.json_to_sheet(allVideosInfo); const workbook = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(workbook, worksheet); XLSX.writeFile(workbook, fileName+".xlsx", { compression: true }); //下方注释的是导出json // downloadLink.href = jsonUrl; // downloadLink.download = `${fileName} ${dateTime}.json`; // document.body.appendChild(downloadLink); // downloadLink.click(); localStorage.removeItem('allVideosInfo'); exportButton.textContent = '导出完毕'; } // 开始导出 function startExport() { const allImages = document.querySelectorAll('img'); //移除图像增加速度 allImages.forEach((image) => { image.remove(); }); allowExport = true; localStorage.setItem('allowExport', JSON.stringify(allowExport)); exportButton.textContent = '导出中...'; exportButton.disabled = true; scrapeAllPages(); } // 创建导出按钮 function createExportButton() { exportButton = document.createElement('button'); exportButton.textContent = '导出 表格'; exportButton.className = 'button is-small'; exportButton.addEventListener('click', startExport); if (url.includes('/list_detail')) { document.querySelector('.breadcrumb').querySelector('ul').appendChild(exportButton); } else { document.querySelector('.toolbar').appendChild(exportButton); } } // 方法入口 if (url.includes('/watched_videos') || url.includes('/want_watch_videos') || url.includes('/list_detail') || url.includes('/lists') ) { createExportButton(); if (allowExport) { startExport(); } }