Skip to content

Commit 125452b

Browse files
committed
fix charset
1 parent 4cc60f9 commit 125452b

1 file changed

Lines changed: 47 additions & 23 deletions

File tree

DownloadAllContent/DownloadAllContent.user.js

Lines changed: 47 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
// @name:zh-TW 懶人小説下載器
55
// @name:ja 怠惰者小説ダウンロードツール
66
// @namespace hoothin
7-
// @version 0.3
7+
// @version 0.5
88
// @description Fetch and download main content on current page
99
// @description:zh-CN 通用网站内容抓取工具,可批量抓取小说、论坛内容等并保存为TXT文档
1010
// @description:zh-TW 通用網站內容抓取工具,可批量抓取小說、論壇內容等並保存為TXT文檔
@@ -46,12 +46,13 @@
4646
var rocketContent=document.createElement("div");
4747
document.body.appendChild(rocketContent);
4848
rocketContent.outerHTML=`
49-
<div id="txtDownContent" style="display: none;">
50-
<div style="width:300px;height:50px;position:fixed;left:50%;top:50%;margin-top:-25px;margin-left:-150px;z-index:100000;background-color:#ffffff;border:1px solid #afb3b6;border-radius:10px;opacity:0.95;filter:alpha(opacity=95);box-shadow:5px 5px 20px 0px #000;">
51-
<div id="txtDownWords" style="position:absolute;left:20px;top:10px;width:260px;"></div>
52-
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAMAAAAM7l6QAAAA5FBMVEUAAAD+/v7////9/f7////////+/v7+/v7////+/v7+/v7////+/v7+/v7////+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7////////////+/v7+/v7+/v7+/v7+/v4uje3///82ke7s9P3N5PtQoPDI4fqCu/Tu9v5Im+/6/P+VxfZgqPFNnvDp8/3f7fq42Pmnz/d1tPNvsfNkq/JCmO/4+/7X6fz19/rn8PqYx/aNwfV8uPRqrvJZpfFUovAzkO3Q5vu92/mr0fieyva92fWx0vQ6lO5pygFTAAAAJHRSTlMAmfD+RMGwgj2mknlIKR/36+XGnIyHfnJfVDk2My8S4E1CJBvTatKDAAABY0lEQVQoz4WSZ1fCMBRA05ahLPfemkspBUFwgGz3+P//x/hK6ZBzvB/ak96+kZeoGCtFK5eziitqCSfWOnM2CuWUrOyQYPc0bjM2htHXh+/ffQ4lQ6zEPoZ6TwdUp10M56EtAe5MR7y0HGAeX7Ghe6MTzIZwFtTfBrepUzw4UFSGY8CUTTMGLo3eglv58By21pRnB7aNBqTwPfWq/OVey9sH22wZXiWo6Yr3GtRl/f0IRyoPYy14v97YWjVY12BPrcK9XvhaZPUdWCoLbR35yOoW5P7R8eQ3JrmbSp6HVmSrXuTrmNYyUAs2JkL6D6YjG1PgNGXK87F4nWAsUxmL2gyH6oVD7cuhdqFg9CE4T/oPE6CsgvBOP21715AP7ugaDFK+3YD1KyUcAG47bn0TSylxFd8WDTwMMByoBSUHw+jd9/3JbQODnVExygUS7FRUksPVtdDZW8dqCZm8lc1auxcq4gc02GVGTUchmgAAAABJRU5ErkJggg==" id="txtDownQuit" style="position:absolute;right:0px;top:0px;cursor: pointer;" />
53-
</div>
54-
</div>`;
49+
<div id="txtDownContent" style="display: none;">
50+
<div style="width:300px;height:50px;position:fixed;left:50%;top:50%;margin-top:-25px;margin-left:-150px;z-index:100000;background-color:#ffffff;border:1px solid #afb3b6;border-radius:10px;opacity:0.95;filter:alpha(opacity=95);box-shadow:5px 5px 20px 0px #000;">
51+
<div id="txtDownWords" style="position:absolute;left:20px;top:10px;width:260px;">
52+
</div>
53+
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAMAAAAM7l6QAAAA5FBMVEUAAAD+/v7////9/f7////////+/v7+/v7////+/v7+/v7////+/v7+/v7////+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7////////////+/v7+/v7+/v7+/v7+/v4uje3///82ke7s9P3N5PtQoPDI4fqCu/Tu9v5Im+/6/P+VxfZgqPFNnvDp8/3f7fq42Pmnz/d1tPNvsfNkq/JCmO/4+/7X6fz19/rn8PqYx/aNwfV8uPRqrvJZpfFUovAzkO3Q5vu92/mr0fieyva92fWx0vQ6lO5pygFTAAAAJHRSTlMAmfD+RMGwgj2mknlIKR/36+XGnIyHfnJfVDk2My8S4E1CJBvTatKDAAABY0lEQVQoz4WSZ1fCMBRA05ahLPfemkspBUFwgGz3+P//x/hK6ZBzvB/ak96+kZeoGCtFK5eziitqCSfWOnM2CuWUrOyQYPc0bjM2htHXh+/ffQ4lQ6zEPoZ6TwdUp10M56EtAe5MR7y0HGAeX7Ghe6MTzIZwFtTfBrepUzw4UFSGY8CUTTMGLo3eglv58By21pRnB7aNBqTwPfWq/OVey9sH22wZXiWo6Yr3GtRl/f0IRyoPYy14v97YWjVY12BPrcK9XvhaZPUdWCoLbR35yOoW5P7R8eQ3JrmbSp6HVmSrXuTrmNYyUAs2JkL6D6YjG1PgNGXK87F4nWAsUxmL2gyH6oVD7cuhdqFg9CE4T/oPE6CsgvBOP21715AP7ugaDFK+3YD1KyUcAG47bn0TSylxFd8WDTwMMByoBSUHw+jd9/3JbQODnVExygUS7FRUksPVtdDZW8dqCZm8lc1auxcq4gc02GVGTUchmgAAAABJRU5ErkJggg==" id="txtDownQuit" style="position:absolute;right:0px;top:0px;cursor: pointer;" />
54+
</div>
55+
</div>`;
5556
var txtDownContent=document.querySelector("#txtDownContent");
5657
var txtDownWords=document.querySelector("#txtDownWords");
5758
var txtDownQuit=document.querySelector("#txtDownQuit");
@@ -60,31 +61,54 @@
6061
txtDownContent.parentNode.removeChild(txtDownContent);
6162
};
6263
var j=0,rCats=[];
64+
function getDocEle(str){
65+
var doc = null;
66+
try {
67+
doc = document.implementation.createHTMLDocument('');
68+
doc.documentElement.innerHTML = str;
69+
}
70+
catch (e) {
71+
console.log('parse error');
72+
}
73+
return doc;
74+
}
75+
function processDoc(i, aTag, doc){
76+
j++;
77+
rCats[i]=(aTag.textContent+"\r\n"+getPageContent(doc));
78+
txtDownContent.style.display="block";
79+
txtDownWords.innerHTML="已下载完成 "+j+" 段,剩余 "+(aEles.length-j)+" 段";
80+
if(j==aEles.length){
81+
txtDownWords.innerHTML="已全部下载完成,共 "+j+" 段";
82+
var blob = new Blob([i18n.info+"\r\n"+document.title+"\r\n\r\n"+rCats.join("\r\n\r\n")], {type: "text/plain;charset=utf-8"});
83+
saveAs(blob, document.title+".txt");
84+
}
85+
}
6386
for(let i=0;i<aEles.length;i++){
6487
let aTag=aEles[i];
6588
GM_xmlhttpRequest({
6689
method: 'GET',
6790
url: aTag.href,
6891
onload: function(result) {
69-
var doc = null;
70-
try {
71-
doc = document.implementation.createHTMLDocument('');
72-
doc.documentElement.innerHTML = result.responseText;
73-
}
74-
catch (e) {
75-
console.log('parse error');
76-
}
92+
var doc = getDocEle(result.responseText);
7793
if (!doc) {
7894
return;
7995
}
80-
j++;
81-
rCats[i]=(aTag.textContent+"\r\n"+getPageContent(doc));
82-
txtDownContent.style.display="block";
83-
txtDownWords.innerHTML="已下载完成 "+j+" 段,剩余 "+(aEles.length-j)+" 段";
84-
if(j==aEles.length){
85-
txtDownWords.innerHTML="已全部下载完成,共 "+j+" 段";
86-
var blob = new Blob([i18n.info+"\r\n"+document.title+"\r\n\r\n"+rCats.join("\r\n\r\n")], {type: "text/plain;charset=utf-8"});
87-
saveAs(blob, document.title+".txt");
96+
var contentType=doc.querySelector("meta[http-equiv=Content-Type]");
97+
if(contentType && !/utf\-?8/i.test(contentType.content)){
98+
GM_xmlhttpRequest({
99+
method: 'GET',
100+
url: aTag.href,
101+
overrideMimeType:contentType.content,
102+
onload: function(result) {
103+
var doc = getDocEle(result.responseText);
104+
if (!doc) {
105+
return;
106+
}
107+
processDoc(i, aTag, doc);
108+
}
109+
});
110+
}else{
111+
processDoc(i, aTag, doc);
88112
}
89113
}
90114
});

0 commit comments

Comments
 (0)