import { ApiClient } from './ApiClient'; import { promptUser } from './CommandLineParser'; import { logger } from './Logger'; import { Video, Session } from './Types'; import { AxiosResponse } from 'axios'; import fs from 'fs'; import { parse as parseDuration, Duration } from 'iso8601-duration'; import path from 'path'; import sanitizeWindowsName from 'sanitize-filename'; function publishedDateToString(date: string): string { const dateJs: Date = new Date(date); const day: string = dateJs.getDate().toString().padStart(2, '0'); const month: string = (dateJs.getMonth() + 1).toString(10).padStart(2, '0'); return `${dateJs.getFullYear()}-${month}-${day}`; } function publishedTimeToString(date: string): string { const dateJs: Date = new Date(date); const hours: string = dateJs.getHours().toString(); const minutes: string = dateJs.getMinutes().toString(); const seconds: string = dateJs.getSeconds().toString(); return `${hours}.${minutes}.${seconds}`; } function isoDurationToString(time: string): string { const duration: Duration = parseDuration(time); return `${duration.hours ?? '00'}.${duration.minutes ?? '00'}.${duration.seconds?.toFixed(0) ?? '00'}`; } function durationToTotalChunks(duration: string): number { const durationObj: any = parseDuration(duration); const hrs: number = durationObj.hours ?? 0; const mins: number = durationObj.minutes ?? 0; const secs: number = Math.ceil(durationObj.seconds ?? 0); return (hrs * 60) + mins + (secs / 60); } export async function getVideoInfo(videoGuids: Array, session: Session, subtitles?: boolean): Promise> { const metadata: Array