您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
下载所有棋谱 新浪围棋
// ==UserScript== // @name Get sgf files // @name:zh-CN 下载所有棋谱 // @name:zh-TW 下載所有sgf文件 // @namespace http://tampermonkey.net/ // @version 0.2 // @description Retrieve all sgf files with one click of a button. // @description:zh-cn 下载所有棋谱 新浪围棋 // @description:zh-tw 下載所有sgf文件 新浪围棋 // @author Qiang Li // @match http://sinago.com/gibo/* // @grant none // ==/UserScript== (function() { 'use strict'; console.log('i am running'); // var hrefs = new Array(); var els = document.querySelectorAll(' a[href*="sgf"]') var elsarray = [...els] let title1; let title2; let title3; var elsarray2 = []; elsarray.forEach((xx, index) => { // get the url let s = xx.href.indexOf("http"); let e = xx.href.indexOf("sgf"); let yy = xx.href.substring(s, e + 3); // get the text if (index % 3 === 0){ title1 = xx.innerText; }else if (index % 3 === 1){ title2 = xx.innerText; }else { title3 = xx.innerText; //console.log('title1 ' + title1+',title2 '+title2 +', title3 '+title3 ) // we can create object {title, url} elsarray2.push({name: `${title1}黑-${title2}白-${title3}.sgf`,url:yy}); } }); //console.log(elsarray2); // fetch the first one async function fetchsgf(url) { const res = await fetch(url); const sgf = await res.text(); return sgf; } // counter var counter = 0; function download(content, fileName, contentType) { console.log(counter++ + '. saving '+fileName); var a = document.createElement("a"); var file = new Blob([content], {type: contentType}); a.href = URL.createObjectURL(file); a.download = fileName; a.click(); } function downloadAll(){ console.log("downloadall"); // elsarray2.forEach((o, index) => { setTimeout(() => fetch(o.url) .then(response => response.text()) .then(data => download(data, index+"."+o.name, 'text/plain')) .catch(error => console.log(error)),index*200) }); } function fetch_retry(url, options, n) { return fetch(url, options).catch(function(error) { console.log('error occured'); console.error(error); if (n === 1) throw error; return fetch_retry(url, options, n - 1); }); } AddYT(); //download(jsonData, 'json.txt', 'text/plain'); //fetch(elsarray2[0].url) // .then(response => response.text()) // .then(data => download(data, elsarray2[0].name, 'text/plain')); function AddYT() { var buttonDiv = document.createElement("td"); buttonDiv.id = "punisher"; buttonDiv.style.width = "80"; var addButton = document.createElement("a"); addButton.appendChild(document.createTextNode("下载棋谱")); addButton.style.width = "100%"; addButton.style.cursor = "pointer"; addButton.style.height = "inherit"; addButton.style.backgroundColor ="red"; addButton.style.color = "white"; addButton.style.border = "0"; addButton.style.borderRadius = "2px"; addButton.style.fontSize = "1rem"; addButton.style.fontFamily = "inherit"; addButton.style.textAlign = "center"; addButton.style.textDecoration = "none"; addButton.onclick = downloadAll; buttonDiv.appendChild(addButton); var targetElement = document.querySelectorAll("select"); var tp = targetElement[0].parentNode.parentNode; tp.appendChild(buttonDiv); } })();