ecf
v1.0.11
Published
A node-JS version of the English Chess Federation (ECF) grading database. Works by scraping the webpages generated (so you don't have to!), until such time they choose to build a proper API.
Downloads
119
Maintainers
Readme
ECF Query Database
Scrapes the ECF Grading Database for results
Returns a promise (that needs to be awaited or .then-ed) to user data.
Comes with typescript support.
Dependencies
Installation
npm install ecf
(includes its own index.d.ts file)
const ECF = require('ecf');
Usage
ECF.endpointName(queryParam, parse?)
- Call any endpoint in this package by simply appending it to the package name as a method.
- Each endpoint takes a query parameter, be it an ID, a search parameter, or a name. Use it as the first argument to the function.
- Each endpoint takes a 'parse' Boolean as the second parameter. The library supports parsing the grabbed data from the ECF website into a nice, human-readable, format (which can be understood by trying each one). Set
parse
astrue
(default) to use this mode, otherwise set asfalse
to just get the raw table rows.
Endpoints
ECF.profile()
- Gets a user's profile by ID
- For a known user with a specific ECF ID, a user's data can be generated by:
const ECF = require('ecf'); (async () => { console.log(await ECF.profile('170263E')); //returns Gawain Jones' ECF profile as an object })();
ECF.club()
- Gets a user's profile using a club ID
const ECF = require('ecf'); (async () => { console.log(await ECF.profile('1100')); //returns users from the Oxford University Chess Club })();
ECF.searchUsers()
- Generates a list of possible users matching a search query.
- List is in array form, with each element being a matching user.
- Takes a query parameter of a string (name) or an 'AdvancedSearch' parameter - an object with possible fields 'firstName', 'lastName', 'middleName', 'id', 'isMember', 'sex', 'club'
const ECF = require('ecf'); (async () => { console.log(await ECF.searchUsers('jones')); //returns a list of users with the surname Jones console.log(await ECF.searchUsers('jones, gawain')); //returns a list of users with the surname Jones and first letter 'G' console.log(await ECF.searchUsers({ firstName: 'Gawain', lastName: 'Jones' })); //returns a list of users with the surname Jones and first letter 'G' })();
ECF.searchClubs()
- Generates a list of clubs across the country which have a name beginning with the specified query string
- Takes a single string argument
const ECF = require('ecf'); (async () => { console.log(await ECF.searchClubs('oxford')); //returns a list of clubs with 'oxford' in their name })();
ECF.search()
- Generates a list of both users and clubs matching a query parameter
- Takes a single string argument
- Returns an object with 'Users' and 'Clubs' properties
const ECF = require('ecf'); (async () => { console.log(await ECF.searchClubs('oxford')); })();
Examples
- Find a specific user
(async () => { let result = await ecf.searchUsers(arguments[0], true); let entry = rest.find(v => v.firstName === 'Gawain'); console.log(JSON.stringify(entry, null, 4)); })();
{ "id": "170263E", "member": "GOLD", "name": "Jones, Gawain CB", "lastName": "Jones", "firstName": "Gawain", "middleName": "CB", "club": "4NCL Guildford", "standard": 275, "previous": null, "rapidplay": 277 }