Hello!
I am introducing a new tool for competitive programming—submitter. It does just that, submits your solution to supported online judges and displays results, all (mostly) from the comfort of your command line. I've completely rewritten it to get rid of using Selenium.
Prerequisites
You would need rust
Installation
cargo install --git https://github.com/EgorKulikov/submitter
Usage
submitter <task url> <language> <path to solution>
Supported sites
At the moment the following is supported:
- Codeforces (you need to submit with opened window, but then status is displayed in console)
- AtCoder (you need to submit with opened window, but then status is displayed in console)
- Luogu (you need to submit with opened window, but then status is displayed in console)
- Codechef
- Yandex Contest
- Universal Cup/UOJ
- Toph.co
- EOlymp
- Kattis








Over-engineering at its finest
If you know how to get around (non-checkbox) Cloudflare another way, I am all ears
https://mirror.codeforces.com/
I am afraid it also does goes through some cloudflare checks, but thanks, it seems to has less load and hence not reverting to checkbox as frequently
It seems that mirror.codeforces.com doesn't have Cloudflare enabled (ref).
Maybe, but they do some kind of browser checking anyway. Namely, I am getting a page where the body starts with
Check out this blog: Bypassing Cloudflare's "bot fight mode"
Well, that's nice, but not something I want to spend my time on
Is it really more convenient to paste url to terminal than to submit via website?
It is if you use other tools in tandem
Or bat file, which takes problem id as input and generates corresponding url. I did that with oj when I used that for atcoder submits while I still used c++
By the way, I forgot to write why I wanted such a tool. I usually use 2 screens for competitive programming, one for browser and one for ide. I do not want to shuffle browsers, so I can keep an eye on the results of the submit while reading the next problem, so I much prefer for the result of the submit to be shown in terminal, which is part of my ide layout.
cool
why would i use the tool over submitting myself?
I already covered my own motivation for using such tool here
That's really cool, especially the fact that you did this for all these different websites. Thank you so much!!
Whoever uses it, be careful: it is much easier to accidentally submit something you didn't want to with this thing than without (for example, by pressing
<Up> <Up> <Up> <Up> <Up> <Return>in the terminal with an incorrect number of<Up>s)will it work during the live contest??
It did during Rayan
script didnt work from the script you wrote these, so i downvoted, sry. <(_ _)>
ideone is working fine.
Thanks
Support for toph.co is added
New version that is much better about dealing with various errors (compilation errors, you already submitted this code, contest ended, source limit exceeded, etc.). Also a link to the submission is now printed to terminal for convenience.
When the result is compilation error, it is not showing up on terminal. Terminal is stuck at
Submitting. What could be the reason and how to resolve it?For which site? And make sure you've updated the tool
for codeforces, command
submitter https://mirror.codeforces.com/contest/2039/problem/C2 c++ d:/B.py. B.py contains random c++ code which would not compile (submission).I fixed it and pushed fix to github, thank you
The tool is updated, I installed it half an hour ago.
New version:
Support for luogu is removed due to cloudflare captcha during submission process
i can't see what exactly you are currently using, but cp booster has something similar using playwright. It also faces the same issue with capta, except that it faces it every time :(
however, these are some ways to bypass capta using playwright https://www.reddit.com/r/learnpython/comments/1hxs4lf/bypassing_cloudflare_when_using_python_playwright/ https://www.zenrows.com/blog/playwright-cloudflare-bypass
the second link might be outdated as cloudfare doesn't really rely on capta and can detect you trying to use a botting browser as in the case of cpbooster.
This is all an uphill battle unless maybe if you can make a playwright code that uses the user's current browser, the user should be able to solve any capta and make it work.
But again as cloudfare relies on a lot more than just capta, maybe none of this works
CF part is currently dead after mirror was disabled. I do not think I will try to do workarounds atm. Instead I wrote tool that prints results of your submits to console with similar functionality using CF api — the only difference is you will have to submit through web interface. I wrote above about my motivation for submitting tool, and that watches tool fits that motivation. I will publish that shortly (and will update submitter to remove cf support)
https://github.com/agrawal-d/cph-submit
this still works with firefox unfortunately this requires to use cp helper on vscode, but you could do something similar and run it via command line
Just read your mission, it was a little different than what I was expecting. Looking forward to your tool.
When it comes to Rust are there any benefits of using this submitter over the rust-competitive-helper builtin submitter.
rch submitter uses submitter for several sites, so no
Auto comment: topic has been updated by Egor (previous revision, new revision, compare).
is there a function or similar tool to grab cf testcases?
without manually clicking "copy", so I don't lose aura
For that you need other tools, like this: https://github.com/jmerle/competitive-companion
If you have competitive companion, neovim with the competitest plugin and this it will work pretty nicely, you can set up a keymap that finds the url itself, I’m gonna give it a try right now (not that it will actually help to be a better programmer, but it’s nice)
Auto comment: topic has been updated by Egor (previous revision, new revision, compare).
I've added atcoder support, similar to how codeforces is done
Auto comment: topic has been updated by Egor (previous revision, new revision, compare).
Added atcoder-like treatment for luogu. Also disable qoj, as it was not actually working due to cloudflare