Unofficial Vjudge api library for nodejs.
$ npm install vjudge-api
//ES5 var Vjudge = require('vjudge-api'); //ES2015 import Vjudge from 'vjudge-api';
Here's some api level functionalities with example.
Returns all the verdict expressions used in Vjudge.
console.log( Vjudge.verdicts() ); // result //{ // "All": 0, // "Accepted": 1, // "Presentation Error": 2, // "Wrong Answer": 3, // "Time Limit Exceed": 4, // "Memory Limit Exceed": 5, // "Output Limit Exceed": 6, // "Runtime Error": 7, // "Compile Error": 8, // "Unknown Error": 9, // "Submit Error": 10, // "Queuing && Judging": 11 //}
Returns all the Online Judges supported by Vjudge system along with their language supports(in json format). It's an asyncronus function.
Vjudge.remote_ojs().then(result => console.log(result)).catch(err => console.error(err)); // result //{ // SGU: { name: 'SGU', languages: {} }, // FZU: { // name: 'FZU', // languages: { // '0': 'GNU C++', // '1': 'GNU C', // '2': 'Pascal', // '3': 'Java', // '4': 'Visual C++', // '5': 'Visual C' // } // }, // UVA: { // name: 'UVA', // languages: { // '1': 'ANSI C 5.3.0', // '2': 'JAVA 1.8.0', // '3': 'C++ 5.3.0', // '4': 'PASCAL 3.0.0', // '5': 'C++11 5.3.0', // '6': 'PYTH3 3.5.1' // } // }, // // Tons of other informations like this :3 //}
Returns all the accepted and failed solution records for one user (problem-numbers along with online judges). It's an asyncronus function.
const options = { un: "rahathossain690" } Vjudge.solve_count(options).then(result => console.log(result)).catch(err => console.error(err)); // result //{ // acRecords: { // AtCoder: [ 'abc084_d', 'arc099_a', 'soundhound2018_summer_qual_b' ], // CodeChef: [ 'PRGIFT', 'DRAGNXOR' ], // CodeForces: [ // '58A', '21C', '66B', '66D', // '80A', '47A', '47B', '68A', // '68B', '11A', '50B', '131C', // '137A', '159A', '200B', '84B', // '289A', '315A', '376A', '379A', // '471A', '293A', '147A', '509A', // '575D', '805A', '862A', '926A', // '962C', '1006B', '1182B' // ], // // like this // }, // failRecords: { // AtCoder: [ 'arc100_a' ], // CodeForces: [ '429D', '862B', '1187C' ], // // like this // } //}
Returns all informations about problems, Supports querying, Asynchronus function.
const options = { start: 0, // Start position from the problem-list, positive integer, default: 0 length: 1, // Length of the output list, positive integer with maximum 100, default: 20 sortDir: 'desc', // 'desc' or 'asc', default: 'desc' sortCol: 5, // Basis column for sorting, default: 5 OJId: 'LightOJ', // Online judges, (List can be found from remote_ojs()), default: 'All' probNum: '1234', // Problem number in an online judge, default: '' (no specific problem) title: '', // Default: '' source: '', // Default: '' category: '' // Default: '' } Vjudge.problems(options).then(result => console.log(result)).catch(err => console.error(err)); // result // { // data: [ // { // originOJ: 'LightOJ', // originProb: '1234', // allowSubmit: true, // id: 26945, // source: '', // title: 'Harmonic Number', // triggerTime: 1602909550000, // isFav: 0, // status: 0 // } // ], // recordsTotal: 9999999, // recordsFiltered: 9999999, // draw: 1 // }
Returns submission status informations, supports querying. Asynchronus function.
const options = { start: 0, // Start position from the problem-list, positive integer, default: 0 length: 1, // Length of the output list, positive integer with maximum 20, default: 20 un: 'rahathossain690', // Username of any user, default: '' (no specific user) OJId: 'All', // Online judges, (List can be found from remote_ojs()), default: 'All' probNum: '', // Problem number in an online judge, default: '' (no specific problem) res: 1, // Vjudge verdict expression, default: 0 (verdicts() function might help) language: '', // Language of the submission, default: '' onlyFollowee: 'true' // Default: true } Vjudge.status(options).then(result => console.log(result)).catch(err => console.error(error)) // { // data: [ // { // memory: 2092, // access: 0, // statusType: 0, // runtime: 2, // language: 'C++', // statusCanonical: 'AC', // userName: 'rahathossain690', // userId: 227541, // languageCanonical: 'CPP', // contestId: 132789, // uDebugUrl: 'https://udebug.com/LOJ/1060', // contestNum: 'O', // processing: false, // runId: 25231746, // time: 1586506966000, // oj: 'LightOJ', // problemId: 26777, // sourceLength: 1096, // probNum: '1060', // status: 'Accepted' // } // ], // recordsTotal: 9999999, // recordsFiltered: 9999999, // draw: 1 // }
Returns submission status informations in contests, supports querying. Asynchronus function.
const options = { start: 0, // Start position from the problem-list, positive integer, default: 0 length: 1, // Length of the output list, positive integer with maximum 20, default: 20 un: 'rahathossain690', // Username of any user, default: '' (no specific user) res: 1, // Vjudge verdict expression, default: 0 (verdicts() function might help) num: '-', // Problem number in the contest (As A, B, C,...). Default: '-' (all problems) language: '', // Language of the submission, default: '' inContest: true, // Default: true contestId: 353950 // Contest-id can be found in contest links, required. } Vjudge.contest_status(options).then(result => console.log(result)).catch(err => console.error(error)) // result // { // data: [ // { // memory: 236, // access: 0, // statusType: 0, // runtime: 92, // language: 'GNU G++11 5.1.0', // statusCanonical: 'AC', // userName: 'rahathossain690', // userId: 227541, // languageCanonical: 'CPP', // contestId: 353950, // contestNum: 'G', // processing: false, // runId: 23858026, // time: 1580125710000, // problemId: 27808, // sourceLength: 969, // status: 'Accepted' // } // ], // recordsTotal: 9999999, // recordsFiltered: 9999999, // draw: 1 // }
Returns run-time informations about a particular submission. Asynchronus function.
const options = { runId: 23858026 // Run-id can be found from status/contest-status, required. } Vjudge.run_info(options).then(result => console.log(result)).catch(err => console.error(error)) // result // { // memory: 236, // statusType: 0, // author: 'rahathossain690', // length: 969, // runtime: 92, // language: 'GNU G++11 5.1.0', // statusCanonical: 'AC', // authorId: 227541, // languageCanonical: 'CPP', // codeAccessInfo: 'This code is not shared', // contestId: 353950, // submitTime: 1580125710000, // isOpen: 0, // contestNum: 'G', // processing: false, // runId: 23858026, // oj: 'CodeForces', // remoteRunId: '69611972', // probNum: '159A', // status: 'Accepted' // }
Any kind of Contribution is highly welcomed.
To contribute: Create an issue > Fork > Create own branch > Commit changes > Push the branch > Create pull request
- Contest time ranklist.
This project is inspired from vlawer.