斗鱼扩展--宝箱记录查询

查询宝箱当然要有数据源,我们把每次抢到的宝箱都保存记录,这样,我们可以查询一段时间内的“成果”,

我第一个想到的是 写入数据库,一个小巧的数据库,当然选mysql啦,如果不想安装其它东西,浏览器自带的IndexedDB,也行,因为Web Sql 不能持久化,所以不用。

先说数据从哪来,每次抢宝箱成功,都会 弹出,”恭喜您,领取了XXXX 个鱼丸”, ” 恭喜您,领取了XXXX 个稳”,然后 查出在 mod-all1.js内,this.appendTips(n),这个n会变动的。

function insertData(_data) {

       console.log(_data);

       window.postMessage({"insertSql": _data}, ‘*‘);

};

  

可以在外面定义一个 方法,用window.postMessage传给popup层,popoup 把数据处理后,传给background层,background 写入数据库。

Popup接收

//接收 window.postMessage({"insertSql": _data}, ‘*‘); 类型的消息

window.addEventListener("message", function(e)

{

       if (e.data.hasOwnProperty("insertSql") ) {

              var data = e.data.insertSql;

              data.roomId = roomObj.getRoomId();  //房间id

              data.time = RoomObj.formatDateTime(new Date());//格式化后的当前时间("YYYY-MM-DD HH:mm:ss")

}, false);

  

再用 chrome.runtime.sendMessage(

_data,    //数据

function(response) {

}

);

发给 Background层

Background 用chrome.runtime.onMessage.addListener(function(message, sender, sendResponse){}接收,然后用WebSocket 发给后端,后端,我用C#写的,调用 Fleck.dll 内的WebSocketServer 与js对接,拿到数据,写入 数据库。

有些人 不喜欢安装其他东西,也不喜欢运行其它程序,那就只能放入 浏览器IndexedDB内了,但一卸载扩展数据就会丢失,查询大量数据时,也耗时,

background层 加载indexedDB.js

//初始化数据库

  1 var request;
  2
  3 var db;
  4
  5 function initDB(_name,_version){
  6
  7        try {
  8
  9               if (!window.indexedDB) {
 10
 11                      console.log("browser doesn‘t support indexedDB");
 12
 13               } else {
 14
 15                      var name = _name || ‘test‘;
 16
 17                      var version = _version || 2;
 18
 19
 20
 21                      request = window.indexedDB.open(_name,_version);
 22
 23                      request.onerror = function (event) {
 24
 25                             console.log(‘数据库打开报错‘);
 26
 27                      };
 28
 29                      request.onsuccess = function (event) {
 30
 31                             db = request.result;
 32
 33                             console.log(‘数据库打开成功‘);
 34
 35                      };
 36
 37                      //增加数据库版本号时,会触发onupgradeneeded事件(会在onsuccess之前被调用)
 38
 39                      request.onupgradeneeded = function (event) {
 40
 41                             db = event.target.result;
 42
 43                      };
 44
 45               }
 46
 47        } catch(e) {
 48
 49               console.log(e.message);
 50
 51        }
 52
 53 };
 54
 55 //初始化 indexedDB
 56
 57 initDB("DouyuRoom",2);
 58
 59 request.onupgradeneeded = function(event) {
 60
 61        db = event.currentTarget.result;
 62
 63        var objectStore =  db.createObjectStore(‘t_treasure‘,{keyPath: ‘id‘,autoIncrement: true });
 64
 65 };
 66
 67 function Treasure() {
 68
 69 }
 70
 71 var treasure = new Treasure();
 72
 73 Treasure.add = function(_obj) {
 74
 75        var tx = db.transaction("t_treasure", ‘readwrite‘);
 76
 77        var store = tx.objectStore("t_treasure");
 78
 79        _obj.time= formatDateTime(new Date());
 80
 81        console.log(_obj);
 82
 83        store.add(_obj);
 84
 85 };
 86
 87
 88
 89 function time1Lesstime2(d1,d2)
 90
 91 {
 92
 93        return d1.replace(/-/g,"").replace(/:/g,"").replace(/ /g,"")< d2.replace(/-/g,"").replace(/:/g,"").replace(/ /g,"");
 94
 95 };
 96
 97 var dataFromIndexDb;
 98
 99 Treasure.find = function(_s,_e){
100
101        _s=_s +"00:00:00";
102
103        _e=_e +"23:59:59";
104
105        dataFromIndexDb=[];
106
107        var objectStore = db.transaction(‘t_treasure‘).objectStore(‘t_treasure‘);
108
109        objectStore.openCursor().onsuccess = function (event) {
110
111               var cursor = event.target.result;
112
113               if (cursor) {
114
115                      if (time1Lesstime2(_s,cursor.value.time) &&time1Lesstime2(cursor.value.time,_e)){
116
117                             var t= {time:cursor.value.time,roomId: cursor.value.roomId,src_nick:cursor.value.src_nick,award_type:cursor.value.award_type,silver:cursor.value.silver,prop_count:cursor.value.prop_count};
118
119                             // console.log(‘time: ‘ + cursor.value.time);
120
121                             dataFromIndexDb.push(t);
122
123                             cursor.continue();
124
125                      }
126
127               } else {
128
129                      //console.log(‘没有数据了!‘);
130
131               }
132
133        };
134
135 };
136
137 function formatDateTime(inputTime) {
138
139        var date = new Date(inputTime);
140
141        var y = date.getFullYear();
142
143        var m = date.getMonth() + 1;
144
145        m = m < 10 ? (‘0‘ + m) : m;
146
147        var d = date.getDate();
148
149        d = d < 10 ? (‘0‘ + d) : d;
150
151        var h = date.getHours();
152
153        h = h < 10 ? (‘0‘ + h) : h;
154
155        var minute = date.getMinutes();
156
157        var second = date.getSeconds();
158
159        minute = minute < 10 ? (‘0‘ + minute) : minute;
160
161        second = second < 10 ? (‘0‘ + second) : second;
162
163        return y + ‘-‘ + m + ‘-‘ + d+‘ ‘+h+‘:‘+minute+‘:‘+second;
164
165 };

这样,就会写入 浏览器的IndexedDB ,

至于查询页面,有数据源了,大家各有各的方法显示查询结果,我用的是vue.js 与 组件 | Element ,

原文地址:https://www.cnblogs.com/likehc/p/9610644.html

时间: 2024-08-02 18:30:59

斗鱼扩展--宝箱记录查询的相关文章

SQL Server扩展事件(Extended Events)-- 使用扩展事件跟踪查询语句

SQL Server扩展事件(Extended Events)-- 使用扩展事件跟踪查询语句 创建扩展事件会话 展开"Object Explorer"."Management"."Extended Events"."Sessions"目录,你会发现一到两个预设的会话.默认,在SQL Server 2012包含system_health会话,而根据不同的SQL Server2012的版本,可能有AlwaysOn_health会话

浅析微信支付:商户平台开通现金红包、指定用户发放、红包记录查询

本文是[浅析微信支付]系列文章的第十三篇,主要讲解在如何开通商户平台的红包功能和为用户发放红包,以及查询发送红包记录. 浅析微信支付系列已经更新十三篇了哟-,没有看过的朋友们可以看一下哦. 浅析微信支付:(余额提现)企业付款到微信用户零钱或银行卡账户 浅析微信支付:支付验收示例和验收指引 浅析微信支付:如何使用沙箱环境测试 浅析微信支付:申请退款.退款回调接口.查询退款 上一篇文章我们说到,如果有余额提现.返利福利等需求时,就会用到商家向用户付款的操作,基于微信支付,上篇我们说了付款到用户余额和

MySQL使用笔记(七)排序和限制数据记录查询

By francis_hao    Dec 17,2016 排序数据记录查询 排序是指将筛选出符合条件的数据进行有序排放,有升序(ASC(默认))方式和降序(DESC)方式. mysql> select field1 field2-- from table_name [where 条件] order by fieldm1 [asc|desc],fieldm2 asc|desc,--; 这里的第二个排序字段,会在第一个排序字段相同的情况下进行排序.若第一个排序字段没有相同项,则第二个排序字段无作用

MySQL使用笔记(八)统计函数和分组数据记录查询

By francis_hao    Dec 17,2016 统计函数数据记录查询 统计函数 统计函数 描述 count() count(*):统计表中记录条数(包括NULL值字段) count(field): 统计表中记录条数(不包括NULL值字段) avg() 计算字段值的平均值 sum() 计算字段值总和 max() 查询字段值最大值 min() 查询字段值最小值 mysql> select function(field) [new_name] from table_name where 条

车辆保养记录查询

详情链接:http://www.haoservice.com/docs/112 车辆保养记录查询,通过车辆VIN,即车辆识别代码,车架号,可以快速查询车辆历史报告,汽车历史记录,维修保养查询,事故车查询,召回查询,调表车,水淹车,火烧车等车辆存在的问题.车鉴定,车辆维修记录,车辆历史记录,汽车历史记录,维修保养查询,事故车查询,召回查询,调表车,水淹车,火烧车,大圣来了,蚂蚁女王,4S店保养查询,二手车工具,二手车   支持格式: JSON/XML 请求方式: GET/POST   请求参数:

手机通话清单查询,手机短信记录查询,移动手机短信内容查询,客户详细资料查询

免责声明:咨 询 Q Q: 2540400410 主要有这方面的一切问题你就直接加这个QQ:2540400410就帮助你了.成功案例等信息在此强烈推荐,他们专业查微信聊天记录,QQ聊天记录,恢复删除的微信聊天记录,查别人的qq聊天记录等.服务QQ: 2540400410.我找过他们,他们有信誉.也许可以帮你,我查我男朋友的聊天记录就是找他们的.~他们的QQ: 2540400410-很专业,信誉很好!希望可以帮助你们.加QQ:2540400410 专业为你服务:手机通话记录查询,手机通话详单查询,

转载:30多条mysql数据库优化方法,千万级数据库记录查询轻松解决

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描, Sql 代码 : select id from t where num is null; 可以在 num 上设置默认值 0,确保表中 num 列没有 null 值,然后这样查询: Sql 代码 : select id from t where num=0; 3.应尽量避免在 wh

elastic search6.2.2 实现用户搜索记录查询(去重、排序)

elastic search6.2.2 实现搜索记录查询 ,类似新浪微博这种,同样的搜索记录后面时间点的会覆盖前面的(主要思路:关键词去重,然后按时间排序) 先创建索引 //我的搜索 PUT my_search { "settings":{ "number_of_replicas": 0 }, "mappings":{ "_doc":{ "properties":{ "user": {&

MySQL存储引擎 SQL数据导入/导出 操作表记录 查询及匹配条件

MySQL存储引擎的配置 SQL数据导入/导出 操作表记录 查询及匹配条件 1 MySQL存储引擎的配置1.1 问题 本案例要求MySQL数据存储引擎的使用,完成以下任务操作: 可用的存储引擎类型 查看默认存储类型 更改表的存储引擎 1.2 步骤 实现此案例需要按照如下步骤进行. 步骤一:查看存储引擎信息 登入MySQL服务器,查看当前支持哪些存储引擎. 使用mysql命令连接,以root用户登入: [[email protected] ~]# mysql -u root –p Enter pa