3.1
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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":
|
||||
|
||||
@@ -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')}`,
|
||||
|
||||
@@ -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') };
|
||||
}
|
||||
|
||||
@@ -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') };
|
||||
|
||||
Reference in New Issue
Block a user