-
-
Save choplin/df5c959208342a5cddabcf3c5f9ca3f4 to your computer and use it in GitHub Desktop.
Script to stamp in on Jobcan
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
EMAIL={your email address} | |
PASSWORD={your password} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); | |
})(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"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