1
0
mirror of https://github.com/snobu/destreamer.git synced 2026-01-16 21:12:13 +00:00

Fix API endpoint is now read from sessionInfo no longer 'winged'

This commit is contained in:
snobu
2020-03-30 10:16:46 +03:00
parent ee1d9b3cf1
commit 7cbd3c7472

View File

@@ -18,7 +18,6 @@ import axios from 'axios';
const ApiVersion = "1.3-private"
const args: string[] = process.argv.slice(2); // TODO: Remove this
let isMsTenant: boolean = false;
const argv = yargs.options({
videoUrls: { type: 'array', demandOption: true },
@@ -109,13 +108,9 @@ async function rentVideoForLater(videoUrls: string[], username: string, outputDi
await page.click('input[type="submit"]');
await browser.waitForTarget(target => target.url().includes('microsoftstream.com/'), { timeout: 90000 });
process.stdout.write('We are logged in. ');
console.log('We are logged in.');
await sleep(1500);
if (videoUrls[0].includes('msit.microsoftstream.com')) {
isMsTenant = true;
}
for (let videoUrl of videoUrls) {
let videoID = videoUrl.split('/').pop() ?? (console.error("Couldn't split the videoID, wrong url"), process.exit(25))
@@ -133,19 +128,26 @@ async function rentVideoForLater(videoUrls: string[], username: string, outputDi
console.log("Accessing API...");
let sessionInfo: any;
var accesToken = await page.evaluate(
let session = await page.evaluate(
() => {
return sessionInfo.AccessToken;
return {
AccessToken: sessionInfo.AccessToken,
ApiGatewayUri: sessionInfo.ApiGatewayUri,
ApiGatewayVersion: sessionInfo.ApiGatewayVersion
}
}
);
console.log(`ApiGatewayUri: ${session.ApiGatewayUri}`);
console.log(`ApiGatewayVersion: ${session.ApiGatewayVersion}`);
console.log("Fetching title and HLS URL...")
var [title, hlsUrl] = await getVideoInfo(videoID, accesToken)
var [title, hlsUrl] = await getVideoInfo(videoID, session);
title = (sanitize(title) == "") ? `Video${videoUrls.indexOf(videoUrl)}` : sanitize(title)
term.blue("Video title is: ")
console.log(`${title} \n`)
term.blue("Video title is: ");
console.log(`${title} \n`);
console.log('Spawning youtube-dl with cookie and HLS URL...');
@@ -191,27 +193,24 @@ async function exfiltrateCookie(page: puppeteer.Page) {
}
async function getVideoInfo(videoID: string, accesToken: string) {
async function getVideoInfo(videoID: string, session: any) {
let title: string;
let hlsUrl: string;
let apiEndpoint = isMsTenant ?
'https://use2-2.api.microsoftstream.com' :
'https://api.microsoftstream.com';
let content = axios.get(
`${apiEndpoint}/api/videos/${videoID}` +
`?$expand=creator,tokens,status,liveEvent,extensions&api-version=${ApiVersion}`,
`${session.ApiGatewayUri}videos/${videoID}` +
`?$expand=creator,tokens,status,liveEvent,extensions&api-version=${session.ApiGatewayVersion}`,
{
headers: {
Authorization: `Bearer ${accesToken}`
Authorization: `Bearer ${session.AccessToken}`
}
})
.then(function (response) {
return response.data;
})
.catch(function (error) {
term.red("Error when calling Microsoft Stream API:")
term.red('Error when calling Microsoft Stream API: ' +
`${error.response.status} ${error.response.reason}`);
console.error(error.response.status);
console.error(error.response.data);
console.error("Exiting...");