仙女社福利姬资源下载链接获取

获取仙女社站内所有资源链接,不限次数下载。

Устаревшая версия на 13.03.2024. Перейти к последней версии.

// ==UserScript==
// @name         仙女社福利姬资源下载链接获取
// @name:zh-TW   仙女社福利姬資源下載鏈接獲取
// @namespace    http://tampermonkey.net/
// @version      1.4.5
// @description  获取仙女社站内所有资源链接,不限次数下载。
// @description:zh-TW  獲取仙女社站內所有資源鏈接,不限次數下載
// @author       You
// @match        https://unidoll.net/*
// @match        https://ng6.net/*
// @match        https://nj9.net/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=unidoll.net
// @grant        none
// @antifeature payment
// ==/UserScript==

(function() {
    'use strict';

    let VipPageData = {
        tabIndex: 0
    }
     function vipPanelInit() {
         let vipPanel_ = document.getElementById("vipPanel")
        if (vipPanel_) {
            vipPanel_.remove()
        }
        let style = document.createElement("style")
        style.innerHTML = `

        #vipPanel {
            width: 310px;
            height: 500px;
            box-shadow: 0 0 0 1px rgb(0 0 0 / 5%), 0 2px 4px 1px rgb(0 0 0 / 9%);
            border-left: 1px solid transparent;
            border-right: none;
            border-top: 1px solid transparent;
            border-bottom: 1px solid transparent;
            background-color: #FFFFFF;
            position: fixed;
            left: 6px;
            bottom: 6px;
            z-index: 99999;
        }
        .panelHead {
            display: flex;
            border-bottom: 1px solid #ececec;
        }
        .panelHead>div {
            color: #444;
            font-size: 14px;
            padding: 0 10px;
            height: 40px;
            line-height: 40px;
            box-sizing: border-box;
            user-select: none;
            text-align: center;
            width: 76px;
        }
        .panelHead>div:not(.headDivActive):hover {
            border-bottom: 3px solid #ccc;
            cursor: pointer;
        }
        .headDivActive {
            border-bottom: 3px solid #00809d;
            color: #444;
            font-weight: bold;
        }
        .searchInput {
            width: 80%;
            border-radius: 24px;
            box-shadow: 0 0 0 1px rgb(0 0 0 / 5%), 0 2px 4px 1px rgb(0 0 0 / 9%);
            height: 40px;
            border-left: 1px solid transparent;
            border-right: none;
            border-top: 1px solid transparent;
            border-bottom: 1px solid transparent;
            margin: 0 auto;
            overflow: hidden;
            margin-top: 40px;
            display: flex;
            padding-right: 10px;
            align-items: center;
        }
        .searchInput:hover {
            border-top-left-radius: 24px;
            box-shadow: 0 0 0 1px rgb(0 0 0 / 10%), 0 2px 4px 1px rgb(0 0 0 / 18%);
            border-left: 1px solid transparent;
            border-right: none;
            border-top: 1px solid transparent;
            border-bottom: 1px solid transparent;
        }
        .searchInput input {
            flex: 1;
            height: 100%;
            border: 0;
            outline: 0;
            font-size: 16px;
            padding-left: 10px;
        }
        .searchInput .userSearchI {

            width: 30px;
            height: 30px;
            text-align: center;
            box-sizing: border-box;
            line-height: 26px;

        }
        .tipContentBox {
            display:flex;
            color: #71777d;
            font-size: 14px;
            margin: 0 auto;
            margin-top: 20px;
            width: 280px;
        }
        #tipContent {
            width: 0;
            flex: 1;
        }
        .getVipA {
            color: #FFFFFF;
            font-weight: bold;
            background-color: #449fe5;
            height: 100px;
            width: 100px;
            border-radius: 50px;
            text-align: center;
            line-height: 100px;
            margin: 20px auto;
            box-shadow: 0 0 0 1px rgb(0 0 0 / 5%), 0 2px 4px 1px rgb(0 0 0 / 9%);
            user-select: none;
        }
        .getVipA:hover {
            cursor: pointer;
            box-shadow: 0 0 0 0 rgb(0 0 0 / 5%), 0 2px 4px 1px rgb(0 0 0 / 18%);
            -webkit-box-shadow: 0 0 0 0 rgb(0 0 0 / 5%), 0 2px 4px 1px rgb(0 0 0 / 18%);
            -moz-box-shadow: 0 0 0 0 rgba(0,0,0,.05),0 2px 4px 1px rgba(0,0,0,.18);
        }

		@keyframes float {
			0% {
				transform: translateY(0px);
			}
			5% {
				transform: translateY(-10px);
			}
			10%,100% {
				transform: translateY(0px);
			}
		}

		.navy_ {
			position: relative;
		}

		.navy_ span {
			position: relative;
			display: inline-block;
			color: white;
			font-size: 2em;
			animation: float 10s ease-in-out infinite;
			animation-delay: 5s;
		}
        .resolvePro {
            color: #71777d;
            font-size: 14px;
            position: absolute;
            bottom: 10px;
            left: 10px;
        }
        .hiddenPanel {
            left: -310px !important;
        }
        .hiddenBtn,.showBtn {
            position: absolute;
            left: 320px;
            bottom: 20px;
            width: 60px;
            height: 40px;
            line-height: 40px;
            color: black;
            user-select: none;
            background-color: #FFFFFF;
            position: absolute;
            left: 243px;
            bottom: 20px;
        }
        .showBtn {
            left: 320px;
            display: none;
        }
        .hiddenBtn:hover,.showBtn:hover {
            cursor: pointer;
        }
        .panelBody_1 {
            display: none;
        }
        .panelBody_1 p {
            padding: 0 10px;
            font-size: 14px;
            text-indent: 1em;
        }
        .lplogin {
            color: white;
            width: 100px;
            height: 30px;
            display:flex;
            align-items:center;
            justify-content: center;
            cursor: pointer;
            background-color: #449fe5;
            margin: 20px auto;
            border-radius: 30px;
        }
        .newVersionLink {
             text-decoration: underline;
        }
        .sourceList {
            font-size: 14px;
        }
        .jbbtn {
            font-size: 20px;
            font-weight: bold;
        }
        .jbbtn a {
            cursor:pointer;
        }
        `
        document.getElementsByTagName("head")[0].appendChild(style)
        let panel = document.createElement("div")
        panel.setAttribute("id", "vipPanel")
        panel.innerHTML = `
            <div class="hiddenBtn">&lt;&lt;隐藏</div>
            <div class="showBtn">&gt;&gt;显示</div>
            <div class="panelMain">
                <div class="panelHead">
                    <div class="headDivActive">获取权限</div>
                    <div>令牌登录</div>
                    <div>支付</div>
                    <div>使用指南</div>
                </div>
                <div class="panelBody panelBody_0">
                    <div class="searchInput">
                        <input id="txm" type="text" placeholder="">
                        <div class="userSearchI getVipBtn"><i class="fa fa-search"></i></div>
                    </div>
                    <div class="tipContentBox">
                        <div style="width:50px;">提示: </div>
                        <div id="tipContent">请输入您的卡密以获取资源下载链接</div>
                    </div>
                    <div class="getVipBtn getVipA navy_">
                        <span>G</span>
                        <span>O</span>
                        <span>!</span>
                    </div>

                    <div class="resolvePro">
                    <a class="newVersionLink" target="_blank" href="https://sleazyfork.org/zh-CN/scripts/476248-%E4%BB%99%E5%A5%B3%E7%A4%BE%E7%A6%8F%E5%88%A9%E5%A7%AC%E8%B5%84%E6%BA%90%E4%B8%8B%E8%BD%BD%E9%93%BE%E6%8E%A5%E8%8E%B7%E5%8F%96">点我去最新版本</a><br/>
                        有问题请骚扰邮箱: <br/>
                        JamJamToday@protonmail.com
                    </div>
                </div>
                <div class="panelBody panelBody_1">

                    <div class="searchInput">
                        <input id="lp" type="text" placeholder="请输入令牌(注意不是卡密)">
                        <div class="userSearchI"><i class="el-icon-search"></i></div>
                    </div>
                    <p style="margin-top:10px;text-align:center;">请不要输入没有用的东西,否则下载地址会失效,请点击下方链接获取令牌然后粘贴到上面的输入框后点击登录。</p>
                    <div style="margin-top:20px;text-align:center;" id="swag19"><a class="newVersionLink"  target="_blank"  style="color:#71777E;">点此获取令牌</a></div>
                    <div class="lplogin">登录</div>
                </div>
            </div>
        `
        document.body.appendChild(panel)

         let tabs = document.querySelectorAll(".panelHead>div")
         for (let i = 0; i < tabs.length; i++) {
            tabs[i].addEventListener("click", function() {
                if (tabs[i].innerHTML == "最新版本") {
                    toNewVersionF()
                    return
                }
                if (tabs[i].innerHTML == "使用指南") {
                    useMethodF()
                    return
                }
                if (tabs[i].innerHTML == "支付") {
                    toPayPage()
                    return
                }
                for (let ii = 0; ii < tabs.length; ii++) {
                    tabs[ii].className = ""
                }
                tabs[i].className = "headDivActive"
                VipPageData.tabIndex = i
                changeTabF()
            })
        }

        document.querySelector(".hiddenBtn").addEventListener("click", function() {
            hiddenBtnF()
        })
         document.querySelector("#swag19").addEventListener("click", function() {
            window.open("https://103.241.72.37:5000/file/xns.html")
        })
         document.querySelector(".lplogin").addEventListener("click",function(){
            let lpvalue = document.getElementById("lp").value
            if (lpvalue) {
                linpailogin(lpvalue)
            }

        })
        document.querySelector(".showBtn").addEventListener("click", function() {
            showBtnF()
        })
        let gets = document.querySelectorAll(".getVipBtn")
        for (let i = 0; i < gets.length; i++) {
            gets[i].addEventListener("click", function() {
                if (getTip() == "获取权限中..." || getTip() == "请先登录....") {
                    return
                }
                if (getTxm()) {
                    getPermissionF(getTxm())
                }
            })
        }

        // 读取本地是否有通行码
        if (window.localStorage.getItem("txm") != null && window.localStorage.getItem("txm") != "") {
            document.getElementById("txm").value = window.localStorage.getItem("txm")
        }

        if (isSuccess()) {
            setTip("卡密校验成功,请尝试下载,如有漏或错的资源请联系我。")
            hiddenBtnF()
        }
        document.querySelector(".logoload")
        let interval = setInterval(() => {
            if (document.querySelector(".logoload")) {
                document.querySelector(".logoload").style.display="none"
                clearInterval(interval)
            }
        }, 1000)
        if (location.href.includes("/id")) {
            setDownloadBtn()
        }

    }
    function hiddenBtnF() {
        document.querySelector(".hiddenBtn").style.display = "none"
        document.querySelector("#vipPanel").className = "hiddenPanel"
        document.querySelector(".showBtn").style.display = "block"
    }
    function showBtnF() {
        document.querySelector(".hiddenBtn").style.display = "block"
        document.querySelector("#vipPanel").className = ""
        document.querySelector(".showBtn").style.display = "none"
    }
    function isSuccess(){
        let second = localStorage.getItem("getSecond")
        if (second) {
            if (Date.now()-second>=1000*60*60*12) {
                localStorage.removeItem("getSecond")
                localStorage.removeItem("fetchLink")
            }
        }
        let link = localStorage.getItem("fetchLink")
        return link?true:false
    }
    function getTip() {
        return document.querySelector("#tipContent").innerHTML
    }
    function getTxm() {
        console.log("222")
        if (!document.getElementById("txm").value) {
            if (getTip().includes("输入您的卡密 ")) {
                setTip(getTip()+"!!! ")
            } else {
                setTip("输入您的卡密 ")
            }
            if(getTip().includes("!!! !!! !!! !!!")) {
                setTip("输入您的卡密 ")
            }
            return false
        } else {
            return document.getElementById("txm").value
        }
    }
    function setTip(str) {
        document.querySelector("#tipContent").innerHTML = str
    }
    function changeTabF() {
        let mains = document.querySelectorAll(".panelBody")
        for (let i = 0; i < mains.length; i ++) {
            mains[i].style.display = "none"
        }
        mains[VipPageData.tabIndex].style.display = "block"
    }
    function linpailogin(data) {
        localStorage.setItem("getSecond", Date.now())
        localStorage.setItem("fetchLink", "https://k00.fr/"+data)
        setTimeout(() => {
            location.reload()
        }, 1000)
    }
    function getPermissionF(txm) {
        setTip("发送请求中,请稍后...")
        fetch(`https://103.241.72.37:3013/getPermission/${txm}/155`).then(res => res.json()).then(res => {
            if (res.code == 200) {
                setTip("卡密校验成功, 正在刷新页面请稍后...")
                localStorage.setItem("txm", txm)
                localStorage.setItem("getSecond", Date.now())
                localStorage.setItem("fetchLink", res.data)
                location.reload()
            } else {
                setTip(res.msg)


            }
        }).catch(() => {
            setTip("系统错误请,点击令牌登录不行再联系作者");
        })

    }
    function toPayPage() {
        var r=confirm("点击<确定>按钮将前往支付线路1,点击<取消>按钮将前往支付线路2,哪个能进去就去哪个。");
        let host = "http://124.223.114.203";
        if (r==true) {
            host = "http://124.223.114.203"
            window.open(`${host}?code=YT0yJmI9OQ%3D%3D`);
        } else {
            host = "http://216.224.126.239:5123"
            window.open(`${host}?code=YT0yJmI9OQ%3D%3D`);
        }
    }
    function useMethodF() {
        window.open("http://216.224.126.239:3000/jbs.html#%E4%BB%99%E5%A5%B3%E7%A4%BE%E7%A6%8F%E5%88%A9%E5%A7%AC%E8%B5%84%E6%BA%90%E4%B8%8B%E8%BD%BD%E9%93%BE%E6%8E%A5%E8%8E%B7%E5%8F%96")
    }
    function toNewVersionF() {
        window.open("https://sleazyfork.org/zh-CN/scripts/475013-jablehk-onlyfans%E7%AD%89%E5%B9%B3%E5%8F%B0%E8%B5%84%E6%BA%90%E4%B8%8B%E8%BD%BD%E6%88%96%E5%9C%A8%E7%BA%BF%E8%A7%82%E7%9C%8B")
    }
    function setDownloadBtn() {
        let button;
        let hrefarr = location.href.split("/")
        let id = hrefarr[hrefarr.length-1]
        if (isSuccess()) {
            button = `
            <div class="jbbtn" style="margin: 20px 0;">
                <div>下载说明: </div>
                <div>&nbsp;&nbsp;+ 请找到资源名称为${id}的文件或文件夹下载</div>
                <div>&nbsp;&nbsp;+ 一般最近几天刚上传的资源可能会没有需要等1-2天</div>
                <div>&nbsp;&nbsp;+ 如果提示链接失效请重新点击GO</div>
                <div>&nbsp;&nbsp;+ 如果下载慢则代表你可能需要翻墙</div>
                <div>&nbsp;&nbsp;+ 如果您没有翻墙软件,可以点击魔戒试试:<a href="https://mojie.ca/#/register?code=mQnRbjJx" target="_blank">魔戒</a></div>
                <div>&nbsp;&nbsp;+ 上面那个软件跟我没有任何关系,仅推荐,用其他网速好的软件也是一样的</div>
                <div style="color: red;">&nbsp;&nbsp;+ <a style="color: red;" href="${localStorage.getItem('fetchLink')}" target="_blank">点此下载|解压密码:arcloi.com或nz4.net</a></div>
            </div>
        `
        } else {
            button = `
            <div class="jbbtn">
                <div>未校验卡密无法下载,如您有卡密,请重新输入卡密并点击GO按钮</div>
            </div>
        `
        }
        let div = document.createElement("div")
        div.innerHTML = button

        if (document.querySelector(".article-header")) {
            document.querySelector(".article-header").appendChild(div)
        }
    }
     vipPanelInit()
})();