From 66a89cdad2057c54d2a64f89ceeab17e968c82ee Mon Sep 17 00:00:00 2001 From: TobyG74 Date: Wed, 28 Feb 2024 12:15:14 +0700 Subject: [PATCH] fix: types in the unified response --- src/index.ts | 4 +-- .../downloader_musicaldown.ts | 4 +-- .../{ => downloader}/downloader_ssstik.ts | 6 ++-- .../{ => downloader}/downloader_tiktokApi.ts | 4 +-- src/utils/downloader/tiktok_downloader.ts | 31 +++++++++++++++++ src/utils/{ => stalker}/tiktok_stalker.ts | 6 ++-- src/utils/switch.ts | 34 ------------------- 7 files changed, 43 insertions(+), 46 deletions(-) rename src/utils/{ => downloader}/downloader_musicaldown.ts (97%) rename src/utils/{ => downloader}/downloader_ssstik.ts (95%) rename src/utils/{ => downloader}/downloader_tiktokApi.ts (98%) create mode 100644 src/utils/downloader/tiktok_downloader.ts rename src/utils/{ => stalker}/tiktok_stalker.ts (95%) delete mode 100644 src/utils/switch.ts diff --git a/src/index.ts b/src/index.ts index 4825c81..29ad316 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,2 +1,2 @@ -export * from "./utils/switch" -export * from "./utils/tiktok_stalker" +export * from "./utils/downloader/tiktok_downloader" +export * from "./utils/stalker/tiktok_stalker" diff --git a/src/utils/downloader_musicaldown.ts b/src/utils/downloader/downloader_musicaldown.ts similarity index 97% rename from src/utils/downloader_musicaldown.ts rename to src/utils/downloader/downloader_musicaldown.ts index 3c49f13..2dee709 100644 --- a/src/utils/downloader_musicaldown.ts +++ b/src/utils/downloader/downloader_musicaldown.ts @@ -1,7 +1,7 @@ import Axios from "axios" import { load } from "cheerio" -import { MusicalDownResponse, getMusic, getRequest } from "../types/musicaldown" -import { _musicaldownapi, _musicaldownmusicapi, _musicaldownurl } from "../api" +import { MusicalDownResponse, getMusic, getRequest } from "../../types/musicaldown" +import { _musicaldownapi, _musicaldownmusicapi, _musicaldownurl } from "../../api" /** * Using API from Website: diff --git a/src/utils/downloader_ssstik.ts b/src/utils/downloader/downloader_ssstik.ts similarity index 95% rename from src/utils/downloader_ssstik.ts rename to src/utils/downloader/downloader_ssstik.ts index 9375dee..03ec6f8 100644 --- a/src/utils/downloader_ssstik.ts +++ b/src/utils/downloader/downloader_ssstik.ts @@ -1,7 +1,7 @@ import Axios from "axios" import { load } from "cheerio" -import { Author, Statistics, SSSTikFetchTT, SSSTikResponse } from "../types/ssstik" -import { _ssstikapi, _ssstikurl } from "../api" +import { Author, Statistics, SSSTikFetchTT, SSSTikResponse } from "../../types/ssstik" +import { _ssstikapi, _ssstikurl } from "../../api" /** * Using API from Website: @@ -16,7 +16,7 @@ const fetchTT = () => } }) .then(({ data }) => { - const regex = /form\.setAttribute\("include-vals",\s*"([^"]+)"\)/ + const regex = /s_tt\s*=\s*["']([^"']+)["']/ const match = data.match(regex) if (match) { const value = match[1] diff --git a/src/utils/downloader_tiktokApi.ts b/src/utils/downloader/downloader_tiktokApi.ts similarity index 98% rename from src/utils/downloader_tiktokApi.ts rename to src/utils/downloader/downloader_tiktokApi.ts index 590bfa8..e914e71 100644 --- a/src/utils/downloader_tiktokApi.ts +++ b/src/utils/downloader/downloader_tiktokApi.ts @@ -1,6 +1,6 @@ import axios from "axios" -import { _tiktokapi, _tiktokurl } from "../api" -import { Author, TiktokAPIResponse, Statistics, Music } from "../types/tiktokApi" +import { _tiktokapi, _tiktokurl } from "../../api" +import { Author, TiktokAPIResponse, Statistics, Music } from "../../types/tiktokApi" export const TiktokAPI = (url: string) => new Promise((resolve, reject) => { diff --git a/src/utils/downloader/tiktok_downloader.ts b/src/utils/downloader/tiktok_downloader.ts new file mode 100644 index 0000000..476aeed --- /dev/null +++ b/src/utils/downloader/tiktok_downloader.ts @@ -0,0 +1,31 @@ +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" ? TiktokAPIResponse : T extends "v2" ? SSSTikResponse : T extends "v3" ? MusicalDownResponse : TiktokAPIResponse + +export const TiktokDownloader = async (url: string, options?: { version: T }): Promise> => { + switch (options?.version) { + case "v1": { + const response = await TiktokAPI(url) + return response as TiktokDownloaderResponse + } + case "v2": { + const response = await SSSTik(url) + return response as TiktokDownloaderResponse + } + case "v3": { + const response = await MusicalDown(url) + return response as TiktokDownloaderResponse + } + default: { + const response = await TiktokAPI(url) + return response as TiktokDownloaderResponse + } + } +} diff --git a/src/utils/tiktok_stalker.ts b/src/utils/stalker/tiktok_stalker.ts similarity index 95% rename from src/utils/tiktok_stalker.ts rename to src/utils/stalker/tiktok_stalker.ts index 8fc7c08..c65595a 100644 --- a/src/utils/tiktok_stalker.ts +++ b/src/utils/stalker/tiktok_stalker.ts @@ -1,7 +1,7 @@ import axios from "axios" import { load } from "cheerio" -import { _tiktokurl } from "../api" -import { StalkResult, Stats, Users } from "../types/stalker" +import { _tiktokurl } from "../../api" +import { StalkResult, Stats, Users } from "../../types/stalker" const getCookie = () => new Promise((resolve, reject) => { @@ -13,7 +13,7 @@ const getCookie = () => .catch((e) => resolve({ status: "error", message: "Failed to fetch cookie." })) }) -export const TiktokStalk = (username: string, options: { cookie: string }): Promise => +export const TiktokStalk = (username: string, options?: { cookie: string }): Promise => new Promise(async (resolve, reject) => { username = username.replace("@", "") axios diff --git a/src/utils/switch.ts b/src/utils/switch.ts deleted file mode 100644 index 53abc1a..0000000 --- a/src/utils/switch.ts +++ /dev/null @@ -1,34 +0,0 @@ -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" - -export const TiktokDL = (url: string, options: { version: "v1" | "v2" | "v3" }): Promise => - new Promise(async (resolve, reject) => { - switch (options.version) { - case "v1": { - const response: TiktokAPIResponse = await TiktokAPI(url) - resolve(response) - break - } - case "v2": { - const response: SSSTikResponse = await SSSTik(url) - resolve(response) - break - } - case "v3": { - const response: MusicalDownResponse = await MusicalDown(url) - resolve(response) - break - } - default: { - const response: TiktokAPIResponse = await TiktokAPI(url) - resolve(response) - break - } - } - })