花心拯救者

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

当前为 2020-07-26 提交的版本,查看 最新版本

// ==UserScript==
// @name         花心拯救者
// @namespace    Cutemon
// @version      1.52
// @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: 'get',
                            url: '//api.live.bilibili.com/i/ajaxWearFansMedal',
                            data: {
                                medal_id: medal_id
                            },
                            success: function(response) {
                                toast(response.msg, 'success', left, top);
                                console.log(left, top, response.msg);
                            }
                        });
                        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);
                toast('勋章自动切换功能已启动', 'success');
                clearInterval(init);
            }
            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);
                    toast('勋章自动切换功能已启动', 'success');
                    clearInterval(init);
                }
            } catch (err) {
                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或关注我们的公众号极客氢云获取最新地址