Codeforces Better!🎈
Codeforces界面汉化、黑暗模式支持、题目翻译、markdown视图、一键复制题目、跳转到洛谷、评论区分页、ClistRating分显示、榜单重新着色
写在前面:反馈须知
如遇问题,请先阅读下方的 #常见问题 说明。如果没有得到解决,请前往 反馈页 或者 Github issues 反馈。
请提供关于问题的详细描述,比如:链接,截图,期望的结果、实际的结果,复现方式……
此外还欢迎友善的讨论以及功能建议,但维护脚本以及提供帮助并不是作者的义务,感谢您的理解。
功能
提示:脚本的部分功能提供了配置项,您可以点击 整个页面右上角 的 CodeforcesBetter设置
按钮打开设置面板。
界面汉化
将网站的主要元素汉化为中文(可关闭)
题目翻译
在题目、blog、评论等的右上角添加翻译按钮,一键即可翻译为中文,同时确保不破坏Latex公式
在此基础上,脚本提供了三种翻译模式:
- 普通模式:会一次性翻译整个区域的内容
- 分段模式:会对区域内的每一个
<p/>
和 <i/>
标签依次进行翻译 - 选段模式:您可以自由点选页面上的任何
<p/>
和 <i/>
标签进行翻译
您可以在右上角的 CodeforcesBetter设置
面板中选择您想使用的翻译服务(默认为DeepL)以及切换脚本的工作模式。
注意:分段/选段模式会产生如下问题:
- 使得翻译接口无法知晓整个文本的上下文信息,会降低翻译质量。
- 会有部分内容不会被翻译/不能被选中,因为它们不是<p/>或<i/>元素
脚本提供了如下翻译接口可供选择:(默认为DeepL)
| KEY | 翻译质量 | 可靠性 | 字符数上限 | 耗时 |
---|
DeepL翻译(✨推荐) | 不需要 | ⭐️⭐️⭐️⭐️ | 部分地区可能无法访问或较慢 | 5000 | 快 |
讯飞听见翻译 | 不需要 | ⭐️⭐️⭐️ | 通常可靠 | 2000 | 快 |
有道翻译 | 不需要 | ⭐️⭐️ | 通常可靠 | 600 | 快 |
Google翻译 | 不需要 | ⭐️⭐️⭐️ | 需要当前网络能顺利访问Google | 5000 | 快 |
彩云翻译 | 不需要 | ⭐️⭐️ | 通常可靠 | 5000 | 快 |
使用ChatGPT翻译(✨推荐) | 需要API Key | ⭐️⭐️⭐️⭐️⭐️ | 取决于服务商质量以及 OpenAI 的拥挤程度 | 取决于模型 | 较慢 |
提示:右键翻译按钮,可以快速切换翻译服务哦
ClistRating分
获取 clist.by 网站的 Rating 分数据,并展示
注意,不同页面工作所需要的凭证有所不同:
- 对于比赛问题集页(contest),需要浏览器中 clist.by 网站的登录(不可用) cookie 有效,或者在设置面板中填写api key
- 对于题目页(problem)和题单页(problemset),需要浏览器中 clist.by 的登录(不可用) cookie 有效
脚本不获取 clist.by 的具体 cookie ,cookie 信息由浏览器发送请求时自动携带,cookie 有效性通过尝试请求所返回的状态码判断
其他功能
部分功能可在右上角的 CodeforcesBetter设置
面板中更改/开关
- 在题目、blog、回复等的右上角添加
MrakDown视图
按钮以及 复制
按钮 - 让 Codeforces 支持黑暗模式,默认跟随系统
- 展开折叠块,自动展开所有的折叠块
- 洛谷跳转,一键跳转到该题在洛谷对应的页面
- 评论区分页,支持翻页、跳转、可选择每页显示的主楼数
- 渲染优化,为折叠块元素添加渲染限制(contain: layout style;)
- 榜单重新着色,对于采用 Codeforces 赛制的比赛的榜单,按照“得分/总分”所在的范围为分数重新渐变着色
兼容性
浏览器
| 支持 | 最低版本 |
---|
Chrome | 支持 | 96 |
Edge | 支持 | 96 |
国产Chromium套壳 | 基本兼容,但可能出现意外的错误 | Chromium 内核版本≥96 |
FireFox(包括移动端) | 支持 | 103 |
Safari | 不支持 | \ |
脚本管理器
仅在 Tampermonkey(篡改猴)脚本管理器中进行测试,不保证在 Greasemonkey,Violentmonkey,ScriptCat 等中的兼容性
其他插件
与主流CF相关插件不存在兼容性问题,如果您遇到了兼容性问题,欢迎反馈。
镜像站
支持官方轻量站 m1 / m2 / m3 、非官方镜像站 https://codeforc.es
常见问题
Q. 更新错误?
A. 由于 Greasy Fork镜像 平台的原因,当新版本刚发布时,可能会出现实际更新/安装的却是上一个版本的情况,
通常您只需要稍等几分钟,然后再次前往更新/安装即可。
您也可以将鼠标移动到脚本的更新提示框中的红色问号上,然后点击弹出信息底部的 “暂不更新” 按钮。
Q. 一直显示加载中?
A. 请开启设置面板中的 ”兼容选项-不等待页面资源加载“ 选项
Q. 使用 DeepL 翻译报错 Too many requests ?
A. 这通常是因为您短时间内频繁翻译,或者一次性翻译了超过5000字符的文本导致的,DeepL对翻译字数和频率是有限制的,
这是暂时的,一段时间后就恢复正常了 Q. 使用 DeepL 翻译报错 undefind 或一直显示翻译中?
Q. 翻译结果中一些公式显示为 {xx} / [xx] / 【xx】?
A. 在使用普通翻译接口(DeepL/有道/google)进行翻译时,受脚本的实现方式所限,可能会出现{xx}/[xx]/【xx】
脚本对公式的处理方式
为了保护LaTeX公式在翻译时不被破坏,脚本会先取出所有的LaTeX公式,并使用替换符{xx}/[xx]/【xx】来占位,
由于这些替换符大概率不会在翻译的过程中遭到破坏,因此可以在翻译后再根据替换符还原回LaTeX公式。
这种实现方式能如期工作的前提是替换符不被破坏,这在绝大多数情况下都是没有问题的,
但有时翻译服务会破坏替换符 ,比如 【23】 变成了 【23 / 23】 / [23]/ 【23 】/ 23 】,这些情况下脚本会通过一定的正则规则进行还原,使其仍然可以如期工作
但如果翻译服务还破坏了更多的内容,产生了歧义,比如翻译服务将【2】 313 变成了 【2312,这时就无法还原了,
对于各个翻译服务,不同的替换符本身遭到破坏的概率有所不同,您可以在右上角的设置面板中选择不同的替换符,
经过测试,通常 {}
表现的效果更好,因此这也是脚本默认使用的替换符
提示:
在使用 ChatGPT 进行翻译时不会存在这个问题,因为可以通过提示词直接告诉 ChatGPT “保持其中的LaTeX公式不翻译”,
聪明的 ChatGPT 可以很好的遵守这一点,这也是脚本推荐的翻译方式。
Q. 如何使用 ChatGPT 翻译?
A. 如果您可以直接访问 OpenAI 的接口,并且拥有账号,那么非常棒,您只需要选中 “使用ChatGPT翻译(API)”,然后点击下方的 “添加” 按钮新建一个配置并填写即可。
此外,您也可以购买 api 代理服务来使用 ChatGPT,下表收集了一些 api 服务商,您可以选择使用
免责:
作者仅为收集分享,没有获得任何收益,亦不保证上述平台的稳定性,平台的任何行为均与作者无关。
建议小额充值,用完再充,这些服务商可能会跑路
如果您使用的是 api 代理服务商 提供的服务,配置中的 KEY 应该填写 api代理服务商提供的 key,
此外,您还需要在配置中额外填写 Proxy API,
Proxy API 需要填写完整的地址,这里以 CloseAI 为例,其提供了API Base:https://api.closeai-proxy.xyz
那么 Proxy API 后面应该填写的就是 https://api.closeai-proxy.xyz/v1/chat/completions
,
注意:由于您指定了自定义的API,Tampermonkey会对您的跨域请求进行警告,请自行点击授权 贡献代码
欢迎贡献代码,请前往 Github仓库 创建PR
感谢
感谢你们,0rz