1
0
mirror of https://github.com/snobu/destreamer.git synced 2026-03-13 15:38:26 +00:00

6 Commits

Author SHA1 Message Date
Luca Armaroli
d2a79442df changed regex to ignore drive letters 2021-10-21 20:25:47 +02:00
Luca Armaroli
528dc79752 Merge branch 'sharepoint' of https://github.com/snobu/destreamer into sharepoint 2021-10-21 19:42:59 +02:00
Luca Armaroli
b6a06dbd82 removed dependancy from argv in our test 2021-10-21 19:42:42 +02:00
lukaarma
81e7173e10 Merge pull request #413 from ar363/sharepoint
fix SharePoint regex to also include 'teams'
2021-10-21 19:37:51 +02:00
Luca Armaroli
377f7281b8 shift error codes beyond 200 to avoid collisions 2021-10-21 19:31:00 +02:00
Aditya Raj
71b51e76ce fix SharePoint url regex to apply to more sites 2021-10-21 15:49:17 +05:30
6 changed files with 17 additions and 16 deletions

View File

@@ -1,10 +1,9 @@
import { CLI_ERROR, ERROR_CODE } from './Errors';
import { CLI_ERROR } from './Errors';
import { makeOutDir } from './Utils';
import { logger } from './Logger';
import { templateElements } from './Types';
import fs from 'fs';
import readlineSync from 'readline-sync';
import sanitize from 'sanitize-filename';
import yargs from 'yargs';
@@ -198,14 +197,3 @@ function isOutputTemplateValid(argv: any): boolean {
return true;
}
export function promptUser(choices: Array<string>): number {
const index: number = readlineSync.keyInSelect(choices, 'Which resolution/format do you prefer?');
if (index === -1) {
process.exit(ERROR_CODE.CANCELLED_USER_INPUT);
}
return index;
}

View File

@@ -177,7 +177,7 @@ export async function downloadStreamVideo(videoUrls: Array<VideoUrl>): Promise<v
// TODO: complete overhaul of this function
export async function downloadShareVideo(videoUrls: Array<VideoUrl>): Promise<void> {
const shareUrlRegex = new RegExp(/(?<domain>https:\/\/.+\.sharepoint\.com)(?<baseSite>\/sites\/.*?)(?:(?<filename>\/.*\.mp4)|\/.*id=(?<paramFilename>.*mp4))/);
const shareUrlRegex = new RegExp(/(?<domain>https:\/\/.+\.sharepoint\.com).*?(?<baseSite>\/(?:teams|sites)\/.*?)(?:(?<filename>\/.*\.mp4)|\/.*id=(?<paramFilename>.*mp4))/);
logger.info('Downloading SharePoint videos...\n\n');

View File

@@ -1,5 +1,5 @@
export const enum ERROR_CODE {
UNHANDLED_ERROR,
UNHANDLED_ERROR = 200,
ELEVATED_SHELL,
CANCELLED_USER_INPUT,
MISSING_FFMPEG,

View File

@@ -6,6 +6,7 @@ import { StreamSession, VideoUrl } from './Types';
import { AxiosResponse } from 'axios';
import { execSync } from 'child_process';
import fs from 'fs';
import readlineSync from 'readline-sync';
const streamUrlRegex = new RegExp(/https?:\/\/web\.microsoftstream\.com.*/);
@@ -237,3 +238,14 @@ export function ffmpegTimemarkToChunk(timemark: string): number {
return (hrs * 60 * 60) + (mins * 60) + secs;
}
export function promptUser(choices: Array<string>): number {
const index: number = readlineSync.keyInSelect(choices, 'Which resolution/format do you prefer?');
if (index === -1) {
process.exit(ERROR_CODE.CANCELLED_USER_INPUT);
}
return index;
}

View File

@@ -1,5 +1,5 @@
import { StreamApiClient } from './ApiClient';
import { promptUser } from './CommandLineParser';
import { promptUser } from './Utils';
import { logger } from './Logger';
import { Video, StreamSession, VideoUrl } from './Types';

View File

@@ -6,6 +6,7 @@ import { StreamSession, VideoUrl } from './Types';
// we cannot test groups parsing as that requires an actual session
// TODO: add SharePoint urls
describe('Destreamer parsing', () => {
it('Input file to arrays of guids', async () => {
const testSession: StreamSession = {