查看: 968| 回复: 0
跳转到指定楼层
上一主题 下一主题
收起左侧

[Leetcode] 分享一个我写的leetcode timer chrome extension 球加米球内推

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
本帖最后由 kejeon 于 2022-7-20 09:23 编辑

刷题太痛苦,刷累了写个chrome extension玩玩。第一次写extension,好多东西不了解,边写边查总算是搞个能用的Published了

功能:
Timer + Webhook
leetcode timer不稀奇,自动计时的插件也到处都是。但是想整理自己刷题记录就没那么容易了,我给某个插件的开发者留言问可不可以加这个功能,没有回复,干脆自己写一个。

下载:插件地址 因为需要在leetcode页面render一个计时器,还要判断提交结果,所以会要求一些权限,点ok就行,不放心的同学github地址 在这里

如果只是要计时功能,其实安装后直接用就可以。

主要说一下怎么设置Google Sheet来记录自己的record。

伸手党的同学可以直接用我做好的Google Sheet Template 文件菜单点击make copy到自己的account,
选Extensions -> Apps Script
Deploy -> New deployment
Copy Web app URL


然后右键点击插件,打开options,把刚才复制的url粘到这里,打开Automatically Start Timer,就可以开始做题了。


喜欢自己动手的朋友
Apps Script 代码供参考(缩进复制过来都没了,自己format一下吧)
  1. function doPost(e) {
  2.   var params = JSON.stringify(e.postData.contents);
  3.   params = JSON.parse(params);
  4.   var myData = JSON.parse(e.postData.contents);
  5.   var result = myData.result;
  6.   var question = myData.question;
  7.   var title = myData.title;
  8.   var runtime = myData.runtime;
  9.   var memory = myData.memory;
  10.   var time_elapsed = myData.time_elapsed;
  11.   var url = myData.url;
  12.   var datetime = myData.datetime.split(' ');
  13.   var date = datetime[0];
  14.   var time = datetime[1];
  15.   var sheet = SpreadsheetApp.getActive().getSheetByName('leetcode_log');
  16.   var lastRow = Math.max(sheet.getLastRow(),1);
  17.   sheet.insertRowAfter(lastRow);
  18.   var timestamp = new Date();
  19.   var titleLink = SpreadsheetApp.newRichTextValue()
  20.    .setText(title)
  21.    .setLinkUrl(url)
  22.    .build();
  23.   sheet.getRange(lastRow + 1, 1).setValue(date);
  24.   sheet.getRange(lastRow + 1, 2).setValue(time);
  25.   sheet.getRange(lastRow + 1, 3).setValue(question);
  26.   sheet.getRange(lastRow + 1, 4).setRichTextValue(titleLink)
  27.   sheet.getRange(lastRow + 1, 5).setValue(result);
  28.   sheet.getRange(lastRow + 1, 6).setValue(time_elapsed);
  29.   sheet.getRange(lastRow + 1, 7).setValue(runtime);
  30.   sheet.getRange(lastRow + 1, 8).setValue(memory);
  31.   SpreadsheetApp.flush();
  32. return ContentService.createTextOutput(JSON.stringify({status:"received"})).setMimeType(ContentService.MimeType.JSON);
  33. }
复制代码
如果不想用Google Sheet,可以自己设个API server,payload格式如下
  1. {
  2.     "question": "1",
  3.     "title": "Two Sum",
  4.     "result": "Success",
  5.     "runtime": "Runtime: 3 ms, faster than 97.80% of Go online submissions for Two Sum.",
  6.     "memory": "Memory Usage: 4.3 MB, less than 33.53% of Go online submissions for Two Sum.",
  7.     "time_elapsed": "00:00:10",
  8.     "url": "https://leetcode.com/problems/two-sum/",
  9.     "datetime": "2022/07/15 13:48:54"
  10. }
复制代码
生成的Google Sheet格式如下,可以根据自己的log来调整学习计划。


如果各位觉得这个插件对你有用,欢迎加米,Chrome Web Store点赞,如果发现bug或者希望加新功能,欢迎github issue/PR!



评分

参与人数 2大米 +2 收起 理由
小亩_ll22qw3 + 1 赞一个
abawlau + 1 赞一个

查看全部评分


上一篇:LeetCode Question Video Solutions
下一篇:如果想过oa 需要刷lc多少题啊
您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表