ojscraper v1.12.0
OJScraper
A javascript module to scrap online judge and retrieve informations.
Currently supports scraping of UVa, Codeforces, HDU and SPOJ.
Install
npm install --save ojscraper
Use
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.
Methods
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.
Values of ojname
- CodeChef: 'cc'
 - Codeforces: 'cf'
 - HDU: 'hdu'
 - LOJ: 'loj'
 - POJ: 'poj'
 - SPOJ: 'spoj'
 - Uva Online Judge: 'uva'
 - Vjudge: 'vjudge'
 - CSAcademy: 'csa'
 - AtCoder: 'atc'
 
Well, that's it for now.
Formats of problemID
problemID must match the following regex:
- cc: 
^[A-Z0-9_]+$ - cf: 
^\d+[A-Z] - hdu: 
\d{4} - loj: 
\d{4} - poj: 
\d{4} - spoj: 
^[A-Z0-9_]+$ - uva: 
^\d{3,5}$ 
Special Cases
LightOJ
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
  }
})VJudge
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 VjudgeTODO
- Make it compatible for browsers
- CORS issue
 
 
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago