class YoutubeDLWrapper {
- constructor (private readonly url: string = '', private readonly enabledResolutions: number[] = []) {
+ constructor (
+ private readonly url: string,
+ private readonly enabledResolutions: number[],
+ private readonly useBestFormat: boolean
+ ) {
}
const info = await youtubeDL.getInfo({
url: this.url,
- format: YoutubeDLCLI.getYoutubeDLVideoFormat(this.enabledResolutions),
+ format: YoutubeDLCLI.getYoutubeDLVideoFormat(this.enabledResolutions, this.useBestFormat),
additionalYoutubeDLArgs: youtubeDLArgs,
processOptions
})
return infoBuilder.getInfo()
}
+ async getInfoForListImport (options: {
+ latestVideosCount?: number
+ }) {
+ const youtubeDL = await YoutubeDLCLI.safeGet()
+
+ const list = await youtubeDL.getListInfo({
+ url: this.url,
+ latestVideosCount: options.latestVideosCount,
+ processOptions
+ })
+
+ return list.map(info => {
+ const infoBuilder = new YoutubeDLInfoBuilder(info)
+
+ return infoBuilder.getInfo()
+ })
+ }
+
async getSubtitles (): Promise<YoutubeDLSubs> {
const cwd = CONFIG.STORAGE.TMP_DIR
try {
await youtubeDL.download({
url: this.url,
- format: YoutubeDLCLI.getYoutubeDLVideoFormat(this.enabledResolutions),
+ format: YoutubeDLCLI.getYoutubeDLVideoFormat(this.enabledResolutions, this.useBestFormat),
output: pathWithoutExtension,
timeout,
processOptions
return remove(path)
})
- .catch(innerErr => logger.error('Cannot remove file in youtubeDL timeout.', { innerErr, ...lTags() }))
+ .catch(innerErr => logger.error('Cannot remove file in youtubeDL error.', { innerErr, ...lTags() }))
throw err
}