fix(packages.core): fix downTik always redirect back to home

Signed-off-by: hansputera <hanifdwyputrasembiring@gmail.com>
This commit is contained in:
hansputera
2024-09-08 09:25:25 +08:00
parent 93c09c19ed
commit e9afd97401
5 changed files with 16 additions and 172 deletions

View File

@@ -27,15 +27,18 @@ export const rotateProvider = async (
if (process.env.NODE_ENV === 'development') {
await redisClient.del(url);
}
// console.log(provider.resourceName());
if (provider.maintenance) {
return await rotateProvider(getRandomProvider(), url, skipOnError);
}
const cachedData = await redisClient.get(url);
console.log(cachedData);
if (!cachedData) {
try {
const data = await provider.fetch(url, params ?? {});
console.log(data);
if (data.error) {
if (!skipOnError) {
return {

View File

@@ -1,67 +0,0 @@
import {BaseProvider, ExtractedInfo} from './base';
import {getFetch} from '../fetch';
import {matchLink} from './utils';
import type {Shape} from 'ow';
/**
* @class DDDTikProvider
*/
export class DDDTikProvider extends BaseProvider {
/**
* Get resource name
*
* @return {string}
*/
public resourceName(): string {
return 'dddtik';
}
public client = getFetch('https://dddtik.com');
public maintenance = undefined;
/**
* @param {string} url Tiktok video url
* @return {Promise<ExtractedInfo>}
*/
async fetch(url: string): Promise<ExtractedInfo> {
const response = await this.client.post('./down_2892409.php', {
form: {
url,
},
});
return this.extract(response.body);
}
/**
* @param {string} html
* @return {ExtractedInfo}
*/
extract(html: string): ExtractedInfo {
const urls = matchLink(html) as string[];
urls.pop();
if (urls.length === 1) {
return {
error: 'Something went wrong!',
};
}
const t = urls[1];
return {
video: {
urls: urls.filter((u) => u !== t),
thumb: t,
},
};
}
/**
* Get ow.Shape params.
* @return {Shape | undefined}
*/
public getParams(): Shape | undefined {
return undefined;
}
}

View File

@@ -26,7 +26,11 @@ export class DownTikProvider extends BaseProvider {
* @return {Promise<ExtractedInfo>}
*/
async fetch(url: string): Promise<ExtractedInfo> {
const response = await this.client('./');
const response = await this.client('./', {
searchParams: new URLSearchParams({
lang: 'en',
}),
});
const token = (
response.body.match(/id="token" value="([^""]+)"/) as string[]
@@ -37,6 +41,9 @@ export class DownTikProvider extends BaseProvider {
url: url,
token: token,
},
searchParams: new URLSearchParams({
lang: 'en',
}),
headers: {
cookie: response.headers['set-cookie']?.toString(),
Referer: 'https://downtik.io/',
@@ -55,7 +62,7 @@ export class DownTikProvider extends BaseProvider {
return this.extract(responseAction.body);
}
return this.extract(JSON.parse(responseAction.body).data);
return this.extract(responseAction.body);
}
/**

View File

@@ -1,99 +0,0 @@
import {BaseProvider, ExtractedInfo} from './base';
import {getFetch} from '../fetch';
import type {Shape} from 'ow';
/**
* @class DownloadOne
*/
export class DownloadOne extends BaseProvider {
/**
* Get provider name
* @return {string}
*/
public resourceName(): string {
return 'ttdownloaderone';
}
public client = getFetch('http://tiktokdownloader.one');
public maintenance = undefined;
/**
* Fetch ttdownloader.one
* @param {string} url Video TikTok URL
* @return {Promise<ExtractedInfo>}
*/
public async fetch(url: string): Promise<ExtractedInfo> {
// getting the token
const response = await this.client('./');
const token = (
/name="_token_" content="(.*)"/gi.exec(response.body) as string[]
)[1];
const dlResponse = await this.client('./api/v1/fetch?url=' + url, {
headers: {
TOKEN: token,
Referer: 'http://tiktokdownloader.one/',
Origin: 'http://tiktokdownloader.one',
Accept: 'application/json, text/plain, */*',
},
});
if (dlResponse.statusCode !== 200) {
return {
error: "Probably the video doesn't exist",
};
}
return this.extract(dlResponse.body);
}
/**
* Extract page from ttdownloader.one site
* @param {string} html
* @return {ExtractedInfo}
*/
extract(html: string): ExtractedInfo {
const json = JSON.parse(html);
if (json.error) {
return {
error: json.error,
};
}
return {
video: {
urls: [json.url, json.url_nwm],
thumb: json.cover,
id: json.video_id,
},
music: {
url: json.music.url,
title: json.music.title,
cover: json.music.cover,
author: json.music.author,
},
author: {
id: json.user.name,
username: json.user.username,
thumb: json.user.cover,
},
caption: json.caption,
updatedAt: json.updatedAt ?? '-',
uploadedAt: json.uploaded_at,
commentsCount: json.stats.comment,
sharesCount: json.stats.shares,
likesCount: json.stats.likes,
playsCount: json.stats.play,
};
}
/**
* Get ow.Shape params.
* @return {Shape | undefined}
*/
public getParams(): Shape | undefined {
return undefined;
}
}

View File

@@ -9,8 +9,8 @@ import {SaveTikProvider} from './saveTikProvider';
import {TikDownProvider} from './tikDownProvider';
import {DownTikProvider} from './downTikProvider';
import {LoveTikProvider} from './loveTikProvider';
import {DDDTikProvider} from './dddTikProvider';
import {DownloadOne} from './downloaderOneProvider';
// import {DDDTikProvider} from './dddTikProvider';
// import {DownloadOne} from './downloaderOneProvider';
import {NativeProvider} from './nativeProvider';
import {GetVidTikProvider} from './getVidTikProvider';
@@ -24,8 +24,8 @@ export const Providers: BaseProvider[] = [
new TikDownProvider(),
new DownTikProvider(), // SaveTik Mirror
new LoveTikProvider(),
new DDDTikProvider(),
new DownloadOne(),
// new DDDTikProvider(),
// new DownloadOne(),
new NativeProvider(),
new GetVidTikProvider(),
];