Greasy Fork

来自缓存

Greasy Fork is available in English.

sobooks,nmod等同框架书籍网站添加豆瓣跳转链接方便查看具体评分等信息

sobooks;nmod等图书网站将书籍名称(article-title)链接修改为豆瓣搜索链接,方便查看豆瓣评分,如有需要添加的网站列表可以给我留言

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         sobooks,nmod等同框架书籍网站添加豆瓣跳转链接方便查看具体评分等信息
// @namespace    http://tampermonkey.net/
// @version      0.17
// @description  sobooks;nmod等图书网站将书籍名称(article-title)链接修改为豆瓣搜索链接,方便查看豆瓣评分,如有需要添加的网站列表可以给我留言
// @author       You
// @match        https://sobooks.net/books/*
// @match        https://sobooks.cc/books/*
// @match        https://www.nmod.net/book/*
// @match        https://*.lanzoum.com/*
// @match        https://*.lanzout.com/*
// @match        https://*.lanzoui.com/*
// @match        https://developer.lanzoug.com/file/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=sobooks.net
// @grant        none
// @license MIT
// ==/UserScript==

function downLoadLinks() {
    // 将下载链接从跳转改成直链
    // let esecret = document.querySelector('body > section > div > div > article > div > b')
    let esecret = document.getElementsByClassName('e-secret')[0].getElementsByTagName('b')[0]
    var str = esecret.innerText
    var reg = /(蓝奏云盘:.+? 密码[::])(.+?)(\n)/
    var s = reg.exec(str)[2]
    console.log(s)


    let esecret_item = esecret.getElementsByTagName("a")
    for (var i = 0; i < esecret_item.length; i++) {
        esecret_item[i].href = esecret_item[i].href.replace("https://sobooks.cc/go.html?url=", "")
    }

    async function copyPageUrl() {
        try {
            await navigator.clipboard.writeText(s);
            console.log('Page URL copied to clipboard');

        } catch (err) {
            console.error('Failed to copy: ', err);
            alert(err)
        }
    }

    copyPageUrl()

}

function addDoubanLink() {
    let target = document.getElementsByTagName('h1')[0]
    let bookName = target.innerText
    let aTag = target.getElementsByTagName('a')[0]
    aTag.href = "https://www.douban.com/search?q=" + bookName
    aTag.target = "_blank"
    aTag.style.color = '#007722' // 豆瓣绿
}

// TODO 页面下载完成自动关闭蓝奏云页面 或者考虑页面不跳转??


function inputCode(code) {
    let inputs = document.getElementsByTagName('input')
    inputs[0].value = code
    setTimeout(() => {
        inputs[1].click()
    }, 1000)


}

function goDownloadPage() {
    let name = document.getElementById('name')
    name.getElementsByTagName('a')[0].click()
}

function downloadFile() {
    setTimeout(() => {
        let target = document.getElementsByClassName('txt')
        target[0].click()
    }, 3000)

}

function finalCheck() {
    setTimeout(() => {
        document.getElementById('sub').getElementsByTagName('div')[0].click()
        setTimeout(() => {
            document.getElementById('go').getElementsByTagName('a')[0].click()
        }, 1000)
    }, 2000)

}


(function () {
    'use strict';
    if (document.URL.includes('cc')) {
        console.log('in sobook.cc')
        addDoubanLink()
        downLoadLinks()
    }


    // lanzou Part
    navigator.clipboard
        .readText()
        .then((v) => {
            console.log("获取剪贴板成功:", v);
            try {
                inputCode(v)

                setTimeout(() => {
                    console.log('in goDown')
                    goDownloadPage()
                }, 3000)

            } catch (e) {
                console.log(e)
            }
        })
        .catch((v) => {
            console.log("获取剪贴板失败: ", v);
        });

    downloadFile()
    finalCheck()

})();