CSDN助手

CSDN未登录(不可用)复制、复制代码不带原文链接、禁用登录(不可用)弹窗、未登录(不可用)查看所有评论、评论完全展开

目前為 2022-01-29 提交的版本,檢視 最新版本

// ==UserScript==
// @name         CSDN助手
// @namespace    http://tampermonkey.net/
// @version      0.20
// @description  CSDN未登录(不可用)复制、复制代码不带原文链接、禁用登录(不可用)弹窗、未登录(不可用)查看所有评论、评论完全展开
// @author       Gandalf_jiajun
// @include      https://blog.csdn.net/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    const appendStyle = (tagArr) => {
        tagArr.forEach(element => {
            element.style.userSelect = 'text';
            element.style.webkitUserSelect = 'text';
        });
    };
    const translateParams = (params) => {
        let str = '?';
        for(let i in params) {
            str += i + '=' + params[i] + '&';
        }
        return str.substring(0, str.length - 1);
    };
    const request = (method, url, params) => {
        return new Promise((resolve, reject) => {
            let newUrl = params ? url + translateParams(params) : url;
            const xml = new XMLHttpRequest;
            xml.open(method, newUrl, true);
            xml.send();
            xml.onreadystatechange = () => {
                if(xml.readyState == 4 && xml.status == 200) {
                    resolve(JSON.parse(xml.responseText));
                }
            };
        })
    };
    let tag_a = document.querySelectorAll('#content_views pre');
    let tag_b = document.querySelectorAll('#content_views pre code');
    // console.log(tag_a, tag_b);
    appendStyle(tag_a);
    appendStyle(tag_b);
    // 生成子项dom
    const createSubDom = (arr) => {
        let dom = `<li class="replay-box" style="display:block"><ul class="comment-list">`;
        arr.forEach((v) => {
            let contentDom = `<li style="display: block;" class="comment-line-box comment-line-box-hide" data-commentid="${v.commentId}" data-replyname="qq_23611043">
                <div class="comment-list-item">
                    <a class="comment-list-href" target="_blank" href="https://blog.csdn.net/${v.userName}">
                        <img src="${v.avatar}" username="${v.userName}" alt="${v.userName}" class="avatar">
                    </a>
                    <div class="right-box ">
                        <div class="new-info-box clearfix">
                            <div class="comment-top">
                                <div class="user-box">
                                    <a class="name-href" target="_blank" href="https://blog.csdn.net/${v.userName}">
                                        <span class="name mr-8">${v.userName}</span>
                                    </a>
                                    <span class="text">回复</span>
                                    <span class="nick-name"> ${v.parentUserName}</span>
                                    <span class="date" title="${v.postTime}">${v.dateFormat}</span>
                                </div>
                                <div class="opt-comment">
                                    <a class="btn-bt  btn-report">
                                        <img class="btn-report-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/commentLookMore.png" title="">
                                        <div class="hide-box">
                                            <span data-type="report" class="hide-item hide-report"> 举报</span>
                                        </div>
                                    </a>
                                    <img class="comment_img_replay" src="https://csdnimg.cn/release/blogv2/dist/pc/img/newCommentReplyWhite.png">
                                    <a class="btn-bt  btn-reply" data-type="reply" data-flag="true">回复</a>
                                </div>
                                <div class="comment-like " data-commentid="${v.commentId}">
                                    <img class="comment-like-img unclickImg" src="https://csdnimg.cn/release/blogv2/dist/pc/img/commentLikeWhite.png" title="点赞">
                                    <img class="comment-like-img comment-like-img-hover" style="display:none" src="https://csdnimg.cn/release/blogv2/dist/pc/img/commentLikeHover.png" title="点赞">
                                    <img class="comment-like-img clickedImg" src="https://csdnimg.cn/release/blogv2/dist/pc/img/commentLikeActive.png" title="取消点赞">
                                    <span></span>
                                </div>
                            </div>
                            <div class="comment-center">
                                <div class="new-comment">
                                    <div class="new-comment">${v.content}</div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </li>`;
            dom += contentDom;
        });
        dom += `</li></ul>`;
        return dom;
    };
    // 生成dom
    const createDom = (arr) => {
        let dom = `<div class="comment-list-box">`; // </div>
        arr.forEach((v, i) => {
            let commentDom = `<ul class="comment-list">
                <li class="comment-line-box " data-commentid="${v.info.commentId}" data-replyname="${v.info.parentUserName}">
                    <div class="comment-list-item">
                        <a class="comment-list-href" target="_blank" href="https://blog.csdn.net/${v.info.userName}">
                            <img src=${v.info.avatar} username=${v.info.userName} alt=${v.info.userName} class="avatar">
                        </a>
                        <div class="right-box ">
                            <div class="new-info-box clearfix">
                                <div class="comment-top">
                                    <div class="user-box">
                                        <a class="name-href" target="_blank" href="https://blog.csdn.net/${v.info.userName}">
                                            <span class="name ">${v.info.nickName}</span>
                                        </a>
                                        <span class="date" title="${v.info.postTime}">${v.info.dateFormat}</span>
                                    </div>
                                    <div class="opt-comment">
                                        <a class="btn-bt  btn-report">
                                            <img class="btn-report-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/commentLookMore.png" title="">
                                            <div class="hide-box">
                                                <span data-type="report" class="hide-item hide-report"> 举报</span>
                                            </div>
                                        </a>
                                        <img class="comment_img_replay" src="https://csdnimg.cn/release/blogv2/dist/pc/img/newCommentReplyWhite.png">
                                        <a class="btn-bt  btn-reply" data-type="reply" data-flag="true">回复</a>
                                    </div>
                                    <div class="comment-like " data-commentid="${v.info.commentId}">
                                        <img class="comment-like-img unclickImg" src="https://csdnimg.cn/release/blogv2/dist/pc/img/commentLikeWhite.png" title="点赞">
                                        <img class="comment-like-img comment-like-img-hover" style="display:none" src="https://csdnimg.cn/release/blogv2/dist/pc/img/commentLikeHover.png" title="点赞">
                                        <img class="comment-like-img clickedImg" src="https://csdnimg.cn/release/blogv2/dist/pc/img/commentLikeActive.png" title="取消点赞">
                                        <span></span>
                                    </div>
                                </div>
                                <div class="comment-center">
                                    <div class="new-comment">${v.info.content}</div>
                                </div>
                            </div>
                        </div>
                    </div>
                </li>
                ${v.sub.length>0 ? createSubDom(v.sub) : ``}
            </ul>`;
            dom += commentDom;
        })
        dom += `</div>`;
        return dom;
    };
    // 获取评论
    const getComment = async () => {
        try {
            let articalId = window.location.href.split('/article/details/')[1].split('?')[0];
            let commentUrl = '/phoenix/web/v1/comment/list/' + articalId;
            let params = {
                page: 1,
                size: 999,
                fold: 'unfold',
                commentId: ''
            };
            const res = await request('post', commentUrl, params);
            let dom = createDom(res.data.list);
            let parentNode = document.getElementsByClassName('comment-list-container')[0];
            let parentNode_chrome = document.getElementsByClassName('unlogin-comment-box-new')[0];
            if (parentNode_chrome && window.navigator.userAgent.indexOf('Chrome')) { // 判断是否为谷歌浏览器
                parentNode_chrome.innerHTML = `<div class="comment-title">评论<span>${res.data.count}</span></div>` + dom;
            } else {
                parentNode.innerHTML = dom;
            }
        } catch(err) {
            console.log(err);
        }
    };
    getComment();
    setTimeout(() => {
        window.csdn ? window.csdn.copyright.init('', '') : '';
        window.csdn.loginBox.show = function() {}; 
    }, 100);
})();

QingJ © 2025

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