get free patreon content

Pick all the links from patreon (only the free content) and store it in a file.txt

当前为 2023-02-18 提交的版本,查看 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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


// ==UserScript==
// @name         get free patreon content
// @version      0.1
// @description  Pick all the links from patreon (only the free content) and store it in a file.txt
// @author       Viatana35
// @match        https://www.patreon.com/*/posts
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// @namespace https://greasyfork.org/users/1007048
// ==/UserScript==

(function() {
    'use strict';
    console.log("scrolling");
    var links = [];
    //class of loading -> sc-iJKOTD eYLrDe

    //if the page is loading, we wait 2 seconds and then we call the function again
    function is_loading (){
        if(document.getElementsByClassName("sc-iJKOTD eYLrDe").length != 0){
            console.log("loading");
            return true;
        }
        else
        {
            return false;
        }
    }

    function get_all_links()
    {
        // for each link with the class sc-kLwhqv cKZpkw we pick the url of the link and push it to the links array
        for(var i = 0; i < document.getElementsByClassName("sc-kLwhqv cKZpkw").length; i++){
            //if the link is not in the array, we push it
            if(links.indexOf(document.getElementsByClassName("sc-kLwhqv cKZpkw")[i].href) == -1){
                links.push(document.getElementsByClassName("sc-kLwhqv cKZpkw")[i].href);
            }
        }
    }

    function scrolling(){
        //we scroll to the bottom of the page
        window.scrollTo(0,document.body.scrollHeight);
    }

    function is_bottom()
    {
        return window.innerHeight + window.scrollY >= document.body.offsetHeight
    }

    function can_load_more_content()
    {
        return document.getElementsByClassName("sc-dPiLbb lddyrY").length != 0;
    }

    function load_more_content()
    {
        document.getElementsByClassName("sc-dPiLbb lddyrY")[0].click();
    }



    function download_links()
    {
        var text = "";
        for(var i = 0; i < links.length; i++){
            text += links[i] + "\n";
        }
        var file = new File([text], "links.txt", {type: "text/plain;charset=utf-8"});

        //create a ObjectURL in order to download the created file
        var url = window.URL.createObjectURL(file);

        //create a hidden link and set the href and click it
        var a = document.createElement("a");
        a.style = "display: none";
        a.href = url;
        a.download = file.name;
        a.click();

        window.URL.revokeObjectURL(url);
    }



    var interval = setInterval(function(){
        if(is_loading() == false){
            if (is_bottom() == false){
                scrolling();
            }
            else if(is_bottom() == true && can_load_more_content() == true){
                load_more_content();
            }
            else if(is_bottom() == true && can_load_more_content() == false){
                get_all_links();
                download_links();
                clearInterval(interval);
            }
        }
    } , 500);

})();