花心拯救者

白嫖没有错,花心也没有猜错,错的是这个破站直播!

当前为 2020-10-02 提交的版本,查看 最新版本

// ==UserScript==
// @name         花心拯救者
// @namespace    Cutemon
// @version      1.54
// @description  白嫖没有错,花心也没有猜错,错的是这个破站直播!
// @author       Cutemon
// @include      /https?:\/\/live\.bilibili\.com\/\d+\??.*/
// @require      https://static.hdslb.com/live-static/libs/jquery/jquery-1.11.3.min.js
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    let roomID = window.location.pathname.slice(1),
        uid = '';
    var xx, yy;

    // 获取用户cookie
    let getCookie = Name => {
        var search = Name + '='; //查询检索的值
        var returnvalue = ''; //返回值
        if (document.cookie.length > 0) {
            var sd = document.cookie.indexOf(search);
            if (sd != -1) {
                sd += search.length;
                var end = document.cookie.indexOf(';', sd);
                if (end == -1) end = document.cookie.length;
                //unescape() 函数可对通过 escape() 编码的字符串进行解码。
                returnvalue = unescape(document.cookie.substring(sd, end));
            }
        }
        return returnvalue;
    };
    let token = getCookie('bili_jct');
    $.ajaxSetup({
        crossDomain: true,
        xhrFields: {
            withCredentials: true
        },
        data: {
            csrf: token,
            csrf_token: token
        }
    });

    function getUid() {
        console.log('ok');
        $.ajax({
            type: 'get',
            url: '//api.live.bilibili.com/room/v1/Room/room_init',
            data: {
                id: roomID
            },
            success: function(response) {
                uid = response.data.uid;
                //				console.log(roomLongId);
                myMedal();
            }
        });
    }

    function myMedal() {
        let left = xx - 200 + 'px',
            top = yy - 20 + 'px';
        $.ajax({
            type: 'get',
            // url: '//api.live.bilibili.com/i/ajaxGetMyMedalList',
            url: '//api.live.bilibili.com/i/api/medal',
            data: {
                pageSize: 1000
            },
            success: function(response) {
                //				console.log(response.data[0]);
                for (let i = 0; i < response.data.fansMedalList.length; i++) {
                    if (uid == response.data.fansMedalList[i].target_id) {
                        let medal_id = response.data.fansMedalList[i].medal_id;
                        console.log(medal_id);
                        $.ajax({
                            type: 'POST',
                            // url: '//api.live.bilibili.com/i/ajaxWearFansMedal',
                            url: '//api.live.bilibili.com/xlive/web-room/v1/fansMedal/wear',
                            data: {
                                medal_id: medal_id
                            },
                            success: function(response) {
                                if(response.code == 0) {
                                    toast(response.message || response.msg, 'success', left, top);
                                    console.log(left, top, response.message || response.msg);
                                    $.ajax({
                                        type: 'POST',
                                        // url: '//api.live.bilibili.com/i/ajaxWearFansMedal',
                                        url: '//api.live.bilibili.com/live_user/v1/UserInfo/get_weared_medal',
                                        data: {
                                            source: 1,
                                            target_id: uid
                                        },
                                        success: function(response) {
                                            
                                        }
                                    });
                                } else {
                                    toast(response.message || response.msg, 'caution', left, top);
                                }
                                
                            }
                        });
                        return;
                    }
                }
                toast('你没有这个房间的勋章', 'error', left, top);
                $('.chat-input').unbind();
            }
        });
    }

    function toast(text, level, left, top) {
        text = text || '这是一个提示';
        level = level || 'success'; // success,caution,info,error
        left = left || '50%';
        top = top || '5%';
        if (level != 'success') {
            console.log(text);
        }
        var id = new Date().valueOf();

        $('body').append(
            '<div class="link-toast ' +
                level +
                '"data-id="' +
                id +
                '" style="position: fixed; left: ' +
                left +
                '; top: ' +
                top +
                ';"><span class="toast-text">' +
                text +
                '</span></div>'
        );
        $(
            "div.link-toast[data-id='" + id + "']"
        ).slideDown('normal', function() {
            setTimeout(function() {
                $(
                    "div.link-toast[data-id='" + id + "']"
                ).fadeOut('normal', function() {
                    $("div.link-toast[data-id='" + id + "']").remove();
                });
            }, 1500);
        });
    }

    window.onload = function() {
        console.log(`花心拯救者已启动!`);
        var init = setInterval(() => {
            console.log(`弹幕输入框dom检测中……`);

            if ($('.chat-input').length) {
                $('.chat-input').focus(getUid);
                console.log(`勋章自动切换功能已启动`);
                toast('勋章自动切换功能已启动', 'success');
                clearInterval(init);
            } else {
                try {
                    var ifr = document
                        .getElementById('player-ctnr')
                        .getElementsByTagName('iframe');
                    if (ifr.length) {
                        $('head').append(`<style type="text/css">/*
                    *  Link Toast Style By LancerComet at 17:31, 2015.12.16.
                    *  # Carry Your World #
                    *  ---
                    *  直播站 Toast 组件样式文件.
                    */
                   .link-toast {
                     position: absolute;
                     padding: 12px 24px;
                     font-size: 14px;
                     border-radius: 8px;
                     white-space: nowrap;
                     color: #fff;
                     -webkit-animation: link-msg-move-in-top cubic-bezier(0.22, 0.58, 0.12, 0.98) 0.4s;
                             animation: link-msg-move-in-top cubic-bezier(0.22, 0.58, 0.12, 0.98) 0.4s;
                     z-index: 10000;
                   }
                   .link-toast.fixed {
                     position: fixed;
                   }
                   .link-toast.success {
                     background-color: #47d279;
                     -webkit-box-shadow: 0 0.2em 0.1em 0.1em rgba(71,210,121,0.2);
                             box-shadow: 0 0.2em 0.1em 0.1em rgba(71,210,121,0.2);
                   }
                   .link-toast.caution {
                     background-color: #ffb243;
                     -webkit-box-shadow: 0 0.2em 0.1em 0.1em rgba(255,190,68,0.2);
                             box-shadow: 0 0.2em 0.1em 0.1em rgba(255,190,68,0.2);
                   }
                   .link-toast.error {
                     background-color: #ff6464;
                     -webkit-box-shadow: 0 0.2em 1em 0.1em rgba(255,100,100,0.2);
                             box-shadow: 0 0.2em 1em 0.1em rgba(255,100,100,0.2);
                   }
                   .link-toast.info {
                     background-color: #48bbf8;
                     -webkit-box-shadow: 0 0.2em 0.1em 0.1em rgba(72,187,248,0.2);
                             box-shadow: 0 0.2em 0.1em 0.1em rgba(72,187,248,0.2);
                   }
                   .link-toast.out {
                     -webkit-animation: link-msg-fade-out cubic-bezier(0.22, 0.58, 0.12, 0.98) 0.4s;
                             animation: link-msg-fade-out cubic-bezier(0.22, 0.58, 0.12, 0.98) 0.4s;
                   }
                   @-webkit-keyframes link-msg-move-in-top {
                     from {
                       opacity: 0;
                       -webkit-transform: translate(0, 5em);
                               transform: translate(0, 5em);
                     }
                     to {
                       opacity: 1;
                       -webkit-transform: translate(0, 0);
                               transform: translate(0, 0);
                     }
                   }
                   @keyframes link-msg-move-in-top {
                     from {
                       opacity: 0;
                       -webkit-transform: translate(0, 5em);
                               transform: translate(0, 5em);
                     }
                     to {
                       opacity: 1;
                       -webkit-transform: translate(0, 0);
                               transform: translate(0, 0);
                     }
                   }
                   @-webkit-keyframes link-msg-fade-out {
                     from {
                       opacity: 1;
                     }
                     to {
                       opacity: 0;
                     }
                   }
                   @keyframes link-msg-fade-out {
                     from {
                       opacity: 1;
                     }
                     to {
                       opacity: 0;
                     }
                   }
                   </style>`);
    
                        var domChat = ifr[0].contentWindow.document.getElementsByClassName(
                            'chat-input'
                        )[0];
                        $(domChat).focus(getUid);
                        console.log(`勋章自动切换功能已启动`);
                        toast('勋章自动切换功能已启动', 'success');
                        clearInterval(init);
                    }
                } catch (err) {
                    var ifr = document
                        .getElementById('player-ctnr')
                        .getElementsByTagName('iframe');
                    console.log(
                        `chatinput: ${$('.chat-input')
                            .length}\niframe: ${ifr.length}`
                    );
                }
            }
        }, 5e3);

        $('body').mousemove(function(e) {
            xx = e.originalEvent.x || e.originalEvent.layerX || 0;
            yy = e.originalEvent.y || e.originalEvent.layerY || 0;
            //var d = document.getElementById("div");获取某div在当前窗口的位置
            //var dx = xx - p.getBoundingClientRect().left;
            //var dy = yy - p.getBoundingClientRect().top;
            //$(this).text(dx + '---' + dy);鼠标在该div内位置
        });
    };
})();

QingJ © 2025

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