Luma's blog

By Luma, history, 21 month(s) ago, In English

Hello Codeforces!

I made the user script to append the form to submit on Codeforces problem pages.

Sorry, this supports only modern browsers like Chrome and Firefox.

greasyfork link : https://greasyfork.org/en/scripts/371117-cf-fast-submit

Install

Install UserScript runner like Tampermonk and Greasymonkey to your browser.

(Sorry, I couldn't make it work well with Greasymonkey.)

Then, open install link and click install.

Usage

You can use it as you can see it on the submit page's form.

Specification

  • Support contest, gym and problemset problem pages.
  • Problem selection will be auto-selected and disabled. Problem ID is calculated from URL.
  • This tool gets form from the submit page using Ajax.
  • This tool never connect the other site.
  • If we open the submit page right away after the contest starts, we can't select the problem ID (because there's no option somehow).
    But don't worry. This script automatically retry if there's no option.
  • If 30 minutes left and you submit, this script automatically re-generate the form because sometimes the token expires.
    This script will drop neither your code nor file selection.

Comment

I implemented it as not disturbing users.

If you found some technical issues, rights issues or something anxious, please let me know that.

I welcome any feedback! (You know vs.? Please share in comments!)

Disclaimer of warranty

Use of this tool is at your sole risk. In no event will I be reliable to any party for any damages of any type.

Screenshots

Links


Great. So cool.

This tool is here thanks to Codeforces.

 
 
 
 
  • Vote: I like it
  • +116
  • Vote: I do not like it

»
21 month(s) ago, # |
Rev. 3   Vote: I like it +8 Vote: I do not like it

thx for great work

»
21 month(s) ago, # |
Rev. 2   Vote: I like it +12 Vote: I do not like it

I am getting this error:

Ignoring @match pattern http*://codeforces.com/contest/*/problem/* because: Error: @match: Invalid protocol (http*:) specified.

Is it only for http?

  • »
    »
    21 month(s) ago, # ^ |
    Rev. 2   Vote: I like it 0 Vote: I do not like it

    Thanks. I fixed! Please update and check it out.

    EDIT: hmmm.... I checked using Chrome with tampermonkey, but nothing wrong with old version. Please let me know your environment. And is it fixed?

    • »
      »
      »
      21 month(s) ago, # ^ |
        Vote: I like it +8 Vote: I do not like it

      Now I could download the script but it does not work. I'm using Firefox Quantum.

      • »
        »
        »
        »
        21 month(s) ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        Sorry, I couldn't make a support.
        I confirmed that it works well with Tampermonkey and Firefox.

        sorry for inconvenience.

  • »
    »
    21 month(s) ago, # ^ |
      Vote: I like it +1 Vote: I do not like it

    Sorry for my slow debugging.

    I tried it on Firefox with Greasymonkey and confirmed that it doesn't work.

    I'm checking the way to fix it...

»
21 month(s) ago, # |
  Vote: I like it +8 Vote: I do not like it

Now I could download the script but it does not work either. I'm using Chrome73

  • »
    »
    21 month(s) ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Thanks for feedback! I use the same version with Windows.
    It's strange...
    What problem page did you open?
    How doesn't it work? (Could you see the form or not?)

    Could you tell me what dev tool says? (CTRL + SHIFT + I, open Console tab)

    Thank you.

»
21 month(s) ago, # |
  Vote: I like it 0 Vote: I do not like it

Auto comment: topic has been updated by Luma (previous revision, new revision, compare).

»
21 month(s) ago, # |
  Vote: I like it +13 Vote: I do not like it

Nippon language wakaranai

  • »
    »
    21 month(s) ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Arigatou. I fixed links.

»
21 month(s) ago, # |
  Vote: I like it 0 Vote: I do not like it

Auto comment: topic has been updated by Luma (previous revision, new revision, compare).

»
21 month(s) ago, # |
Rev. 3   Vote: I like it +8 Vote: I do not like it

Yesterday(4.13),When I took part in edu Contest,it couldn't work that jumped into submit page.But it can work out of Contest.

  • »
    »
    21 month(s) ago, # ^ |
    Rev. 2   Vote: I like it +3 Vote: I do not like it

    Thanks for a comment.

    Hmmm, the old version (v1.1) was working well... Sorry, but I didn't test new version on the running contest. I'll try to test it on some contest.

    EDIT: I tested on virtual contest, but it works well.

    Sorry, but I couldn't test until the real contest is running.

    • »
      »
      »
      21 month(s) ago, # ^ |
      Rev. 3   Vote: I like it 0 Vote: I do not like it

      Maybe Its my computer's matter.

      • »
        »
        »
        »
        21 month(s) ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        Some participants report similar issues.

        And now, I recall that I must write additional code to support ECR. (Seeing git log, wow, there's answer.)

        I'm fixing...

      • »
        »
        »
        »
        21 month(s) ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        Fixing has been done.

        If you use v1.1, please update.

    • »
      »
      »
      21 month(s) ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      When I made (thanx to CountZero) tool like this the problem during real contest was longer load of codeforces pages — I had to increase some delays between transitions between pages, inserting of code and submit and so on. But even with these delays submit is much faster then manually

»
21 month(s) ago, # |
  Vote: I like it +5 Vote: I do not like it

Really Impressive

»
21 month(s) ago, # |
  Vote: I like it +8 Vote: I do not like it

It's a good one!!

»
21 month(s) ago, # |
  Vote: I like it +12 Vote: I do not like it

Sorry, there was the bug that in ECR this script doesn't generate complete form.

Now, I fixed for the ECR.

AND IF THERE'S UNEXPECTED THROWN ERROR, THIS TOOL WILL REMOVE THE INCOMPLETE FORM FOR RELIABILITY.

Thank you for your feedback! Enjoy coding!

»
21 month(s) ago, # |
  Vote: I like it +8 Vote: I do not like it

Not working when questions are of like C1, C2!
here

  • »
    »
    21 month(s) ago, # ^ |
      Vote: I like it +3 Vote: I do not like it

    Oh... This is too bad. Thanks.

    I must do fix soon.

    • »
      »
      »
      21 month(s) ago, # ^ |
        Vote: I like it +8 Vote: I do not like it

      Thanks for making such an awesome tool ♥
      Must have cf tool after cf-predictor

»
21 month(s) ago, # |
Rev. 2   Vote: I like it +6 Vote: I do not like it

Version 2.4 Update Notice

Very sorry for the unexpected behavior in the problem like "C1", "C2".

I apologize that this tool may have annoyed some participants.

That was fixed.

You may have seen the many generated forms.

Deleting the form on error was not complete.

This is also fixed.

Maybe, some saw the form generates many forms right away after the contest.

Above behavior caused this. And this was also fixed.

Thank you for using this tool and commenting.

EDIT : Sorry, I screwed up. I updated on the contest running. I'll keep in mind not to annoy participants.

»
15 months ago, # |
  Vote: I like it +3 Vote: I do not like it

Found a bug! I had submitted a code in java 11. But when I am going to a problem fast submit is not working. But after switching back to java 1.8 from submit page, fast submit works. I guess java 11 is new and some mapping are missing or something. There are errors in console from fast submit also!

  • »
    »
    15 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    To update it by hand: add an entry to extensionMap (java 11 is number 60)

    To make the code work regardless of extensionMap: Getting the mapping programmatically from the submit form is possible, but requires parsing JavaScript. Without it, it's still possible to use regex: (assumes the array is represented in the source code in a JSON-compatible format)

    const raw = await $.ajax(submitURL /* ... see original code */)
    const x=raw.substr(raw.match('(?<=extensionMap =)').index);
    let extensionMap
    try{
        extensionMap = JSON.parse(x)
    }catch(e){ 
        extensionMap = JSON.parse(x.substr(0,e.toString().match(/position (\d+)/)[1]))
    }
    
»
10 months ago, # |
  Vote: I like it +2 Vote: I do not like it

Hi Luma! This tool has stopped working for me recently! Is there any fix/solution? Thanks!

  • »
    »
    9 months ago, # ^ |
    Rev. 2   Vote: I like it +13 Vote: I do not like it

    You can edit the script yourself, in extensionMap, add 61: 'program.cpp' (61 is the id of C++64, which was recently added)

    By the way, huge thanks to the author, it's a very convenient tool!

    • »
      »
      »
      9 months ago, # ^ |
        Vote: I like it +10 Vote: I do not like it

      Thank you so much, hugopm! It works for me now!

      Agreed, great tool by Luma, many thanks, I have been using it for a very long time!

»
9 months ago, # |
  Vote: I like it 0 Vote: I do not like it

When I try to install using the link, a file named cf-append-form.user.js opens on firefox and on chrome the same file is downloaded. What is the fix for this ?

  • »
    »
    9 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Have you installed tampermonkey ? Did you tried another scripts and how did you got?

    BTW, according above comments, this tool is not working now.

    Thank you for all your patience. I will try to fix the problem and improve this.

    Give me a little more moment to fix this tool.

    • »
      »
      »
      9 months ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      Hi. After installing tampermonkey, I could install it. It works :), atleast in practice mode, can't say about contest. Great tool. Thanks :) .

»
8 months ago, # |
  Vote: I like it +4 Vote: I do not like it

Now I released new version 2.6

I just updated for new added languages. (I haven't tried these languages yet... )

Sorry for being too late to update. It's ok if you are using the other owner's ( or your own ) version.

I'm planning to change to store the language information in local ( called localStorage ) and automatically merge them.

And more, I changed the parameters used judging when to retry to generate the form. It may have been a little heavy... ( 300ms interval try and up to 400 times ) Now I updated it to 1000ms interval and up to 10 times.

If you don't like that, please edit the parameters ( you can find them soon ) by yourself ( at your own risk, of course )

Thanks. Enjoy competing ! I'm going to participate next Kotlin contest (maybe).

»
8 months ago, # |
  Vote: I like it +4 Vote: I do not like it

Luma can you make it so that once you press the submit button, it will automatically open a new "status" page on codeforces. Whenever I press the submit button, the problem gets redirected to the status page. I want it on a different page so that I can still read the problem. Maybe make it an option or smth like that.

  • »
    »
    8 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Seems nice! Hm, can't prevent redirecting to "status".

    Why don't you opening new problem window ?

    1. window.open(url) to open new tab.
    2. location.href that is URL of that page.
    3. You can see the function preSubmit () in the script.

    Then prepend window.open(location.href) to preSubmit() function.

    I hope this help you.

    • »
      »
      »
      8 months ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      Where do I do this?

      • »
        »
        »
        »
        8 months ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        Click Tampermonkey extension icon and ...

      • »
        »
        »
        »
        8 months ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        Ah, little buggy.

        Ok, I will implement.

      • »
        »
        »
        »
        8 months ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        Published new version.

        First, please update to 2.7 visiting Greasyfork.

        Go dashboard as I described the comment before. And enable the feature by editing this line to true (and of course save it).

        For who do not want this: Nothing to do. default behavior has been not changed.

»
4 months ago, # |
Rev. 4   Vote: I like it 0 Vote: I do not like it

Luma Really Lovely tool man , exactly what I was looking for . However I just want a little modification in my side that I dont want it to get auto focused on the submission and instead let me have the page as it is, would be much of the help from ur side !

»
2 months ago, # |
  Vote: I like it +6 Vote: I do not like it

Hi Luma, userscript doesn't work for site in russian at all.

»
2 months ago, # |
  Vote: I like it +6 Vote: I do not like it

it would be great if it does in problem set too