笔趣阁下载 仅供学习使用
// ==UserScript==
// @name 笔趣阁下载 仅供学习使用
// @namespace http://tampermonkey.net/
// @version 0.2
// @description 本脚本对所有笔趣阁标准模板生效, 添加新网站请在match标签中更改
// @author You
// @match https://www.mibaoge.com/*
// @match https://www.biqugeone.com/*
// @match http://www.cits0871.com/*
// @require https://code.jquery.com/jquery-3.1.1.min.js
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant none
// ==/UserScript==
(function() {
'use strict';
// Your code here...
//新人第一次写油猴脚本,对js不是很熟悉,望对使用过程中的错误多多指正,多多包涵
//本脚本对所有笔趣阁标准模板生效
var time = 2000 //页面加载,需等待Dom节点加载完成,最小值2000
//检测localStorge是否存在
if(!document.getElementById("info") && localStorage.getItem("a0")==null){
alert("请转到书籍目录页面!");
}else{
if(localStorage.getItem("a0")==null){
localStorage.clear(); //如果存在就清空
var mainPage = window.location.host;
localStorage.setItem("main", mainPage);
var ah;
var dll = document.getElementById("list").getElementsByTagName("dt"); //是否有最新章节目录
if(dll.length > 1){
ah = $("dl dt:eq(1)").nextAll("dd").children(); //如果有,只选择第二个dt之后的所有a元素
}else{
ah = document.getElementsByTagName("dl")[0].getElementsByTagName("a"); //如果没有,选择dl里的所有a元素
}
var title = document.getElementById("info").getElementsByTagName("h1")[0].innerText;//获取书名
localStorage.setItem("title", title); //存入localstorage
localStorage.setItem("numa", ah.length);
for(let i = 0; i < ah.length; i++){
localStorage.setItem("a"+i, ah[i]); //从a0开始存入localstorage,直到全部章节结束
}
localStorage.setItem("is", 0); //初始化计数器
}
var n;
var ltext = new Array(parseInt(localStorage.getItem("numa"))); //暂时存放全部文本数组
var cto = setInterval(function(){ //计时器,等待Dom节点加载完成
n = parseInt(localStorage.getItem("is")); //计数器放在localstroge里保存
window.location.href = localStorage.getItem("a"+n); //跳转页面到下一章
n = n + 1;
localStorage.setItem("is", n);
localStorage.setItem("text"+n, document.getElementsByTagName("h1")[0].innerText+" \n "+document.getElementById("content").innerText + " \n"); //获取标题和内容并存入localstorge
}, time);
for(var h = 0; h <= parseInt(localStorage.getItem("is")); h++){
ltext[h] = localStorage.getItem("text"+h); //把所有章节写入ltext数组
}
if(parseInt(localStorage.getItem("is")) > parseInt(localStorage.getItem("numa")) && localStorage.getItem("text") == null){
clearInterval(cto); //章节全部加载完成后停止
localStorage.setItem("text", ltext.toString()); //数组内容存进localstorage
downLoad(localStorage.getItem("text"), localStorage.getItem("title")+".txt"); //通过blob对象下载
alert("当前书籍下载完成");
window.location.href = 'https://www.baidu.com';
window.location.href = localStorage.getItem("main");
localStorage.clear();
}
function downLoad(data, filename) {
var url;
if (!(data instanceof Array)) data = [data];
// 创建一个 blob 对象, 通过blob对象获取一个URL
const blob = new Blob(data);
url = URL.createObjectURL(blob);
// 创建一个 A 标签
var a = document.createElement('a');
// 设置下载的文件名 必要,如果没有就不会下载文件,而是当成链接跳转
a.download = filename;
// 将 A 标签 和URL关联上
a.href = url;
// 不让我们创建的标签影响页面展现
a.style.display = "none";
// 添加标签
document.body.appendChild(a);
// 触发 A 标签的点击
a.click();
// 将标签从元素上移除
a.remove();
a = null;
}
}
})();