vscode摸鱼学习插件开发

news2024/11/24 7:43:16

不知道大家在摸鱼的时候,会不会想要学习?
或者有没有考公人,下班要学习的?
上班时间摸鱼,下班时间不够学习?

为此,我决定开发一个vscode插件,来刷粉笔题

粉笔插件名称:Fenbi Tools
vscode扩展可搜索安装

摸鱼插件:Fish Tools

1、展示题库分类

首先实现在侧边栏中展示题库分类
1、package.json 增加配置

"views": {
      "fenbiBar": [
        {
          "type": "webview",
          "id": "openFenbiWebview",
          "name": "container"
        }
      ]
    },
"viewsContainers": {
      "activitybar": [
        {
          "id": "fenbiBar",
          "title": "fenbi",
          "icon": "resources/dark/fenbi.svg"
        }
      ]
    },

如此,侧边栏就会展示粉笔按钮

按钮有了,内容可以通过webview视图展示,vscode.window.registerWebviewViewProvider 可以注册webview视图

 vscode.window.registerWebviewViewProvider("openFenbiWebview", provider)

粉笔分类内容,可以通过调粉笔的接口获取,传递到webview内

const cacheResult = await getCache();
const res = await getCategories()
webview.postMessage({
   command: "init",
   data: modifyArray(res, cacheResult.keypointIds),
 });

到这里,完成情况如图所示,
在这里插入图片描述
只有分类当然还是不够的,因为我们需要实际参与做题

2、题目内容

通过vscode扩展与webview 进行消息传递获取数据。具体实现可参考vscode摸鱼插件开发消息传递

let postExerciseId = exerciseId;
if (!postExerciseId) {
  const res = await getExercisesId({ keypointId: id });
  postExerciseId = res.id;
}
const exerciseResult = await getExercises(postExerciseId);
const questionResult = await getQuestion(postExerciseId);

webview.postMessage({
  command: "getQuestion",
  data: {
    exerciseId: postExerciseId,
    ...questionResult,
  },
});

在这里插入图片描述

这里通过分析粉笔网站获取,以及webview中的点击事件,调用接口(不在webview中),获取题目内容。通过postMessage 传递到webview

这里分析粉笔网站的答题情况,发现每次点击都会触发studyTime接口,点击下一题才会触发inc接口,提交自己的选项。

3、题目答案

在完成做题,并交卷的情况下,查看答案是必要的,具体实现类似获取题目内容,返回字段大多数一致,只是增加了solutions数组(解析),
在这里插入图片描述

4、配置

上述只简单概述插件功能,配置方面,这里增加了cookie的配置

在这里插入图片描述

5、cookie 获取

注意,插件需要获取设置cookie才能使用,以下是示例,未截全,实际使用需要全部复制粘题!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2237081.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入浅出WebSocket(实践聊天室demo)

文章目录 什么是WebSocket?WebSocket连接过程WebSocket与Http的区别重连机制完整代码使用方法心跳机制实现聊天室demo(基于Socket.io)参考文章、视频小广告~什么是WebSocket? WebSocket 是一种在单个TCP连接上进行全双工通信的协议(计算机网络应用层的协议) 在 WebSocket A…

[ Linux 命令基础 7 ] Linux 命令详解-磁盘管理相关命令

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

ElasticSearch 添加IK分词器

ElasticSearch 添加IK分词器 前言一、IK分词器的算法二、Ik分词器的下载安装(Winows 版本)三、Ik分词器的下载安装(Linux 版本)四、验证测试(postman工具)测试 ik_smart 分词算法测试 ik_max_word 分词算法…

aws(学习笔记第十一课) 使用AWS的EFS,以及AWS Storage Gateway

aws(学习笔记第十一课) 使用AWS的EFS和AWSStorage Gateway 学习内容: 使用AWS的EFS使用AWS Storage Gateway 1. 使用AWS的EFS 什么是EFS EFS是 Elastic File System的缩写。前面练习的实例存储和EBS都是同时只能一个EC2实例进行挂载,不能实现多个EC2实…

Diffusion Policy——斯坦福刷盘机器人UMI所用的扩散策略(含Diff-Control、ControlNet详解)

前言 本文一开始是属于此文《UMI——斯坦福刷盘机器人:从手持夹持器到动作预测Diffusion Policy(含代码解读)》的第三部分,考虑后Diffusion Policy的重要性很高,加之后续还有一系列基于其的改进工作 故独立成本文,且把原属于另一…

计算机毕业设计 | SpringBoot慈善公益平台 爱心互助活动发布管理系统(附源码)

1,项目介绍 爱慈善公益平台(love-charity)是一个基于 SpringBoot 开发的标准 Java Web 项目。整体页面非常的简约大气,项目的完整度较高,是一个偏向公益论坛的系统。非常适合刚刚接触学习 SpringBoot 的技术小白学习&…

【深入浅出】之Linux进程(二)

📃博客主页: 小镇敲码人 💚代码仓库,欢迎访问 🚀 欢迎关注:👍点赞 👂🏽留言 😍收藏 🌏 任尔江湖满血骨,我自踏雪寻梅香。 万千浮云遮碧…

bert-base-chinese模型使用教程

向量编码和向量相似度展示 import torch from transformers import BertTokenizer, BertModel import numpy as npmodel_name "C:/Users/Administrator.DESKTOP-TPJL4TC/.cache/modelscope/hub/tiansz/bert-base-chinese"sentences [春眠不觉晓, 大梦谁先觉, 浓睡…

Qt/C++ 海康SDK开发示例Demo

*** 工业相机在机器视觉中起到关键作用,本文基于海康 SDK 详细解读了设备连接与控制的各个步骤。内容涵盖设备枚举、句柄创建、图像采集回调以及设备异常处理,帮助开发者快速理解如何通过代码控制相机,实时采集并处理图像数据。*** 1. 搜索并…

RabbitMQ的应用

七种工作模式介绍 1.Simple(简单模式) P:生产者,也就是要发送信息的程序 C:消费者,消息的接收者 Queue:消息队列。图中黄色背景部分,类似一个邮箱,可以缓存发送信息;生产者向其中…

K8S网络插件故障处理

1网络插件故障 1此故障问题处理方法 查询ip是否正常是否是主节点IP地址如果不是需要更改 更改方式 1 修改calico.yaml文件的相应参数 # Cluster type to identify the deployment type - name: IP_AUTODETECTION_METHOD #增加内容value: "interfaceens*" 或者 value…

【论文速看】DL最新进展20241109-图像超分、物理信息神经网络、扩散模型

目录 【图像超分】【物理信息神经网络】【扩散模型】 【图像超分】 [2024 红外图像超分] Infrared Image Super-Resolution via Lightweight Information Split Network 论文链接:https://arxiv.org/pdf/2405.10561v2 代码链接:无 单图像超分辨率&…

Python学习从0到1 day26 第三阶段 Spark ① 数据输入

要学会 剥落旧痂 然后 循此新生 —— 24.11.8 一、Spark是什么 定义: Apache Spark 是用于大规模数据处理的统一分析引擎 简单来说,Spark是一款分布式的计算框架,用于调度成百上千的服务器集群,计算TB、PB乃至EB级别的海量数据…

[Python学习日记-63] 继承与派生

[Python学习日记-63] 继承与派生 简介 继承 派生 简介 上一篇文章我们学习了类如何使用,以及相关特性,也做了相关的练习,在练习当中发现类与类之间有时也会存在重复代码,其实在类中我们还有一个继承和派生的概念没有说&#xf…

基于 Encoder-only 架构的大语言模型

基于 Encoder-only 架构的大语言模型 Encoder-only 架构 Encoder-only 架构凭借着其独特的双向编码模型在自然语言处理任务中表现出色,尤其是在各类需要深入理解输入文本的任务中。 核心特点:双向编码模型,能够捕捉全面的上下文信息。 En…

Python学习------第四天

Python的判断语句 一、布尔类型和比较运算符 二、 if语句的基本格式 if语句注意空格缩进!!! if else python判断语句的嵌套用法:

uniapp实现H5和微信小程序获取当前位置(腾讯地图)

之前的一个老项目,使用 uniapp 的 uni.getLocation 发现H5端定位不准确,比如余杭区会定位到临平区,根据官方文档初步判断是项目的uniapp的版本太低。 我选择的方式不是区更新uniapp的版本,是直接使用高德地图的api获取定位。 1.首…

测试网空投进行中 — 全面了解 DePIN 赛道潜力项目 ICN Protocol 及其不可错过的早期红利

随着云计算技术的飞速发展,越来越多的企业和个人对云服务的需求变得多样化且复杂化。然而,传统的中心化云服务平台(如AWS、微软Azure等)往往存在着高成本、数据隐私保护不足以及灵活性差等问题。 为了解决这些挑战,Imp…

IntelliJ IDEA 使用心得与常用快捷键

刚开始学习写Java的时候,用的eclipse,正式工作后,主要用的myeclipse,去年初在前辈的推荐下,在2折的时候买了正版的 IntelliJ IDEA 和 Pycharm,12.0版终生使用,一年更新。 使用前早就久闻其名&am…

【rust】rust基础代码案例

文章目录 代码篇HelloWorld斐波那契数列计算表达式(加减乘除)web接口 优化篇target/目录占用一个g,仅仅一个actix的helloWorld demo升级rust版本, 通过rustupcargo换源windows下放弃吧,需要额外安装1g的toolchain并且要…