mirror of
https://github.com/hansputera/tiktok-dl.git
synced 2026-04-05 19:51:57 +02:00
feat(provider): add ttsave provider
This commit is contained in:
@@ -1,15 +1,17 @@
|
||||
import type {BaseProvider} from './baseProvider';
|
||||
import {MusicalyDown} from './musicalyDown';
|
||||
import {MusicalyDown} from './musicalyDownProvider';
|
||||
|
||||
import {SnaptikProvider} from './snaptikProvider';
|
||||
import {TikmateProvider} from './tikmateProvider';
|
||||
import {TTDownloader} from './ttDownloader';
|
||||
import {TTDownloader} from './ttDownloaderProvider';
|
||||
import {TTSave} from './ttSaveProvider';
|
||||
|
||||
export const Providers: BaseProvider[] = [
|
||||
new SnaptikProvider(),
|
||||
new TikmateProvider(),
|
||||
new MusicalyDown(),
|
||||
new TTDownloader(),
|
||||
new TTSave(),
|
||||
];
|
||||
|
||||
export const getRandomProvider = () => Providers[
|
||||
|
||||
57
lib/providers/ttSaveProvider.ts
Normal file
57
lib/providers/ttSaveProvider.ts
Normal file
@@ -0,0 +1,57 @@
|
||||
import {getFetch} from '..';
|
||||
import {BaseProvider, ExtractedInfo} from './baseProvider';
|
||||
import {keyGeneratorTTSave} from './util';
|
||||
|
||||
/**
|
||||
* @class TTSave
|
||||
*/
|
||||
export class TTSave extends BaseProvider {
|
||||
/**
|
||||
* @return {string}
|
||||
*/
|
||||
public resourceName(): string {
|
||||
return 'ttsave';
|
||||
}
|
||||
|
||||
public client = getFetch('https://ttsave.app');
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {string} url - TikTok Video URL
|
||||
* @return {Promise<ExtractedInfo>}
|
||||
*/
|
||||
public async fetch(url: string): Promise<ExtractedInfo> {
|
||||
// getting token
|
||||
const response = await this.client('./');
|
||||
const token = (
|
||||
response.body.match(/doDownload\(id, '([^']+)'\)/) as string[]
|
||||
)[0].split('\'')[1];
|
||||
|
||||
const dlResponse = await this.client.post('./download.php', {
|
||||
'json': {
|
||||
'id': url,
|
||||
'token': token,
|
||||
'key': keyGeneratorTTSave(token),
|
||||
},
|
||||
'headers': {
|
||||
'Origin': this.client.defaults.options.prefixUrl,
|
||||
'Referer': this.client.defaults.options.prefixUrl,
|
||||
'Cookie': response.headers['set-cookie']?.toString(),
|
||||
},
|
||||
});
|
||||
|
||||
return this.extract(dlResponse.body);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {string} html - HTML Raw
|
||||
* @return {ExtractedInfo}
|
||||
*/
|
||||
extract(html: string): ExtractedInfo {
|
||||
console.log(html);
|
||||
return {
|
||||
'error': '',
|
||||
};
|
||||
}
|
||||
};
|
||||
11
lib/providers/util/generator.ts
Normal file
11
lib/providers/util/generator.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
/**
|
||||
* Generate key for ttsave.app
|
||||
*
|
||||
* @param {string} token - Generated token by TTSave
|
||||
* @return {string}
|
||||
*/
|
||||
export const keyGeneratorTTSave = (token: string): string => {
|
||||
// the key must have 550 character length. ~ hansputera
|
||||
const tokenReversed = token.split('').reverse().join('');
|
||||
return tokenReversed.slice(-550);
|
||||
};
|
||||
@@ -1 +1,2 @@
|
||||
export * from './extractor';
|
||||
export * from './generator';
|
||||
|
||||
Reference in New Issue
Block a user