• vscode摸鱼学习插件开发


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

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

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

    摸鱼插件:Fish Tools

    1、展示题库分类

    首先实现在侧边栏中展示前20个热搜,没必要太多

    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的配置

    在这里插入图片描述

  • 相关阅读:
    聚鑫数藏平台——引领数字资产管理新风向
    Pycharm远程调试、运行服务器代码
    林旅强 | AI+开源时代 - 开发者与治理者的机遇与挑战
    智能DNS云解析的宕机切换是如何实现的?-中科三方
    mapstruct更新现有实体忽略null空值
    ESP32-C3入门教程 环境篇⑦——ESP-IDF构建自定义组件模板(components/CMakeLists)
    算法面经广联达、中兴、电信篇
    WebStorm安装教程
    每日三题 9.06
    C语言——二周目——数据在内存中的存储
  • 原文地址:https://blog.csdn.net/weixin_44012931/article/details/143404968