转跳到内容

【油猴脚本】简单计算积分(适用电脑网页端)


推荐贴

简单搜索了一下……同盟内貌似没有相关的油猴脚本,所以就发了

作为一个新人,总是会在意积分数到底多少了,虽然知道计算公式,但是每次计算都有点麻烦。

在新手区看到【说起来积分应该如何查看】这个帖子后就有了想法,因此写了这个脚本

第一次在综合事务区发帖,看了下版规应该可以发的吧

如果有违规的地方请告诉我:1348558391_SSB(2):

这里要感谢一下 @367ddd 佬的代码补充建议还有 @哥特的亡零 的bug反馈以及投到综合事务区的建议

代码如下:

// ==UserScript==
// @name         SS同盟积分计算
// @namespace    https://sstm.moe/profile/
// @version      1.0
// @description  简单计算积分
// @author       FuRobert
// @match        *://sstm.moe/profile/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=sstm.moe
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    let is_ok = false;
    function calculator(){
        let nei_rong_shu = 0;
        let jie_cao_shu = 0;
        let fu_yuan_shu = 0;

        var nei_rong_shu_box = document.getElementsByClassName("ipsType_minorHeading");
        for(let i=0; i<nei_rong_shu_box.length;i++ ){
            let temp_text = nei_rong_shu_box[i].parentElement.innerText;
            if(temp_text.includes(',')){
                temp_text=temp_text.replace(',',"");
            }
            if(temp_text.includes('内容数')){
                nei_rong_shu = parseInt(temp_text.replace('内容数\n',""));
                console.log(nei_rong_shu);
                break;
            }
        }

        var jie_cao_shu_box = document.getElementsByClassName("ipsDataItem_main");
        if (jie_cao_shu_box[0] != null){
            for(let i=0; i<jie_cao_shu_box.length;i++ ){
                let temp_text = jie_cao_shu_box[i].textContent;
                if(temp_text.includes(',')){
                    temp_text=temp_text.replace(',',"");
                }
                if(temp_text.includes('J')){
                    jie_cao_shu = parseInt(temp_text.replace('J',""));
                    console.log(jie_cao_shu);
                    break;
                }
            }
            for(let i=0; i<jie_cao_shu_box.length;i++ ){
                let temp_text = jie_cao_shu_box[i].textContent;
                if(temp_text.includes(',')){
                    temp_text=temp_text.replace(',',"");
                }
                if(temp_text.includes('F')){
                    fu_yuan_shu = parseInt(temp_text.replace('F',""));
                    console.log(fu_yuan_shu);
                    break;
                }
            }
            var box = document.getElementsByClassName("ipsDataList ipsDataList_reducedSpacing cProfileFields")[1];
            var temp_box = box.children[0].cloneNode(true);
            temp_box.children[0].children[0].innerHTML='积分';
            temp_box.children[1].innerHTML = String((nei_rong_shu*0.3 + jie_cao_shu*0.03 + fu_yuan_shu*10).toFixed(2));
            box.append(temp_box);
            jie_cao_shu_box = document.getElementsByClassName("ipsDataItem_generic ipsDataItem_size3 ipsType_break");
            for (let temp of jie_cao_shu_box){
                //console.log(temp.textContent);
                if(temp.textContent.includes('积分')){
                    is_ok = true;
                    return;
                }
            }
        }else{
            if(is_ok == false){
                setTimeout(start, 200);
            }
            return;
        }
    }
    function start(){
        if(is_ok == false){
            setTimeout(calculator, 200);
        }
    }
    window.onload=function(){
        start();
    };
})();

使用方法:浏览器安装油猴插件,在里面选择添加新脚本,将上述代码全部复制覆盖到里面即可,启用后正常的话应该能在个人页面看到积分,点进别人的页面好像也能看到

效果图:image.png.ae6a7c5a3a8f434cdfbfac69d0be6bfe.png

本人代码菜鸟,如果有大佬有修改建议或者想直接在此基础上修改放出代码的,十分欢迎:YangTuo_2:

,由furobert修改
修改代码-修改循环次数判定
链接到点评

喔,这个的代码看起来比我强好多,也有考虑到节操为负数的情况,看来我还有得学

不过既然greasyfork里面已经有了同类型脚本,我就不上传了,况且我在里面一直只是下载别人脚本的,从来没上传过,所以也没有注册账号:YangTuo_Y:

链接到点评
1 小时前,fensishanbeilati说道:

这是自调用匿名函数吗?

哦,你是获取网页元素来拿到内容数,节操和福缘然后进行计算,添加新的网页节点是吧。

话说为啥你的for循环写死了i<5呢?:656393010_SSB(7):不应该用数组的长度吗

正常来说要用数组长度的,当时我只是简单随便写了个范围内的试一试就成了,然后忘了改了():1348558391_SSB(2):

不过这样暂时也没问题(?)就没再动了

链接到点评
6 小时前,furobert说道:
for(let i=0; i<3;i++ ){

:a1:雖然不是什麼重要的建議,不過我不推薦像這樣直接寫個3 (特定的數字),換成nei_rong_shu_box.length會比較省事

:NEKOMIMI_PARADISE_7:像之前用的一個腳本,一些情況下它發出去的請求會返回"400 Bad Request",一看發現是請求裡沒有包含正確的Captcha-Token。那為什麼會沒有呢,它在localStorage裡面找這個Token,但是用的方法就是「for (let i = 0; i < 20; i++)」,那如果超過了20條data而又Token不在前20條裡面不就找不到了嘛。要是有人在用的話就一堆人跑底下說用不了、用不了啦

幽月零在文学领地阅读作品时遇到了穿着女仆装的文学少女,待她离开后找到了遗落的9节操

链接到点评
刚刚,幽月零说道:

:a1:雖然不是什麼重要的建議,不過我不推薦像這樣直接寫個3 (特定的數字),換成nei_rong_shu_box.length會比較省事

:NEKOMIMI_PARADISE_7:像之前用的一個腳本,一些情況下它發出去的請求會返回"400 Bad Request",一看發現是請求裡沒有包含正確的Captcha-Token。那為什麼會沒有呢,它在localStorage裡面找這個Token,但是用的方法就是「for (let i = 0; i < 20; i++)」,那如果超過了20條data而又Token不在前20條裡面不就找不到了嘛。要是有人在用的話就一堆人跑底下說用不了、用不了啦

非常有用的建议,楼上也是这么说的

以前也因为数组吃过不少亏,要么有数组下标溢出要么就是你说的这种情况

不过大伙都这么建议,那我找个时间改一改吧:YangTuo_SE:

链接到点评
9 分钟前,furobert说道:

非常有用的建议,楼上也是这么说的

以前也因为数组吃过不少亏,要么有数组下标溢出要么就是你说的这种情况

不过大伙都这么建议,那我找个时间改一改吧:YangTuo_SE:

我也是编程菜鸡,嘿嘿:SS08:学c语言的时候就觉得数组处理溢出很麻烦,JavaScript直接数组.length就行

链接到点评
刚刚,fensishanbeilati说道:

我也是编程菜鸡,嘿嘿:SS08:学c语言的时候就觉得数组处理溢出很麻烦,JavaScript直接数组.length就行

已经改好了:YangTuo_Y:还好都不是很麻烦,简单替换一下循环里面的就好了(应该没漏掉什么吧?)自己测试一下也都OK

furobert在一位不愿透露姓名的神必人引导下,踏上了寻找爱丽丝之旅,获得3节操作为旅费

链接到点评
  • 4 个月后...
14 小时前,hhhgggHHHGGG说道:

我咋个用不了呢,显示不出来

image.png.c489242e40c6b3b7072a72952b261c8c.pngimage.thumb.png.7d39ec436bf3f4f91949791363952380.png

这个脚本只有在你或者别人的个人页面才会启用

你可以点你头像进去看看,没问题的话应该会在你节操那一栏的最底下计算出你的积分

furobert在诱导萌新女装时被路过的随便拦下,被批评教育并收取学费-4节操

链接到点评
  • 2 周后...
于 2024/8/31 于 AM1点13分,furobert说道:

这个脚本只有在你或者别人的个人页面才会启用

你可以点你头像进去看看,没问题的话应该会在你节操那一栏的最底下计算出你的积分

看别人的可以,我看自己的无法显示:wn006:

重启后发现只会显示一次?看过之后就需要再次重新启用才有效。

,由望月由爱修改

望月由爱在路上看到一个蘑菇,捡起时被一个从天而降的木桶击中脑袋,花费了医药费 -4节操

链接到点评
21 小时前,望月由爱说道:

看别人的可以,我看自己的无法显示:wn006:

重启后发现只会显示一次?看过之后就需要再次重新启用才有效。

我看你的页面倒是可以看到积分image.png.079e9ac123aa05345f87aeb82bea4e7e.png

看不到的时候试试刷新页面?有时候可能会没加载出来,话说你的节操怎么负这么多)不过负的应该不影响实际效果

这个脚本是你每次进入个人页面的时候会重新计算,相当于每进一次个人页面就会启用一次,按理来说你能看别人的就能看到自己的,或者你看看能不能描述的更详细点我比较好确认是不是代码哪里出问题了()

furobert路上捡到一枚勋章,然后把它交给了拍着手跳来跳去喊着“咸鱼”的萌妹子,获得5节操。

链接到点评

创建帐号或登入才能点评

您必须成为用户才能点评

创建帐号

在我们社区注册个新的帐号。非常简单!

注册新帐号

登入

已有帐号? 登入

现在登入
×
×
  • 新建...

重要消息

为使您更好地使用该站点,请仔细阅读以下内容: 使用条款