tiktok-api-dl/src/utils/downloader/tiktok_downloader.ts
2024-02-28 12:15:14 +07:00

32 lines
1.2 KiB
TypeScript

import { MusicalDown } from "./downloader_musicaldown"
import { SSSTik } from "./downloader_ssstik"
import { TiktokAPI } from "./downloader_tiktokApi"
/** Types */
import { MusicalDownResponse } from "../../types/musicaldown"
import { SSSTikResponse } from "../../types/ssstik"
import { TiktokAPIResponse } from "../../types/tiktokApi"
type TiktokDownloaderResponse<T extends "v1" | "v2" | "v3"> = T extends "v1" ? TiktokAPIResponse : T extends "v2" ? SSSTikResponse : T extends "v3" ? MusicalDownResponse : TiktokAPIResponse
export const TiktokDownloader = async <T extends "v1" | "v2" | "v3">(url: string, options?: { version: T }): Promise<TiktokDownloaderResponse<T>> => {
switch (options?.version) {
case "v1": {
const response = await TiktokAPI(url)
return response as TiktokDownloaderResponse<T>
}
case "v2": {
const response = await SSSTik(url)
return response as TiktokDownloaderResponse<T>
}
case "v3": {
const response = await MusicalDown(url)
return response as TiktokDownloaderResponse<T>
}
default: {
const response = await TiktokAPI(url)
return response as TiktokDownloaderResponse<T>
}
}
}