mirror of
https://github.com/hansputera/tiktok-dl.git
synced 2026-04-05 19:51:57 +02:00
fix(packages.core): fix downTik always redirect back to home
Signed-off-by: hansputera <hanifdwyputrasembiring@gmail.com>
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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(),
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user