Giter Site home page Giter Site logo

yujiosaka / puppet-king-of-time Goto Github PK

View Code? Open in Web Editor NEW
7.0 2.0 2.0 185 KB

Have KING OF TIME (www.kingtime.jp) like a puppet on a string

License: MIT License

JavaScript 7.76% Dockerfile 22.44% Shell 1.38% TypeScript 68.42%
king of time puppeteer headless chrome

puppet-king-of-time's Introduction

puppet-king-of-time

Have KING OF TIME like a puppet on a string

Features

Powered by Headless Chrome, puppet-king-of-time automatically logs in to KING OF TIME's recorder with your ID/password and allows you to programatically clock in/out for you.

Getting Started

Installation

npm i puppet-king-of-time

Note: puppet-king-of-time contains Puppeteer. During installation, it automatically downloads a recent version of Chromium. To skip the download, see Environment variables.

Usage

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

PuppetKOT provides methods to launch a Chromium instance.

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'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().

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()'s options are passed to puppeteer.launch(). It may be useful to set the headless and slowMo options so that you can see what is going on.

PuppetKOT.launch({ id: "Your ID", password: "Your password", headless: false, slowMo: 10 });

Launch in Docker

Build the container with this Dockerfile:

docker build -t puppet-king-of-time-linux .

Run the container by passing node -e "<yourscript.js content as a string>" as the command:

docker run -i --rm --cap-add=SYS_ADMIN \
  --name puppet-king-of-time puppet-king-of-time-linux \
  node -e "`cat yourscript.js`"

puppet-king-of-time's People

Contributors

semantic-release-bot avatar yujiosaka avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

droidttk zenclerk

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.