Added automatic BME login option
Signed-off-by: Balazs Toldi <balazs@toldi.eu>
This commit is contained in:
parent
f2810df95d
commit
0a80a0086a
2 changed files with 27 additions and 2 deletions
|
@ -16,6 +16,18 @@ export const argv: any = yargs.options({
|
||||||
describe: 'The username used to log into Microsoft Stream (enabling this will fill in the email field for you).',
|
describe: 'The username used to log into Microsoft Stream (enabling this will fill in the email field for you).',
|
||||||
demandOption: false
|
demandOption: false
|
||||||
},
|
},
|
||||||
|
bmeCode: {
|
||||||
|
alias: 'b',
|
||||||
|
type: 'string',
|
||||||
|
describe: 'BME címtár azonosító',
|
||||||
|
demandOption: false
|
||||||
|
},
|
||||||
|
password: {
|
||||||
|
alias: 'p',
|
||||||
|
type: 'string',
|
||||||
|
describe: 'BME címtár jelszó',
|
||||||
|
demandOption: false
|
||||||
|
},
|
||||||
videoUrls: {
|
videoUrls: {
|
||||||
alias: 'i',
|
alias: 'i',
|
||||||
describe: 'List of urls to videos or Microsoft Stream groups.',
|
describe: 'List of urls to videos or Microsoft Stream groups.',
|
||||||
|
|
|
@ -37,6 +37,9 @@ async function init(): Promise<void> {
|
||||||
if (argv.username) {
|
if (argv.username) {
|
||||||
logger.info(`Username: ${argv.username}`);
|
logger.info(`Username: ${argv.username}`);
|
||||||
}
|
}
|
||||||
|
if(argv.bmeCode){
|
||||||
|
logger.info(`BME Címtár azonosító: ${argv.bmeCode}`);
|
||||||
|
}
|
||||||
|
|
||||||
if (argv.simulate) {
|
if (argv.simulate) {
|
||||||
logger.warn('Simulate mode, there will be no video downloaded. \n');
|
logger.warn('Simulate mode, there will be no video downloaded. \n');
|
||||||
|
@ -44,7 +47,7 @@ async function init(): Promise<void> {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
async function DoInteractiveLogin(url: string, username?: string): Promise<Session> {
|
async function DoInteractiveLogin(url: string, username?: string,bmeCode?: string,password?: string): Promise<Session> {
|
||||||
|
|
||||||
logger.info('Launching headless Chrome to perform the OpenID Connect dance...');
|
logger.info('Launching headless Chrome to perform the OpenID Connect dance...');
|
||||||
|
|
||||||
|
@ -68,6 +71,16 @@ async function DoInteractiveLogin(url: string, username?: string): Promise<Sessi
|
||||||
await page.waitForSelector('input[type="email"]', {timeout: 3000});
|
await page.waitForSelector('input[type="email"]', {timeout: 3000});
|
||||||
await page.keyboard.type(username);
|
await page.keyboard.type(username);
|
||||||
await page.click('input[type="submit"]');
|
await page.click('input[type="submit"]');
|
||||||
|
if(bmeCode){
|
||||||
|
await page.waitForSelector('input[type="text"]', {timeout: 3000});
|
||||||
|
await page.type('input[type="text"]', bmeCode);
|
||||||
|
if(password){
|
||||||
|
await page.type('input[type="password"]', password);
|
||||||
|
await page.click('input[type="submit"]');
|
||||||
|
await page.waitForSelector('#idSIButton9');
|
||||||
|
await page.click("#idSIButton9");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* If a username was not provided we let the user take actions that
|
/* If a username was not provided we let the user take actions that
|
||||||
|
@ -273,7 +286,7 @@ async function main(): Promise<void> {
|
||||||
|
|
||||||
let session: Session;
|
let session: Session;
|
||||||
// eslint-disable-next-line prefer-const
|
// eslint-disable-next-line prefer-const
|
||||||
session = tokenCache.Read() ?? await DoInteractiveLogin('https://web.microsoftstream.com/', argv.username);
|
session = tokenCache.Read() ?? await DoInteractiveLogin('https://web.microsoftstream.com/', argv.username,argv.bmeCode,argv.password);
|
||||||
|
|
||||||
logger.verbose('Session and API info \n' +
|
logger.verbose('Session and API info \n' +
|
||||||
'\t API Gateway URL: '.cyan + session.ApiGatewayUri + '\n' +
|
'\t API Gateway URL: '.cyan + session.ApiGatewayUri + '\n' +
|
||||||
|
|
Loading…
Reference in a new issue