Skip to content

Instantly share code, notes, and snippets.

@choplin
Created January 12, 2022 12:43
Show Gist options
  • Save choplin/df5c959208342a5cddabcf3c5f9ca3f4 to your computer and use it in GitHub Desktop.
Save choplin/df5c959208342a5cddabcf3c5f9ca3f4 to your computer and use it in GitHub Desktop.
Script to stamp in on Jobcan
EMAIL={your email address}
PASSWORD={your password}
const puppeteer = require("puppeteer");
const dotenv = require("dotenv");
const {
PendingXHR
} = require("pending-xhr-puppeteer");
const commandLineArgs = require("command-line-args");
const loginUrl = "https://id.jobcan.jp/users/sign_in";
const stampingLoginUrl = "https://ssl.jobcan.jp/jbcoauth/login";
const env = dotenv.config().parsed;
async function login(page) {
await page.goto(loginUrl);
await page.type("#user_email", env["EMAIL"]);
await page.type("#user_password", env["PASSWORD"]);
await Promise.all([
page.waitForNavigation(),
page.click('input[type="submit"]'),
]);
}
async function stamp(page) {
await page.goto(stampingLoginUrl);
await page.select("#adit_group_id", "2");
const pendingXHR = new PendingXHR(page);
await page.click("#adit-button-push");
await pendingXHR.waitForAllXhrFinished();
}
function formatDate(d) {
const str = (n) => n.toString().padStart(2, "0");
const ymd = `${d.getFullYear()}${str(d.getMonth() + 1)}${str(d.getDate())}`;
const hms = `${str(d.getHours())}${str(d.getMinutes())}${str(
d.getSeconds()
)}`;
return `${ymd}-${hms}`;
}
const optionDefinitions = [{
name: "screenshot",
alias: "s",
type: Boolean,
}];
const cli = commandLineArgs(optionDefinitions);
(async () => {
const browser = await puppeteer.launch({
headless: true
});
const page = await browser.newPage();
await login(page);
await stamp(page);
if (cli["screenshot"]) {
await page.screenshot({
path: `${formatDate(new Date())}.png`
});
}
await browser.close();
})();
{
"name": "jobcan-punching-bot",
"version": "1.0.0",
"description": "Script to punch in on Jobcan",
"main": "index.js",
"scripts": {
"start": "node index.js --screenshot"
},
"private": "true",
"dependencies": {
"command-line-args": "^5.2.0",
"dotenv": "^11.0.0",
"pending-xhr-puppeteer": "^2.3.3",
"puppeteer": "^13.0.1"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment