Shell 批量获取力扣做题量工具

这是一个批量统计国内版 LeetCode 做题量的工具,写这个小工具的起因是我们实验室准备每周统计大家 leetcode 的做题量,我们实验室十几个人,如果一人一个人看,太费时间了,作为高效程序员这不是我们做事的风格,于此就有了这个小工具。对于平常的事务我一贯对待的风格是:能规范化的尽量使其流程化,能流程化的尽量使其自动化。追逐效率工具能解放我们更多的时间,这没什么可说的。

脚本代码

#!/bin/bash

payload_pre='{
    "operationName": "userPublicProfile",
    "variables": {
        "userSlug": "'
payload_post='"
    },
    "query": "query userPublicProfile($userSlug: String!) {\n  userProfilePublicProfile(userSlug: $userSlug) {\n    username\n    submissionProgress {\n      totalSubmissions\n      waSubmissions\n      acSubmissions\n      reSubmissions\n      otherSubmissions\n      acTotal\n      questionTotal\n      __typename\n    }\n  }\n}\n"
}'

# 获取信息的leetcode用户
# 两数组元素需保持相同, shell数组格式: arr=( "a" "b" "c"),三个元素的数组arr
account_arr=( "hun-tun-5" "mrlin-rh" ) # 个人主页用户名 https://leetcode-cn.com/u/freezer/
name_arr=( "张三" "李四" )

# 时间
date

#${#array[@]}获取数组长度
for (( i=0;i<${#account_arr[@]};i++ )) do
    account="${account_arr[i]}"
    ret=`curl -s -L -X POST 'https://leetcode-cn.com/graphql/' -H 'Content-Type: application/json' --data "$payload_pre$account$payload_post"`
    count=`echo $ret | grep -Eo '"acTotal":\d+' | grep -Eo '\d+'`
    name="${name_arr[i]}"
    echo "$name,$count"
done

使用方法

将脚本复制到文件leetcodeutil.sh,直接运行脚本,无需参数。

sh ./leetcodeutil.sh
bash ./leetcodeutil.sh

执行效果:

image.png