掘金一键收藏

右击收藏按钮一键收藏,左键单击仍为多文件夹。通过菜单设置一键收藏到哪些文件夹!

// ==UserScript==
// @name         掘金一键收藏
// @namespace    https://gist.github.com/KnIfER
// @version      0.1
// @description  右击收藏按钮一键收藏,左键单击仍为多文件夹。通过菜单设置一键收藏到哪些文件夹!
// @author       You
// @match        *://juejin.cn/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=juejin.cn
// @grant        GM_registerMenuCommand
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_openInTab
// ==/UserScript==

(function() {
    'use strict';


    function gc(c, d) {
        return (d||document).getElementsByClassName(c)[0];
    }

    function gcp(c, d) {
        var p = d||document;
        while(p) {
            if(p.classList && p.classList.contains(c)) return p;
            p = p.parentNode;
        }
        return p;
    }

    function gcs(c, d) {
        return (d||document).getElementsByClassName(c);
    }

    function stop(e) {
        e.preventDefault();
        e.stopPropagation();
    }

    function match(text, matcher, stEd) {
        matcher = matcher.split(';');
        for(var i=0;i<matcher.length;i++){
            var m = matcher[i].trim(), ln=m.length;
            if(ln>0) {
                if(ln==1) {
                    if(m=='*') return 1;
                    if(m=='^' && (stEd&1)) return 1;
                    if(m=='v' && (stEd&2)) return 1;
                }
                if(text.includes(m)) return 1;
            }
        }
    }


    var matchers = '默认';
    if(typeof GM_getValue != undefined) {
        matchers = GM_getValue('fav_folders', matchers);
    }

    GM_registerMenuCommand('选择收藏夹', function(){
        var tmp = prompt("请输入收藏夹名称,用分号分隔。特殊:^匹配顶部,v匹配底部,*匹配全部", matchers);
        if(tmp && tmp.trim().length>0) {
            matchers = tmp;
            GM_setValue('fav_folders', matchers)
        }
    });
    GM_registerMenuCommand('⭐ 查看收藏夹', function(){
        gc('avatar-wrapper').click();
        setTimeout(function(){
            var ud = gc('user-detail').innerHTML;
            var idx = ud.indexOf('/user/');
            var uid = ud.slice(idx+6, ud.indexOf('\"', idx));
            console.log('uid', uid);
            GM_openInTab(`https://juejin.cn/user/${uid}/collections`, false);
        }, 350);
    });

    document.addEventListener('contextmenu', (e)=>{
        console.log(e.target);


        var tpc = 'panel-btn', tBtn = e.target, cc=5;
        while(tBtn && cc-->0) {
            if(tBtn.classList.contains(tpc)) break;
            tBtn = tBtn.parentNode;
        }


        if(tBtn.classList.contains(tpc)) {
            console.log('found', tBtn);
            if(gc('icon-collect', tBtn)) {
                console.log('检测到右击收藏按钮');
                tBtn.click();
                stop(e);
                setTimeout(function(){
                    var dlg = gc('modal-wrap');
                    var checks = gcs('checkbox-icon byte-checkbox__wrapper', dlg);
                    console.log('检测到右击收藏按钮', gcp(checks[0]));
                    var chosen = 0;
                    for(var i=0,ln=checks.length;i<ln;i++){
                        var ck = checks[i];
                        var stEd=0;
                        if(i==0) stEd|=1;
                        if(i==ln-1) stEd|=2;
                        if(match(gcp('list-item', ck).innerText, matchers, stEd)) {
                            console.log('点击checkbox', ck);
                            ck.click();
                            chosen = 1;
                        }
                    }
                    if(!chosen) checks[0].click();
                    setTimeout(function(){
                        gc('confirm-btn', dlg).click();
                    }, 200);
                }, 500);
            }

        }

    });



    // Your code here...
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址