Init commit
This commit is contained in:
32
packages/transcription-devtools/src/utils.ts
Normal file
32
packages/transcription-devtools/src/utils.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
import { join, parse } from 'node:path'
|
||||
import { createWriteStream } from 'node:fs'
|
||||
import { lstat, unlink } from 'node:fs/promises'
|
||||
import assert from 'node:assert'
|
||||
import { $ } from 'execa'
|
||||
import { makeFileRequest } from '@peertube/peertube-server-commands'
|
||||
|
||||
export const downloadFile = async (url: string, targetDirectory: string) => {
|
||||
const { base } = parse(url)
|
||||
const filePath = join(targetDirectory, base)
|
||||
|
||||
const fileStream = createWriteStream(filePath)
|
||||
const stream = makeFileRequest(url).pipe(fileStream)
|
||||
|
||||
return await new Promise((resolve: (filePath: string) => void, reject) => {
|
||||
stream.on('finish', () => resolve(filePath))
|
||||
stream.on('error', async e => {
|
||||
fileStream.close()
|
||||
await unlink(filePath)
|
||||
reject(e.message)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
export const unzip = async (zipFilePath: string) => {
|
||||
assert(await lstat(zipFilePath).then(stats => stats.isFile()), `${zipFilePath} isn't a file.`)
|
||||
const { dir, name } = parse(zipFilePath)
|
||||
|
||||
await $`unzip -o ${zipFilePath} -d ${dir}`
|
||||
|
||||
return join(dir, name)
|
||||
}
|
||||
Reference in New Issue
Block a user