This commit is contained in:
wukko
2022-08-16 16:31:41 +06:00
parent c0f51e841b
commit a7ea766289
12 changed files with 108 additions and 51 deletions

View File

@@ -7,7 +7,7 @@ import { errorUnsupported } from "./sub/errors.js";
import loc from "../localization/manager.js";
import match from "./match.js";
export async function getJSON(originalURL, ip, lang, format, quality, audioFormat, isAudioOnly) {
export async function getJSON(originalURL, ip, lang, format, quality, audioFormat, isAudioOnly, noWatermark) {
try {
let url = decodeURI(originalURL);
if (!url.includes('http://')) {
@@ -28,7 +28,7 @@ export async function getJSON(originalURL, ip, lang, format, quality, audioForma
if (patternMatch) break;
}
if (patternMatch) {
return await match(host, patternMatch, url, ip, lang, format, quality, audioFormat, isAudioOnly);
return await match(host, patternMatch, url, ip, lang, format, quality, audioFormat, isAudioOnly, noWatermark);
} return apiJSON(0, { t: errorUnsupported(lang) })
} return apiJSON(0, { t: errorUnsupported(lang) })
} else {

View File

@@ -14,7 +14,7 @@ import tumblr from "./services/tumblr.js";
import matchActionDecider from "./sub/matchActionDecider.js";
import vimeo from "./services/vimeo.js";
export default async function (host, patternMatch, url, ip, lang, format, quality, audioFormat, isAudioOnly) {
export default async function (host, patternMatch, url, ip, lang, format, quality, audioFormat, isAudioOnly, noWatermark) {
try {
if (!testers[host]) return apiJSON(0, { t: errorUnsupported(lang) });
if (!(testers[host](patternMatch))) throw Error();
@@ -70,13 +70,13 @@ export default async function (host, patternMatch, url, ip, lang, format, qualit
case "tiktok":
r = await tiktok({
postId: patternMatch["postId"],
id: patternMatch["id"], lang: lang,
id: patternMatch["id"], lang: lang, noWatermark: noWatermark
});
break;
case "douyin":
r = await douyin({
postId: patternMatch["postId"],
id: patternMatch["id"], lang: lang,
id: patternMatch["id"], lang: lang, noWatermark: noWatermark
});
break;
case "tumblr":

View File

@@ -196,6 +196,11 @@ export default function(obj) {
}]
})
})
+ settingsCategory({
name: "tiktok",
title: "tiktok & douyin",
body: checkbox("disableTikTokWatermark", loc(obj.lang, 'SettingsRemoveWatermark'), loc(obj.lang, 'SettingsRemoveWatermark'))
})
}, {
name: "audio",
title: `${emoji("🎶")} ${loc(obj.lang, 'SettingsAudioTab')}`,

View File

@@ -30,7 +30,19 @@ export default async function(obj) {
});
iteminfo = JSON.parse(iteminfo.body);
if (iteminfo['item_list'][0]['video']['play_addr']['url_list'][0]) {
return { urls: iteminfo['item_list'][0]['video']['play_addr']['url_list'][0].replace("playwm", "play"), audioFilename: `douyin_${obj.postId}_audio`, filename: `douyin_${obj.postId}.mp4` };
if (!obj.noWatermark) {
return {
urls: iteminfo['item_list'][0]['video']['play_addr']['url_list'][0],
audioFilename: `douyin_${obj.postId}_audio`,
filename: `douyin_${obj.postId}.mp4`
};
} else {
return {
urls: iteminfo['item_list'][0]['video']['play_addr']['url_list'][0].replace("playwm", "play"),
audioFilename: `douyin_${obj.postId}_audio`,
filename: `douyin_${obj.postId}_nw.mp4`
};
}
} else {
return { error: loc(obj.lang, 'ErrorEmptyDownload') };
}

View File

@@ -17,15 +17,28 @@ export default async function(obj) {
obj.postId = html.split('aweme/detail/')[1].split('?')[0]
}
}
let html = await got.get(`https://tiktok.com/@video/video/${obj.postId}`, { headers: { "user-agent": genericUserAgent } });
html.on('error', (err) => {
return { error: loc(obj.lang, 'ErrorCantConnectToServiceAPI', 'tiktok') };
});
html = html.body;
if (html.includes(',"preloadList":[{"url":"')) {
return { urls: unicodeDecode(html.split(',"preloadList":[{"url":"')[1].split('","id":"')[0].trim()), audioFilename: `tiktok_${obj.postId}_audio`, filename: `tiktok_${obj.postId}.mp4` };
if (!obj.noWatermark) {
let html = await got.get(`https://tiktok.com/@video/video/${obj.postId}`, { headers: { "user-agent": genericUserAgent } });
html.on('error', (err) => {
return { error: loc(obj.lang, 'ErrorCantConnectToServiceAPI', 'tiktok') };
});
html = html.body;
if (html.includes(',"preloadList":[{"url":"')) {
return { urls: unicodeDecode(html.split(',"preloadList":[{"url":"')[1].split('","id":"')[0].trim()), audioFilename: `tiktok_${obj.postId}_audio`, filename: `tiktok_${obj.postId}.mp4` };
} else {
return { error: loc(obj.lang, 'ErrorEmptyDownload') };
}
} else {
return { error: loc(obj.lang, 'ErrorEmptyDownload') };
let detail = await got.get(`https://api.tiktokv.com/aweme/v1/aweme/detail/?aweme_id=${obj.postId}`);
detail.on('error', (err) => {
return { error: loc(obj.lang, 'ErrorCantConnectToServiceAPI', 'tiktok') };
});
detail = JSON.parse(detail.body);
if (detail["aweme_detail"]["video"]["play_addr"]["url_list"][0]) {
return { urls: detail["aweme_detail"]["video"]["play_addr"]["url_list"][0], audioFilename: `tiktok_${obj.postId}_audio`, filename: `tiktok_${obj.postId}_nw.mp4` };
} else {
return { error: loc(obj.lang, 'ErrorEmptyDownload') };
}
}
} catch (e) {
return { error: loc(obj.lang, 'ErrorBadFetch') };