1.0.34 • Published 4 years ago

liapi v1.0.34

Weekly downloads
4
License
MIT
Repository
github
Last release
4 years ago

liapi - a cookie based lichess API

Automate routines that need cookie authorization.

The module can be used in three ways, as a Node.js module, as a CLI or as a GUI.

Installation

As a Node.js module

Needs local installation:

npm install liapi

Usage:

let { login } = require('liapi')

login(username, password)

As a CLI

Needs global installation:

npm install liapi -g

Usage ( at the command prompt ):

liapicli login username password

As a GUI

Needs global installation:

npm install liapi -g

Usage ( at the command prompt ):

liapigui

This will open up a browser window, in which you can edit the state and issue commands.

API

login

Logs in the user, obtains the cookie and stores it in state.json.

Node.js

let { login } = require('liapi')

login(username, password)

CLI / GUI

login username password

jointourney

Joins a tourney.

Node.js

let { jointourney } = require('liapi')

jointourney(tourneyid, username, password, teamid, callbackopt)

Arguments password ( tourney password, not user password ! ), teamid ( for team battles only ) and callbackopt ( defines a callback upon success ) are optional ( depending on tourney type ), use null to ignore them. If callbackopt is a function it will be called after submitting the request.

CLI / GUI

jointourney tourneyid username[:password] teamid

Note that you can attach a tourney(!) password to the second argument with ":" for joining a password protected tourney. The teamid parameter should only be used for joining a team battle.

createtourney

Creates a tourney. Upon success the tourney create parameters are saved in state.json.

Tourneys are created from a username and a template. There is always a default template in state.json. You can copy it and add it to to state.templates under a new id. Edit the parameters, then you can use this id for creating a custom tournament.

For team battles the template should have a teamBattleByTeam field, containing the teamid of the team creating the team battle.

For team battles the template should also have a teams field. Its format is newline separated lines of text, each line describing a team in teamid "Team name" by teamleader format, as required in the second step of team battle creation. However it should be properly encoded as a JSON string with escapes for quotation marks and newlines.

{
  "templates": {
    "default": {
      "name": "Short Bullet Tourney",
      "clockTime": "2",
      "clockIncrement": "0",
      "minutes": "45",
      "waitMinutes": "5",
      "variant": "standard",
      "rated": "true",
      "position": "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",
      "password": "",
      "conditions.teamMember.teamId": "",
      "conditions.minRating.rating": "",
      "conditions.minRating.perf": "",
      "conditions.maxRating.rating": "",
      "conditions.maxRating.perf": "",
      "conditions.nbRatedGame.nb": "",
      "conditions.nbRatedGame.perf": "",
      "berserkable": "true",
      "startDate": "",
      "teamBattleByTeam": ""
    },
    "custom": {
      "name": "Short Blitz Tourney",
      "clockTime": "3",
      "clockIncrement": "0",
      "minutes": "45",
      "waitMinutes": "5",
      "variant": "standard",
      "rated": "true",
      "position": "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",
      "password": "",
      "conditions.teamMember.teamId": "",
      "conditions.minRating.rating": "",
      "conditions.minRating.perf": "",
      "conditions.maxRating.rating": "",
      "conditions.maxRating.perf": "",
      "conditions.nbRatedGame.nb": "",
      "conditions.nbRatedGame.perf": "",
      "berserkable": "true",
      "startDate": "",
      "teamBattleByTeam": ""
    }
  }
}

Node.js

let { createtourney } = require('liapi')

createtourney(username, template)

Template is either a full or partial template object. It itself can have a template id field template.template, which is a string that specifies which template to use from state.json as a basis ( if template.template is omitted, then the default template will be used as a basis.). Other fields in template argument modify this original template.

Examples:

createtourney("userfoo", {}) default template will be used

createtourney("userfoo", {template: "custom"}) "custom" template will be used

createtourney("userfoo", {template: "custom", waitMinutes: "10"}) "custom" template with waitMinutes modified to 10

In case of team battles you can use a wildcard * for username, in that case the username will be inferred to be the leader of the team creating the battle.

If startDate is next, the start date will be the start date of the last created tourney having a startDate property, plus 7 hours. If no such tourney was created, you get an error message.

Keep in mind that old tourneys are deleted from state.json upon startup.

CLI / GUI

createtourney username template

Here template is a template id in state.json. The whole template will be taken from state.json. The template parameter is optional, if not present the default template will be used. Note that the default template should not be edited. To edit a template you have to create a separate template under a custom id ( other than default ).

Editing and saving state.json

You can either edit the state with a text editor, or you can use the editor in the GUI, in which case to save it type:

save

at the GUI's command prompt. You will get a success message. If not, your JSON may very well be syntactically incorrect.

Using the GUI

Aliases

You can define an alias with:

a aliasname=command

then invoke the command with:

aliasname

To view aliases type:

a

To delete an alias type:

a aliasname=

You can always bring back the last issued command using the Up cursor key.

1.0.34

4 years ago

1.0.33

4 years ago

1.0.31

4 years ago

1.0.29

4 years ago

1.0.30

4 years ago

1.0.28

4 years ago

1.0.27

4 years ago

1.0.25

4 years ago

1.0.24

4 years ago

1.0.23

4 years ago

1.0.22

4 years ago

1.0.21

4 years ago

1.0.19

4 years ago

1.0.18

4 years ago

1.0.17

4 years ago

1.0.16

4 years ago

1.0.9

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.6

4 years ago

1.0.5

4 years ago

1.0.11

4 years ago

1.0.10

4 years ago

1.0.20

4 years ago

1.0.15

4 years ago

1.0.14

4 years ago

1.0.13

4 years ago

1.0.12

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago