😺我开发了一个Chrome插件,可以在掘金官网里撸猫!还可以实时和铲屎官们聊天

简介: 掘金又弄这种整活儿的活动了~~我就喜欢整活儿!话不多说,先看效果~

需求


在掘金官网养一只喵拢共分几步?


  • 往掘金官网注入代码(chrome插件)


  • 网页里展示一只猫(live2d模型)


实现


Chrome插件开发


开发Chrome插件非常简单,我们手动创建这样一个配置文件


{
  "manifest_version": 2,
  "name": "掘金养猫",
  "version": "0.0.1",
  "description": "在稀土掘金社区撸猫并使用猫语实时聊天",
  "icons":
  {
    "16": "resources/icon16.png",
    "48": "resources/icon48.png",
    "128": "resources/icon128.png"
  },
  "content_scripts": 
  [
    {
      "matches": ["https://juejin.cn/*"],
      "js": ["js/index.js"],
      "run_at": "document_end"
    }
  ],
  "permissions":
  [
    "webRequest",
    "webRequestBlocking",
    "storage",
    "http://*/*",
    "https://*/*"
  ],
        "web_accessible_resources": ["js/live2d-mini.js"],
  "homepage_url": "https://github.com/ezshine/chrome-extension-catroom",
  "chrome_url_overrides":
  {
  }
}


这里面需要注意的是content_scripts字段里描述了我们要将js/index.js注入到哪些域名网页中,在本例里,我将js/index.js注入到所有juejin.cn开头的域名网页里。这个matches字段不支持正则,需要模糊匹配的部分用*号。


如果你想要在别的网页里撸猫,可自行修改matches字段,设置为<all_urls>可在所有网页里撸猫


另外,我们还需要向网页里注入一个live2d-mini.js的第三方库,content_scripts中要使用的插件本地资源,都需要在web_accessible_resources字段中注册。否则无法使用。


然后打开菜单更多工具>扩展程序选择加载已解压的扩展程序


image.png


选择这个配置文件所在的目录,然后就可以开始编写js/index.js的代码了。首先创建一个script标签,将live2d-mini.js动态的加载到网页中。


function injectCustomJs(jsPath,cb)
{
    var temp = document.createElement('script');
    temp.setAttribute('type', 'text/javascript');
    temp.src = chrome.extension.getURL(jsPath);
    temp.onload = function()
    {
        this.parentNode.removeChild(this);
        if(cb)cb();
    };
    document.head.appendChild(temp);
}
injectCustomJs('js/live2d-mini.js',function(){
    //加载成功后准备设置画布并显示猫咪模型
});


使用代码创建一个顶层canvas,作为用来显示猫咪的画布。


function setupCatPanel(){
        var canvas = document.createElement('canvas');
        canvas.id="live2d";
        canvas.width = 300;
        canvas.height = 400;
        canvas.style.width='150px';
        canvas.style.height='200px';
        canvas.style.position = "fixed";
        canvas.style.zIndex = 9999;
        canvas.style.right = 0;
        canvas.style.bottom = 0;
        canvas.style.pointerEvents='none';
        canvas.style.filter='drop-shadow(0px 10px 10px #ccc)';
        document.body.appendChild(canvas);
}


以下是完整代码


!function(){
    var cattype = "white";
    function setupCatPanel(){
        var canvas = document.createElement('canvas');
        canvas.id="live2d";
        canvas.width = 300;
        canvas.height = 400;
        canvas.style.width='150px';
        canvas.style.height='200px';
        canvas.style.position = "fixed";
        canvas.style.zIndex = 9999;
        canvas.style.right = 0;
        canvas.style.bottom = 0;
        canvas.style.pointerEvents='none';
        canvas.style.filter='drop-shadow(0px 10px 10px #ccc)';
        document.body.appendChild(canvas);
}
     function setupModel(){
        var _cattype = localStorage.getItem('cattype');
        if(_cattype)cattype=_cattype;
        var model_url= 'https://cdn.jsdelivr.net/gh/ezshine/chrome-extension-catroom/src/resources/'+cattype+'cat/model.json';
        var loadLive = document.createElement("script");
        loadLive.innerHTML = '!function(){loadlive2d("live2d", "' + model_url + '");}()';
        document.body.appendChild(loadLive);
    }
    function injectCustomJs(jsPath,cb)
    {
        var temp = document.createElement('script');
        temp.setAttribute('type', 'text/javascript');
        temp.src = chrome.extension.getURL(jsPath);
        temp.onload = function()
        {
            this.parentNode.removeChild(this);
            if(cb)cb();
        };
        document.head.appendChild(temp);
    }
    injectCustomJs('js/live2d-mini.js',function(){
      setupCatPanel();
      setupModel();
   });
}()


Live2D模型


live2d是非常流行的2d纸片人系统,在很多二次元老哥们的博客里被称作看板娘,社区里可以找到海量的live2d模型,本人收藏的模型/皮肤非常之多,live2d模型仓库可以找到一部分我整理好的。


所以当我看到这个征文题目时第一时间就想起了这两只猫的模型

无论黑猫,白猫。能博我欢心就是好喵~


想要橘猫,加菲猫?只要点赞和评论到位~嗯!


配合这个题目是不是太贴切了。


image.png


上述代码写完之后,在扩展程序里刷新一下这个插件就可以在掘金网页里愉快的撸猫啦~


image.png


就这?需求升级!


这样已经很有趣了,但还可以更有趣吗?比如,让所有安装了这个插件的人一起用喵星人的语言聊天呢?


想想就很有趣!干!继续拆解需求


  • 实时聊天系统


  • 喵语言加解密


实时聊天


这里我采用的技术方案,是上个礼拜刚从"前端从进阶到入院"里看到的一篇文章里提到的croquet


image.png


不用搭建服务器,引入一个js就可以实现实时聊天。并且这个库的能力远远不止于此,以后的项目里还要好好利用它。


这个聊天系统的搭建代码有点多,文章里就不贴了,但是这个库真的非常很好玩

强烈建议大家试试


喵语言加解密


聊天嘛,必然要谨慎处理文字内容,恰好想起曾经看到过一个兽语音译的小工具,可以将正常的文本加密为嗷呜啊这种兽语。


//https://roar.dreagonmon.top/
'我喜欢撸猫🐈' 加密后 ’~呜嗷呜啊嗷~嗷~呜嗷啊呜啊啊~~嗷~~啊呜嗷~嗷~呜嗷啊嗷呜啊呜呜~呜~呜嗷呜嗷~啊嗷呜~呜啊呜呜嗷呜呜呜呜啊啊嗷~啊‘


基于这个好玩的字符串加密算法,我修改成了猫星人的版本。聊天时的所有文字都会转换为喵语发送。需要手动解密,这样一来,文本在网上传输的时候非常安全,由浏览器端完成解密。


'你好' 加密后 '喵嗷嗷喵喵喵呜喵喵~呜嗷~呜~嗷嗷喵~'


image.png

相关文章
|
1月前
|
Web App开发 JavaScript 前端开发
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念,包括事件驱动、单线程模型和模块系统;探讨其安装配置、核心模块使用、实战应用如搭建 Web 服务器、文件操作及实时通信;分析项目结构与开发流程,讨论其优势与挑战,并通过案例展示 Node.js 在实际项目中的应用,旨在帮助开发者更好地掌握这一强大工具。
46 1
|
1月前
|
Web App开发 人工智能 自然语言处理
WebChat:开源的网页内容增强问答 AI 助手,基于 Chrome 扩展的最佳实践开发,支持自定义 API 和本地大模型
WebChat 是一个基于 Chrome 扩展开发的 AI 助手,能够帮助用户理解和分析当前网页的内容,支持自定义 API 和本地大模型。
77 0
|
2月前
|
Web App开发 Windows
win 快捷键大全,虚拟窗口、桌面等操作细节,可以使界面整洁,分类工作;Chrome快捷键,都是一些开发的骚操作
这篇文章提供了Windows操作系统和Chrome浏览器的快捷键大全,以及Xshell的快捷键操作,旨在帮助用户提高工作效率和界面管理。
146 2
|
2月前
|
Web App开发 JSON JavaScript
vue学习:chrome 中 vuetools 开发插件 的下载、安装
这篇文章介绍了如何在Chrome浏览器中下载、安装并测试Vue.js开发插件——vue-devtools。
403 0
vue学习:chrome 中 vuetools 开发插件 的下载、安装
|
4月前
|
Web App开发 存储 前端开发
《Chrome谷歌插件Top10》开发最好用的谷歌插件
本文介绍了多个实用的浏览器插件及其安装方法。包括CSDN浏览器助手,提供高效开发工具;FeHelper,前端必备工具,支持格式化、压缩等功能;uBlock Origin,有效屏蔽广告和弹窗;PageLiner,网页标尺工具,便于前端设计;Fatkun,批量下载图片;Smallpdf,文件转换工具;Octotree,GitHub代码树插件;Awesome Screenshot,截图与录屏工具;ColorZilla,颜色拾取器;Dark Reader,暗黑模式阅读插件。安装方式有通过Chrome商店搜索或下载crx插件本地安装。
80 11
|
4月前
|
Web App开发 JSON 前端开发
30个Chrome 灵魂插件!
30个Chrome 灵魂插件!
|
4月前
|
Web App开发 JSON 安全
【跨域难题终结者】:一键解锁Chrome浏览器神秘设置,彻底告别开发阶段的跨域烦恼!
【8月更文挑战第20天】跨域是前端开发常遇难题,尤其在前后端分离项目中。浏览器因安全考量会阻止不同源间的请求。本文对比CORS、JSONP、代理服务器等解法,并介绍开发阶段通过调整Chrome设置来临时禁用跨域限制的方法,提供启动Chrome及使用`fetch`API示例,适合快速测试。但请注意这不适用于生产环境,存在一定安全风险。
1178 1
|
4月前
|
Web App开发 前端开发 JavaScript
灵魂拷问-前端到底能做些什么?--chrome插件篇
本文会从浏览器插件应用场景切入,穿插插件基础能力和常见入口的介绍,核心回答如下三个问题:插件可以被使用在哪些场景?不同的使用场景我们的主要代码实现思路是怎样的?我们可以从哪些角度入手自己开发一款可以落地实用的浏览器插件?
|
3月前
|
Web App开发 数据采集 存储
WebDriver与Chrome DevTools Protocol:如何在浏览器自动化中提升效率
本文探讨了如何利用Chrome DevTools Protocol (CDP) 与 Selenium WebDriver 提升浏览器自动化效率,结合代理IP技术高效采集微博数据。通过CDP,开发者可直接操作浏览器底层功能,如网络拦截、性能分析等,增强控制精度。示例代码展示了如何设置代理IP、cookie及user-agent来模拟真实用户行为,提高数据抓取成功率与稳定性。适用于需要频繁抓取互联网数据的应用场景。
562 3
WebDriver与Chrome DevTools Protocol:如何在浏览器自动化中提升效率
|
1月前
|
Web App开发 缓存 安全
WIN11 Chrome 双击打不开闪退及Chrome浏览器不能拖拽文件crx
【11月更文挑战第6天】本文介绍了 WIN11 系统中 Chrome 浏览器双击打不开闪退及不能拖拽文件 crx 的原因和解决方法。包括浏览器版本过旧、扩展程序冲突、硬件加速问题、缓存过多、安全软件冲突、系统文件损坏、用户配置文件损坏等问题的解决方案,以及 crx 文件的屏蔽、权限问题和文件格式问题的处理方法。
132 2