{"id":18637476,"url":"https://github.com/ahmed-dinar/codeforces-api-node","last_synced_at":"2025-04-11T09:33:12.428Z","repository":{"id":51330882,"uuid":"69594485","full_name":"ahmed-dinar/codeforces-api-node","owner":"ahmed-dinar","description":"Codeforces API Client Library for Node.js","archived":false,"fork":false,"pushed_at":"2023-10-27T14:01:02.000Z","size":24,"stargazers_count":3,"open_issues_count":4,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-03-25T12:12:44.772Z","etag":null,"topics":["codeforces","codeforces-api"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ahmed-dinar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-09-29T18:10:42.000Z","updated_at":"2024-11-02T18:40:18.000Z","dependencies_parsed_at":"2024-11-07T05:37:18.163Z","dependency_job_id":"3125d6c2-6779-4b1a-9581-6ae9c2028429","html_url":"https://github.com/ahmed-dinar/codeforces-api-node","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahmed-dinar%2Fcodeforces-api-node","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahmed-dinar%2Fcodeforces-api-node/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahmed-dinar%2Fcodeforces-api-node/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahmed-dinar%2Fcodeforces-api-node/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ahmed-dinar","download_url":"https://codeload.github.com/ahmed-dinar/codeforces-api-node/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248281376,"owners_count":21077423,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["codeforces","codeforces-api"],"created_at":"2024-11-07T05:36:14.275Z","updated_at":"2025-04-11T09:33:07.413Z","avatar_url":"https://github.com/ahmed-dinar.png","language":"JavaScript","readme":"# NodeJS Client Library for [Codeforces API](http://codeforces.com/api/help)\n\n[![Build Status](https://travis-ci.org/ahmed-dinar/codeforces-api-node.svg?branch=master)](https://travis-ci.org/ahmed-dinar/codeforces-api-node)\n[![Coverage Status](https://coveralls.io/repos/github/ahmed-dinar/codeforces-api-node/badge.svg?branch=master)](https://coveralls.io/github/ahmed-dinar/codeforces-api-node?branch=master)\n[![npm version](https://badge.fury.io/js/codeforces-api.svg)](https://badge.fury.io/js/codeforces-api)\n[![Dependency Status](https://david-dm.org/ahmed-dinar/codeforces-api-node.svg)](https://david-dm.org/ahmed-dinar/codeforces-api-node)\n\ncodeforces-api-node is a simple NodeJS library for Codeforces Api with streaming support.\n\n## Install\n  ```\n  $ npm install codeforces-api\n  ```\n\n## Usage\n\ncodeforces-api-node supports both ES5 and ES6.\n\n#### Basic\n\n```javascript\n\n//ES5\nvar Codeforces = require('codeforces-api');\n\n//ES2015\nimport Codeforces from 'codeforces-api';\n\n//set API keys for authentication\nCodeforces.setApis('your_codeforces_api_key', 'your_codeforces_api_secret');\n\n\nCodeforces.method( parameters , callback );\n```\n\n#### Usage\n\n```javascript\nCodeforces.user.rating({ handle: 'user_handle' } , function (err, data) {\n\n    if (err) {\n        //handle error and return\n    }\n\n    //use data\n});\n```\n\n\n\n### Methods \u0026 Parameters\n\n\u003eFull description of the API can be found on : [Official API Doc](http://codeforces.com/api/help)\n\n| Method                   | Parameters                                                   |  Description |\n| -----------------------  | ------------------------------------------------------------ |:-------------------------------------------------------------------:|\n| blogEntry.comments       | *blogEntryId                                                 |  [More](http://codeforces.com/api/help/methods#blogEntry.comments)  |\n| blogEntry.view           | *blogEntryId                                                 |  [More](http://codeforces.com/api/help/methods#blogEntry.view)  |\n| contest.hacks            | contestId                                                    |  [More](http://codeforces.com/api/help/methods#contest.hacks)  |\n| contest.list             | gym                                                          |  [More](http://codeforces.com/api/help/methods#contest.list)  |\n| contest.ratingChanges    | *contestId                                                   |  [More](http://codeforces.com/api/help/methods#contest.ratingChanges)  |\n| contest.standings        | *contestId , from , count , handles ,  room , showUnofficial |  [More](http://codeforces.com/api/help/methods#contest.standings)  |\n| contest.status           | *contestId , handle , from , count                           |  [More](http://codeforces.com/api/help/methods#contest.status)  |\n| problemset.problems      | tags                                                         |  [More](http://codeforces.com/api/help/methods#problemset.problems )  |\n| problemset.recentStatus  | *count                                                       |  [More](http://codeforces.com/api/help/methods#problemset.recentStatus)  |\n| recentActions            | *maxCount                                                    |  [More](http://codeforces.com/api/help/methods#recentActions)  |\n| user.blogEntries         | *handle                                                      |  [More](http://codeforces.com/api/help/methods#user.blogEntries)  |\n| user.friends             | onlyOnline                                                   |  [More](http://codeforces.com/api/help/methods#user.friends)  |\n| user.info                | *handles                                                     |  [More](http://codeforces.com/api/help/methods#user.info)  |\n| user.ratedList           | activeOnly                                                   |  [More](http://codeforces.com/api/help/methods#user.ratedList)  |\n| user.rating              | *handle                                                      |  [More](http://codeforces.com/api/help/methods#user.rating)  |\n| user.status              | *handle , from , count                                       |  [More](http://codeforces.com/api/help/methods#user.status)  |\n\u003e *required parameters\n\n#### Note\n**handles** and **tags** can be multiple.There are two different ways to set:\n  1. Semicilon-separated string:\n\n  ```javascript\n  tags: 'greedy;dp;graphs'\n  ```\n\n  2. As array:\n\n  ```javascript\n  tags: ['greedy','dp','graphs']\n  ```\n\n\n## Authorization\n\n Although most of the method of the API supports anonymously request, ```codeforces-api-node``` does not allow anonymous request yet.To access API data, must set API and SECRET key before calling methods.To generate API and SECRET KEY visit: [API Settings](http://codeforces.com/settings/api)\n\n\n## Return Data\n\n  All data return in JSON format.For full description of data format visit:  [Return Objects](http://codeforces.com/api/help/objects)\n\n\n\n## Streaming\n\n\u003e\n\u003e This feature and example from npm **request** package. For more have a look : [Request Package Doc](https://github.com/request/request)\n\u003e\n\n\nYou can stream responses to a file stream.When json data is huge, you may need this feature.\n\n```javascript\nCodeforces.user.ratedList( parameters, callback )\n               .pipe( fs.createWriteStream('./rateedList.json') );\n\n//version \u003e= 1.0.2 (with or without callback)\nCodeforces.user.ratedList( parameters )\n               .pipe( fs.createWriteStream('./ratedList.json') );\n```\n\nAlso emits response events.\n\n```javascript\nCodeforces.user.ratedList( parameters, function(err, data){\n\n    if(err){ //request error  }\n\n    //data also available here\n\n}).on('data', function(data) {\n    // decompressed data as it is received\n    console.log('decoded chunk: ' + data)\n})\n.on('response', function(response) {\n\n    // unmodified http.IncomingMessage object\n    response.on('data', function(data) {\n        // compressed data as it is received\n        console.log('received ' + data.length + ' bytes of compressed data')\n    });\n\n}).pipe( fs.createWriteStream('./ratedList.json') );\n```\n\n## Contributing\n  Everyone wellcome!\n  * Create an issue \u003e [Fork](https://github.com/ahmed-dinar/codeforces-api-node/fork) \u003e Create own branch \u003e Commit changes \u003e Push the branch \u003e Creat pull request\n\n\n## Test\n\n  Before running test, must set API and SECRET key in environment variable.Keys are:\n  ```javascript\n CFK = API Key\n CFS = API Secret\n  ```\n  After setting keys, simply run\n  ```javascript\n  npm test\n  ```\n\n## License\n\n##### MIT © [Ahmed Dinar](https://ahmeddinar.com/)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahmed-dinar%2Fcodeforces-api-node","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fahmed-dinar%2Fcodeforces-api-node","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahmed-dinar%2Fcodeforces-api-node/lists"}