Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yujiosaka/puppet-king-of-time
Have KING OF TIME (www.kingtime.jp) like a puppet on a string
https://github.com/yujiosaka/puppet-king-of-time
chrome headless king of puppeteer time
Last synced: about 1 month ago
JSON representation
Have KING OF TIME (www.kingtime.jp) like a puppet on a string
- Host: GitHub
- URL: https://github.com/yujiosaka/puppet-king-of-time
- Owner: yujiosaka
- License: mit
- Created: 2019-11-16T04:07:19.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2023-06-19T04:53:45.000Z (over 1 year ago)
- Last Synced: 2024-09-30T07:41:38.718Z (about 2 months ago)
- Topics: chrome, headless, king, of, puppeteer, time
- Language: TypeScript
- Size: 181 KB
- Stars: 7
- Watchers: 2
- Forks: 2
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Contributing: docs/CONTRIBUTING.md
- License: LICENSE
- Code of conduct: docs/CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# puppet-king-of-time
Have [KING OF TIME](https://www.kingtime.jp) like a puppet on a string
## Features
Powered by Headless Chrome, puppet-king-of-time automatically logs in to [KING OF TIME](https://www.kingtime.jp)'s recorder with your ID/password and allows you to programatically clock in/out for you.
## Getting Started
### Installation
```sh
npm i puppet-king-of-time
```> **Note**: puppet-king-of-time contains [Puppeteer](https://github.com/GoogleChrome/puppeteer). During installation, it automatically downloads a recent version of Chromium. To skip the download, see [Environment variables](https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#environment-variables).
### Usage
```js
import PuppetKOT from "puppet-king-of-time";(async () => {
// Launch the puppet-king-of-time with your ID/password
const puppetKOT = await PuppetKOT.launch({ id: "Your ID", password: "Your password" });
// Clock in
await puppetKOT.clockIn();
// Clock out
await puppetKOT.clockOut();
// Close the puppet-king-of-time
await puppetKOT.close();
})();
```## API reference
### Table of Contents
- [class: PuppetKOT](#class-puppetkot)
- [PuppetKOT.launch([options])](#puppetkotlaunchoptions)
- [puppetKOT.clockIn()](#puppetkotclockin)
- [puppetKOT.clockOut()](#puppetkotclockout)
- [puppetKOT.close()](#puppetkotclose)## class: PuppetKOT
PuppetKOT provides methods to launch a Chromium instance.
```js
import PuppetKOT from "puppet-king-of-time";(async () => {
const puppetKOT = await PuppetKOT.launch({ id: "Your ID", password: "Your password" });
await puppetKOT.clockIn();
await puppetKOT.close();
})();
```### PuppetKOT.launch([options])
- `options` <[Object]>
- `loginUrl` <[string]> Login url to [KING OF TIME](https://www.kingtime.jp)'s recorder, default to `https://s2.kingtime.jp/independent/recorder/personal/`.
- `idSelector` <[string]> Login ID input's selector, default to `#id`.
- `passwordSelector` <[string]> Login password input's selector, default to `#password`.
- `loginSelector` <[string]> Login button's selector, default to `.btn-control-message`.
- `clockInSelector` <[string]> Clock in button's selector, default to `.record-clock-in`.
- `clockOutSelector` <[string]> Clock out button's selector, default to `.record-clock-out`.
- `notificationSelector` <[string]> Notification selector, default to `#notification_wrapper[style="display: none;"]`.
- `loginNotificationContent` <[string]> Notification content after clock in, default to `データを取得しました`.
- `clockInNotificationContent` <[string]> Notification content after clock in, default to `出勤が完了しました`.
- `clockOutNotificationContent` <[string]> Notification content after clock out, default to `退勤が完了しました`.
- `timeout` <[number]> Maximum wait time in milliseconds, default to `10000`,
- `id` <[string]> **required**
- `password` <[string]> **required**
- returns: <[Promise]<[PuppetKOT]>> Promise which resolves to PuppetKOT instance.The method launches a Chromium instance. The following options are passed to [puppeteer.launch()](https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#puppeteerlaunchoptions).
```
ignoreHTTPSErrors, headless, executablePath, slowMo, args, ignoreDefaultArgs, handleSIGINT, handleSIGTERM, handleSIGHUP, dumpio, userDataDir, env, devtools
```### puppetKOT.clockIn()
- returns: <[Promise]> Promise resolved when clock in button is clicked.
### puppetKOT.clockOut()
- returns: <[Promise]> Promise resolved when clock out button is clicked.
### puppetKOT.close()
- returns: <[Promise]> Promise resolved when the browser is closed.
## Debugging tips
### Launch options
[PuppetKOT.launch()](#puppetkotlaunchoptions)'s options are passed to [puppeteer.launch()](https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#puppeteerlaunchoptions). It may be useful to set the `headless` and `slowMo` options so that you can see what is going on.
```js
PuppetKOT.launch({ id: "Your ID", password: "Your password", headless: false, slowMo: 10 });
```### Launch in Docker
Build the container with [this Dockerfile](https://github.com/yujiosaka/puppet-king-of-time/blob/master/Dockerfile):
```sh
docker build -t puppet-king-of-time-linux .
```Run the container by passing `node -e ""` as the command:
```sh
docker run -i --rm --cap-add=SYS_ADMIN \
--name puppet-king-of-time puppet-king-of-time-linux \
node -e "`cat yourscript.js`"
```[Object]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object "Object"
[Promise]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise "Promise"
[string]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type "String"
[number]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type "Number"
[PuppetKOT]: #class-puppetkot "PuppetKOT"