Greasy Fork

Greasy Fork is available in English.

abot iirose

把 iirose 搬进控制台

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         abot iirose
// @namespace    http://tampermonkey.net/
// @version      1.0.4
// @description  把 iirose 搬进控制台
// @author       crescawn
// @match        https://iirose.com/messages.html
// @match        http://iirose.com/messages.html
// @grant        unsafeWindow
// ==/UserScript==

(function() {
  'use strict';

  function msg_pub(e) {
    let args = [''];
    args[0] += '%c' + e[2] + '\r\n';
    args.push('color:' + ncolor[e[6]]);
    if (e[3][0] == "'") {
      args.push('color:gray');
      switch (e[3][1]) {
        case '0':
          args[0] += '%c改变了状态: %c' + status[e[3][2]] + ' %c-> %c' + status[e[3][3]];
          args.push('color:#933d4d');
          args.push('color:gray');
          args.push('color:#933d4d');
          break;
        case '1':
          args[0] += '%c进入了房间';
          break;
        case '2':
          args[0] += '%c移动到了 : %c' + Objs.mapHolder.Assets.roomNameJson[e[3].substr(2)] + '\r\n%c [_' + e[3].substr(2) +
            '_] ';
          args.push('color:#50a037');
          args.push('color:gray');
          break;
        case '3':
          args[0] += '%c离开了';
          break;
        case '5':
          args[0] += '%c撤回了一条消息';
          break;
        default:
          args[0] += '%c' + e[3];
      }
    } else if (e[3].indexOf('m__4') == 0) {
      let m = e[3].substr(4).split('>');
      args[0] += '%c点播' + mediacode[m[0][0]] + '\r\n标题 : %c' + hdec(m[1]) + '%c\r\n作者 : %c' + hdec(m[2]) +
        '\r\n%c来源 : ' +
        mediacode[m[0]];
      args.push('color:gray');
      args.push('color:black');
      args.push('color:gray');
      args.push('color:black');
      args.push('color:gray');
    } else {
      args[0] += '%c' + hdec(e[3]);
      args.push('color:black');
    }
    arrlog(args, new Date(e[0] * 1e3).toTimeString().substr(0, 8) + ' \r\n\/\/[#' + e[10] + '#] ');
  }

  function hdec(e) {
    let t = document.createElement("div");
    t.innerHTML = e;
    return t.innerText || t.textContent;
  }

  function arrlog(a, c) {
    a = JSON.stringify(a);
    eval('console.log(' + a.substr(1, a.length - 2) + ')' + '\r\n' + '\/\/' + c);
  }

  function arrlog1(a, c) {
    //a = JSON.stringify(a);
    console.log(...a);
  }
  const mediacode = {
    '@': '音乐',
    '@0': '网易云音乐',
    '@1': '虾米音乐',
    '@2': 'QQ音乐',
    '@3': '千千音乐',
    '@4': '酷狗音乐',
    '*': '视频',
    '*0': '爱奇艺',
    '*2': 'YouTube',
    '*3': '哔哩哔哩'
  };
  const ncolor = [
    '#7b13f1', '#0755ff', '#e72fea', '#21d63f', '#b94518'
  ];
  const status = {
    'n': '无状态',
    '0': '会话中',
    '1': '忙碌中',
    '2': '离开中',
    '3': '就餐中',
    '4': '通话中',
    '5': '移动中',
    '6': '如厕中',
    '7': '沐浴中',
    '8': '睡觉中',
    '9': '上课中',
    'a': '作业中',
    'b': '游戏中',
    'c': '看剧中',
    'd': '挂机中',
    'e': '自闭中',
    'f': '请撩我'
  };

  let ab = {
    tui: function() {
      Probe.init.roomSplashHolder || Init.fullPanel(18),
        Objs.roomSplashHolder.function.enter(),
        void(Temporary.roomSplashInit ? (1 == Temporary.roomSplashInit ? (panelAnimate(50, 0, Temporary.initPanelSwitch[
            1], Objs[Temporary.initPanelSwitch[0]].This, Objs.roomSplashHolder.This), delete Temporary.initPanelSwitch) :
          (panelAnimate(56, Probe.fullPanelNoAnimate = 1), Probe.fullPanelNoAnimate = 0), delete Temporary.roomSplashInit
        ) : panelAnimate(56, 1));
    },
    input: function(e, t) {
      Utils.service.moveinputDo(e, t);
    },
    send: function(e) {
      const ui = Utils.smallTools.uniqueID();
      socket.send(JSON.stringify({
        m: e,
        mc: inputcolorhex,
        i: ui
      }));
      return ui;
    },
    rcv: function(e) {
      e = e.split('<').reverse();
      for (let i in e) msg_pub(e[i].split('>'))
    },
    move: function(e) {
      const a = e.indexOf('[_');
      const b = e.indexOf('_]');
      if (a != -1 && b != -1)
        e = e.substr(a + 2, b - a - 2);
      if (Objs.mapHolder.Assets.roomNameJson[e]) {
        Objs.mapHolder.function.roomchanger(e);
        return Objs.mapHolder.Assets.roomNameJson[e];
      }
      e = this.roomID(e);
      e = (typeof(e) == typeof('') ? e : e[0]).split('>')[0];
      Objs.mapHolder.function.roomchanger(e);
      return e;
    },
    roomID: function(e) {
      e = e.split('_').reverse();
      for (let i in Objs.mapHolder.Assets.roomNameJson) {
        let t = true;
        let n = Objs.mapHolder.Assets.roomNameJson[i].split('_').reverse();
        for (let j in n) {
          if (e[j] == n[j]) continue;
          t = false;
          break;
        }
        if (t) return i + '>' + Objs.mapHolder.Assets.roomNameJson[i];
      }
      let r = [];
      for (let i in Objs.mapHolder.Assets.roomNameJson) {
        let t = true;
        let n = Objs.mapHolder.Assets.roomNameJson[i].split('_').reverse();
        for (let j in e) {
          if (n[j].indexOf(e[j]) != -1) continue;
          t = false;
          break;
        }
        if (t) r.push(i + '>' + Objs.mapHolder.Assets.roomNameJson[i]);
      }
      return r.length > 0 ? (r.length == 1 ? r[0] : r) : 0;
    }
  };

  function rcvstarter() {
    if (Temporary._getcontents) {
      ab.t_getcontents = Temporary._getcontents;
      Temporary._getcontents = function(e, t) {
        if (!t) {
          ab.rcv(e);
        }
        ab.t_getcontents(e, t);
      }
    } else {
      setTimeout(rcvstarter, 20);
    }
  }
  rcvstarter();
  unsafeWindow.abot = ab;
  unsafeWindow.top.abot = ab;
})();