Refactor and document code; add new files

Refactored `script.py` by adding detailed docstrings and organizing functions. Created `.idea` configuration files and `gotodashboard.js` for `sisa_crawl` project. Added `readme.md` files with usage instructions and context for multiple scripts, and set up `package.json` for `sisa_crawl` dependencies.
This commit is contained in:
bdaneels 2024-11-18 14:03:23 +01:00
commit 921cfa389c
9 changed files with 161 additions and 0 deletions

5
.idea/.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/

12
.idea/sisa_crawl.iml Normal file
View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
<excludeFolder url="file://$MODULE_DIR$/temp" />
<excludeFolder url="file://$MODULE_DIR$/tmp" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

6
.idea/vcs.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

31
gotodashboard.js Normal file
View File

@ -0,0 +1,31 @@
const {runId, dasbhoardInschrijvingenURL} = require('./vars.js');
async function runGoToDashboard(page) {
try {
await page.waitForSelector('#PS_SCP_REG_USER_F_S\\$19'); // Escape `$` in the ID
// Click the element
await page.click('#PS_SCP_REG_USER_F_S\\$19');
try {
await page.goto(dasbhoardInschrijvingenURL);
} catch (error) {
console.error("The page could not be reached.", error);
}
await page.waitForSelector('#PRCSRUNCNTL_RUN_CNTL_ID')
await page.type("#PRCSRUNCNTL_RUN_CNTL_ID[type='text']", runId)
await page.keyboard.press("Enter");
await page.waitForSelector('#PTS_CFG_CL_RSLT_NUI_SRCH1\\$12\\$\\$0')
await page.click('#PTS_CFG_CL_RSLT_NUI_SRCH1\\$12\\$\\$0')
return page;
} catch (error) {
console.error("An error occurred:", error);
}
}
module.exports = runGoToDashboard;

16
index.js Normal file
View File

@ -0,0 +1,16 @@
const runLoginScript = require('./login');
const launchBrowser = require('./launchbrowser');
const runGoToDashboard = require('./gotodashboard');
const handleDashboardForm = require('./handleDashboardForm');
const inquirer = require('inquirer');
(async () => {
const browser = await launchBrowser();
const page1 = await runLoginScript(browser);
const page2 = await runGoToDashboard(page1);
const page3 = await handleDashboardForm(page2);
})();

9
launchbrowser.js Normal file
View File

@ -0,0 +1,9 @@
const puppeteer = require("puppeteer");
async function launchBrowser() {
return puppeteer.launch({
executablePath: process.env.CHROMIUM_PATH || 'C:\\Users\\bdaneels\\Documents\\chromium\\chrome-win\\chrome.exe',
headless: false
});
}
module.exports = launchBrowser;

42
login.js Normal file
View File

@ -0,0 +1,42 @@
const { email, password, webpage } = require("./vars.js");
async function runLoginScript(browser) {
try {
const page = await browser.newPage();
// Navigate to the login page
await page.goto(webpage);
// Wait for 5 seconds
await new Promise((resolve) => setTimeout(resolve, 5000));
// Enter the email
await page.type(".form-control[type='email']", email);
console.log("email entered");
// Wait for 5 seconds
await new Promise((resolve) => setTimeout(resolve, 5000));
//press enter keyboard
await page.keyboard.press("Enter");
// Wait for 5 seconds
await new Promise((resolve) => setTimeout(resolve, 5000));
// Enter the password
await page.type(".form-control[type='password']", password);
console.log("password entered");
await page.keyboard.press("Enter");
// Wait for 5 seconds
await new Promise((resolve) => setTimeout(resolve, 5000));
// wait for the user to input the google auth code
console.log("waiting for auth code");
await new Promise((resolve) => setTimeout(resolve, 15000));
return page
} catch (error) {
console.error("An error occurred:", error);
}
}
module.exports = runLoginScript;

14
package.json Normal file
View File

@ -0,0 +1,14 @@
{
"name": "sisa_crawl",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"private": true,
"dependencies": {
"inquirer": "^12.1.0",
"puppeteer": "^23.7.0"
}
}

26
vars.js Normal file
View File

@ -0,0 +1,26 @@
/* Top Level Vars*/
const email = 'bdaneels@ad.ua.ac.be'
const password = 'Heideggershut18891'
const webpage = 'https://sisaweb.uantwerpen.be'
const runId = 'bd'
const dasbhoardInschrijvingenURL = 'https://app.sisaweb.uantwerpen.be/psc/csprd_3/EMPLOYEE/SA/c/QQ_INSCHRIJVINGEN.QQ_OVERZ_ING_STDL.GBL?NavColl=true'
/* Dashboard Form Vars*/
const career = 'BACA'
const program = 'B0011'
module.exports = {
email,
password,
webpage,
runId,
dasbhoardInschrijvingenURL,
career,
program
};