您需要先安装一个扩展,例如 篡改猴、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);
- }
- })();