@riqtu/tiktok-scraper
Version:
Modified TikTok Scraper with proxy support
59 lines (58 loc) • 1.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isParsedOptions = isParsedOptions;
exports.findAweme = findAweme;
exports.parseAweme = parseAweme;
function isParsedOptions(options) {
return options?.parse === true;
}
function getters(data, keys) {
const obj = {};
keys.forEach((key) => {
const nestedKeys = key.split(".");
const firstKey = nestedKeys.shift();
if (firstKey !== undefined) {
const value = nestedKeys.reduce((acc, nestedKey) => acc?.[nestedKey], data[firstKey]);
obj[firstKey] = value;
}
});
return obj;
}
function findAweme(data, value) {
return data.find((item) => item.aweme_id === value);
}
function parseAweme(data, options) {
const parsed = {
aweme_id: data.aweme_id,
region: data.region,
desc: data.desc,
create_time: data.create_time,
author: getters(data.author, ["nickname", "unique_id", "signature"]),
duration: data.video?.duration || 0,
download: {
covers: data.video?.cover?.url_list || [],
nowm: data.video?.download_addr?.url_list?.[0] || "",
wm: data.video?.download_addr?.url_list?.[1] || "",
music: data.music?.play_url?.url_list?.[0] || "",
music_info: getters(data.music, [
"id",
"title",
"author",
"album",
"cover_large.url_list",
]),
},
};
if (options && options.keys) {
const parsedData = {
...parsed,
};
for (const key of options.keys) {
if (key in data) {
parsedData[key] = data[key];
}
}
return parsedData;
}
return parsed;
}