Greasy Fork is available in English.

编程猫辅助功能

页面优化,批量清除收藏,消除消息框

// ==UserScript==
// @name         编程猫辅助功能
// @namespace    https://shequ.codemao.cn/user/7928755
// @version      0.1
// @description  页面优化,批量清除收藏,消除消息框
// @author       Mornwind
// @match        *://shequ.codemao.cn/*
// @icon         https://static.codemao.cn/whitef/favicon.ico
// @grant        GM_xmlhttpRequest
// ==/UserScript==

(function() {
    'use strict';
    var id
    GM_xmlhttpRequest({
        method:"get",
        url:"https://api.codemao.cn/web/users/details",
        headers:{
            "cookie":document.cookie,
            "User_Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
        },
        async onload({ response }) {
            id=JSON.parse(response).id
            console.log(id)
        }
    })
    function changeTitle(content) {
        if (document.querySelector("title") && document.querySelector("title").innerHTML != content) {
            document.querySelector("title").innerHTML = content
        }
    }
    const board_dict={
        "-1":"论坛广场",
        "2":"积木编程乐园",
        "3":"神奇代码岛",
        "4":"通天塔",
        "5":"你问我答",
        "6":"图书馆",
        "7":"灌水池塘",
        "10":"工作室&师徒",
        "11":"Python",
        "13":"Noc AI创新编程",
        "17":"热门活动",
        "26":"源码精灵",
        "27":"CoCo",
        "28":"训练师小课堂",
        "":"",
    }
    var web_workshop_id=window.location.href.split("/").slice(-1).pop()
    var web_workshop_url="https://api.codemao.cn/web/shops/"+web_workshop_id
    var web_workshop_name=""
    GM_xmlhttpRequest({
        method:"get",
        url:web_workshop_url,
        async onload({ response }) {
            web_workshop_name=JSON.parse(response).name
        }
    })
    setInterval(() => {
        //改图标总是改不了···
        if("https://shequ.codemao.cn/work_shop"==window.location.href){
            changeTitle("工作室:首页")
        }
        if("https://shequ.codemao.cn/user"==window.location.href){
            changeTitle("个人主页")
        }
        if(window.location.href.indexOf("shequ.codemao.cn/work_shop/")!=-1){
            changeTitle("工作室:"+web_workshop_name)
        }
        if("https://shequ.codemao.cn/community"==window.location.href){
            changeTitle("论坛:首页")
        }
        if(window.location.href.indexOf("https://shequ.codemao.cn/community?board=")!=-1){
            var board=window.location.href.split("=").slice(-1)[0]
            changeTitle("论坛:"+board_dict[board])
        }
        if(window.location.href.indexOf("https://shequ.codemao.cn/user/")!=-1){
            changeTitle(document.querySelector("#root > div > div.r-index--main_cont > div > div.r-user-c-banner--banner > div.r-user-c-banner--background.r-user-c-banner--flex-box.r-user-c-banner--row-center > div > div.r-user-c-banner--left-box > div.r-user-c-banner--info.r-user-c-banner--flex-box.r-user-c-banner--col-box > div > span.r-user-c-banner--name").innerHTML+"的主页")
        }
        if(window.location.href.indexOf("https://shequ.codemao.cn/community/")!=-1||window.location.href.indexOf("https://shequ.codemao.cn/wiki/forum/")!=-1){
            var article_title=document.querySelector("#root > div > div.r-index--main_cont > div > div.r-community-r-detail--forum_container > div.r-community-r-detail--forum_title").innerText.split("\n").slice(-1)[0]
            changeTitle("论坛:"+window.location.href.split("/").slice(-1).pop()+" "+article_title)
        }
    },100)

    function clear(lst){
        var url
        var url1="https://api.codemao.cn/nemo/v2/works/"
        var url2="/collection"
        for(var i=0;i<lst.length;i++){
            url=url1+lst.slice(i)[0].id+url2
            console.log(url)
            GM_xmlhttpRequest({
                url:url,
                method:"delete",
                headers:{
                    "cookie":document.cookie,
                    "User_Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
                },
            })
        }
    }
    function clean_collect(){
        var i
        GM_xmlhttpRequest({
            method:"get",
            url:"https://api.codemao.cn/creation-tools/v1/user/center/collect/list?user_id="+id+"&offset=0&limit=200",

            headers:{
                "cookie":document.cookie,
                "User_Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
            },
            async onload({ response }) {
                const dic=JSON.parse(response)
                var all=dic.total
                //console.log(all)
                clear(dic.items)
                //console.log(dic)
                if(all>200){
                    for(i=1;i<all/200+1;i+=1){
                        GM_xmlhttpRequest({
                            method:"get",
                            url:"https://api.codemao.cn/creation-tools/v1/user/center/collect/list?user_id="+id+"&offset="+i*200+"&limit=200",
                            async onload({ response }) {
                                clear(JSON.parse(response).items)
                            }
                        })
                    }
                }
            }
        })
    }
    function like(id,times){
        var url="https://api.codemao.cn/nemo/v2/works/"+id+"/like"
        if(times>0){
            GM_xmlhttpRequest({
                url:url,
                method:"post",
                headers:{
                    "cookie":document.cookie,
                    "User_Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
                },
                async onload({ response }) {
                    GM_xmlhttpRequest({
                        url:url,
                        method:"delete",
                        headers:{
                            "cookie":document.cookie,
                            "User_Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
                        },
                        async onload({ response }) {
                            like(id,times-1)
                        }
                    })
                }
            })
        }
    }
    function clear_message(method,offset=0){
        GM_xmlhttpRequest({
            url:"https://api.codemao.cn/web/message-record?query_type="+method+"&limit=200&offset="+offset.toString(),
            method:"get",
            headers:{
                "cookie":document.cookie,
                "User_Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
            },
            async onload({ response }) {
                console.log(JSON.parse(response).total)
                if(JSON.parse(response).items.slice(-1)[0].read_status=="UNREAD"){
                    clear_message(method,offset=offset+200)
                }
            }
        })
    }
    document.onclick = function(e) {
        if(e.ctrlKey && e.shiftKey&&window.location.href=="https://shequ.codemao.cn/user/"+id+"/collect"){
            clean_collect()
        }
    }
    if(window.location.href=="https://shequ.codemao.cn/message"){
        clear_message("COMMENT_REPLY")
        clear_message("LIKE_FORK")
        clear_message("SYSTEM")
    }
})();