您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
lazy livid did not implement https://www.v2ex.com/t/95800 ; please read https://www.v2ex.com/t/632448 for instruction
// ==UserScript== // @name V2EX favorates collection extractor // @namespace https://github.com/cxumol/userscripts // @version 0.1 // @description lazy livid did not implement https://www.v2ex.com/t/95800 ; please read https://www.v2ex.com/t/632448 for instruction // @author cxumol // @match https://www.v2ex.com/my/topics* // @grant GM_xmlhttpRequest // @connect https://www.v2ex.com/my/topics* // ==/UserScript== // Editor: Tampermonkey v4.10 for Firefox // Formater: https://beautifier.io/ window.onload = function() { 'use strict'; // Your code here... let getAllFav = function() { let totalPageNum = Number(document.querySelector(".page_normal:last-of-type").textContent); console.log("totalPageNum: " + totalPageNum); let presentPageNum = 0; // let topicLinks = Object.values(document.getElementsByClassName("item")); let topicLinksO = new Object(); // for keeping the order of pages under async XHRs let topicLinks = new Array(); // store topics with original order let pageCount = 0; if (totalPageNum >= 1) { while (presentPageNum < totalPageNum) { presentPageNum++; // ref https://www.tampermonkey.net/documentation.php?ext=dhdg#GM_xmlhttpRequest GM_xmlhttpRequest({ method: "GET", url: "https://www.v2ex.com/my/topics?p=" + presentPageNum, // responseType: "document", // Greasy Monkey API doesn't support this onload: function(response) { let temp = document.createElement("html"); temp.innerHTML = response.responseText; let thisPresentPageNum = Number(temp.getElementsByClassName("page_current")[0].textContent); console.log("got topics from page # " + thisPresentPageNum); topicLinksO[thisPresentPageNum] = Object.values(temp.getElementsByClassName("item")); // pageCount++; if (pageCount == totalPageNum) { console.log("pageCount: " + pageCount); console.log("totalPageNum: " + totalPageNum); for (let i = 1; i <= totalPageNum; i++) { topicLinks = topicLinks.concat(topicLinksO[i]); } showItems(topicLinks); addDownloader(); } } }) } } // return topicLinks; } let showItems = function(topicLinks) { let resultList = document.createElement("ol"); console.log("Showing Whole Collection!"); for (let i of topicLinks) { let li = document.createElement("li"); li.append(i); resultList.append(li); } if (!document.getElementById("showcase")) { console.log("Rebuilt!"); addShowcase(); } document.getElementById("all_fav").append(resultList); } // let doFavExt = function() { getAllFav() } // let addShowcase = function() { let showcase = document.createElement('div'); showcase.className = "box"; showcase.id = "showcase"; showcase.innerHTML = '<button id="btn_do_fav_ext">Show All Fav Topics</button><div id="all_fav"></div>'; document.getElementById("Rightbar").append(showcase); document.getElementById("btn_do_fav_ext").addEventListener("click", () => doFavExt()); } // let addDownloader = function() { // https://stackoverflow.com/a/18197341 var downloader = document.createElement('a'); downloader.textContent = "Save"; downloader.className = 'page_current'; let HTML2down = document.createElement("html"); HTML2down.innerHTML = `<head> <meta name="Content-Type" content="text/html;charset=utf-8" /> <link rel="stylesheet" type="text/css" media="screen" href="https://www.v2ex.com/css/basic.css" /> <link rel="stylesheet" type="text/css" media="screen" href="https://www.v2ex.com/static/dist/combo.css" /> <link rel="stylesheet" type="text/css" media="screen" href="https://www.v2ex.com/css/desktop.css" /> <link rel="stylesheet" href="https://www.v2ex.com/static/css/tomorrow.css" type="text/css" /> <link rel="icon" sizes="192x192" href="https://www.v2ex.com/static/img/v2ex_192.png" /> <link rel="shortcut icon" href="https://www.v2ex.com/static/img/icon_rayps_64.png" type="image/png" /> </head><body>` + document.getElementById("all_fav").outerHTML + `</body>`; HTML2down.append(); downloader.setAttribute('href', 'data:application/octet-stream,' + encodeURIComponent(HTML2down.outerHTML)); downloader.setAttribute('download', "All_my_V2EX_favorate_collections.html"); document.getElementById("btn_do_fav_ext").after(downloader) } // if (document.readyState == 'complete') { console.log("Initialize!"); addShowcase(); // } };
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址