A javascript module to scrap online judge and retrieve informations.
Currently supports scraping of UVa, Codeforces, HDU and SPOJ.
npm install --save ojscraper
const ojscraper = require('ojscraper');
ojscraper.getProblemInfo({
ojname: 'uva',
problemID: '100'
})
.then(function(info){
console.log(info);
/**
* {
"platform": "uva",
"problemID": "100",
"title": "The 3n + 1 problem",
"link": "http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=18&page=show_problem&problem=36"
}
*/
})
ojscraper.getUserInfo({
ojname: 'uva',
username: 'forthright48'
})
.then(function(info){
console.log(info);
/**
* {
"platform": "uva",
"username": "forthright48",
"userID": "128671",
"solveCount": 1464,
"solveList": [100, 101 ... too many to view]
}
*/
})
Only promise is returned. Callback is not supported.
There are only two methods:
getProblemInfo()
It accepts an object as parameter. The object must have the following two fields: ojname
and problemID
. Look below for possible values of ojname
and their corresponding problemID formats.
getUserInfo()
It accepts an object as parameter. The object must have the following two fields: ojname
and username
. A list of problem Ids which have been solved by the user is returned.
ojname
Well, that's it for now.
problemID
problemID
must match the following regex:
^[A-Z0-9_]+$
^\d+[A-Z]
\d{4}
\d{4}
\d{4}
^[A-Z0-9_]+$
^\d{3,5}$
Since the site is private, you need to provide a set of credential to access any info.
ojscraper.getProblemInfo({
ojname: 'loj',
problemID: '1000',
credential: {
userId: USERID_FOR_LOGIN,
password: PASSWORD_FOR_LOGIN
}
})
You can only get userinfo from vjudge, and that too for a particular sub oj.
ojscraper.getProblemInfo({
ojname: 'loj',
problemID: '1000',
subojname: 'uva'
})
//Output: All problems from UVa that user solved in Vjudge