Intro
前两天受清华的食堂总结项目( https://github.com/leverimmy/THU-Annual-Eat )的启发,写了个思源码的版本:
https://github.com/Milvoid/SJTU-Annual-Eat
快速开始
macOS 与 Windows 均可使用
前往 Release 页面 下载对应系统的压缩包
解压后得到 Get-Eat-Data
与 Annual-Report.py
首先运行 Get-Eat-Data
,按照提示获取数据后得到 eat-data.json
之后再运行 Annual-Report.py
即可生成年度报告啦
示例
运行 Annual-Report.py
之后,你就可以看到今年的一些 Highlight 以及相关统计图,譬如:
1 | 思源码年度消费报告: |
Notes
Get-Eat-Data.exe
可直接运行;如果需要运行 Get-Eat-Data.py
,请参考 SJTU 开发者文档 填写 client_id
和 client_secret
直接把
client_id
和client_secret
明文写入Get-Eat-Data.py
似乎不太好,还是打包起来吧虽然从 pyinstaller 打包的程序里面扒出来好像不是特别难
特别感谢
@boar 大佬提供的帮助
帮忙修复程序的
UNIkeEN (Yujie Sun)
FlowerBlackG (GuanTouYu)
1357310795
Stype0912 (Tang)
RafaDD (Jianrong Ding)
havedifficultyinfindingnames
另外 iOS 版交课表也更新思源码年度总结功能啦
常见问题及解决
Annual-Report.py
闪了一下就没了可能是所需的库没有安装,可以用文本编辑器打开文件,之后查看最上方需要导入的模块是否有缺失
Access Token 获取失败
可以确认一下自己没有使用代理,sjtu服务器好像会somehow因为代理拒绝访问
运行
Get-Eat-Data
后仍然找不到 json 文件可以在终端里先
cd
到 json 文件所在路径,之后从终端运行Annual-Report.py
;或者直接把Annual-Report.py
的文件路径改成绝对路径运行到早中晚餐之后报错
应该是统计最早一餐部分的兼容性问题,可以手动注释掉该部分,或者下载新的 Release
这部分失败之后自动跳过代码有点bug,
按日期分组,找到每一天中最早的时间
那边会错误,不知道是不是 pandas 版本问题也可以在“按日期分组,找到每一天中最早的时间”的时候会有
reduction operation 'argmin' not allowed for this dtype
的问题,重装了几个版本的pandas也没用,最后在函数load_eat_data
的最后加了一行1
df['time_in_seconds'] = df['payTime'].dt.hour * 3600 + df['payTime'].dt.minute * 60 + df['payTime'].dt.second
然后把“按日期分组,找到每一天中最早的时间”下面两行中的
'time'
都改成'time_in_seconds'
就行了。