// ==UserScript== // @name tsumanne dlname // @version 20260809 // @description none // @author none // @match https://*.tsumanne.net/* // ==/UserScript== window.onload = function() { 'use strict'; let svname = location.pathname.split("/")[1]; let marks = ["\n","\t","\"","\\",'/',':','*','?','|',"<",">"]; const maxthrebun = 8; if(svname == "si"){svname = "img";} else if(svname == "my"){svname = "may";} //URLの長さでindexページかスレのページか判別 if(location.pathname.split("/").length < 5){ //indexページ let fsttag = decodeURI(location.pathname.split("/")[2]); let nodes = document.querySelectorAll('[title="ZIPで取得"]'); for(let h = 0; h < nodes.length; h++){ let granode = nodes[h].parentNode.parentNode; let filename = "[" + fsttag + "]"; if(granode.tagName == "TD"){ granode = granode.parentNode; let tags = granode.getElementsByClassName("index")[0].getElementsByTagName("a"); let threno = granode.getElementsByClassName("url")[0].getElementsByTagName("a")[0].textContent.slice(0, -4); for(let i = 0; i < tags.length - 1; i++){ filename += "[" + tags[i].textContent + "]"; } filename = svname + threno + filename; }else{ let tags = granode.getElementsByClassName("category")[0].getElementsByTagName("a"); let threno = granode.getElementsByTagName("dt")[0].getElementsByTagName("a")[0].textContent.slice(0, -4); let threbun = granode.getElementsByClassName("text")[0].textContent.trim().slice(0, maxthrebun); for(let i = 0; i < tags.length - 1; i++){ filename += "[" + tags[i].textContent + "]"; } filename = svname + threno + filename + threbun; } for(var j = 0; j < marks.length; j++){ filename = filename.replace(marks[j], "_"); } nodes[h].setAttribute("download", filename + ".zip"); nodes[h].previousElementSibling.setAttribute("download", filename + ".html"); } }else{ //スレを開いたとき let tags = document.getElementsByTagName("header")[0].getElementsByTagName("p")[0].getElementsByTagName("a"); let threno = document.getElementsByClassName("cno")[0].textContent.slice(3); let threbun = document.getElementsByTagName("blockquote")[0].textContent.slice(0, maxthrebun); let filename = ""; for(let i = 4; i < tags.length - 2; i++){ filename += "[" + tags[i].textContent + "]"; } filename += threbun; for(var j = 0; j < marks.length; j++){ filename = filename.replace(marks[j], "_"); } tags[1].setAttribute("download", svname + threno + filename + ".html"); tags[2].setAttribute("download", svname + threno + filename + ".zip"); } };