通过访问和使用 Tikt LLC (“ Tikt” 或“ tikt.io” ),您同意接受本文件所述的tikt.io 的服务条件的约束。 如果您不接受这些条件, 您则不允许使用 tikt.io 或其服务 。
tikt.io保留随时以任何理由,完全斟酌决定改变、改变、更新或终止服务条件的权利,继续使用tikt.io或其服务,从而同意受本服务条件文件今后任何版本的约束,因此,我们建议你不时审查这些服务条件。
如果违反服务条款,使用tikt.io或其服务的任何默示或明示的事先授权,应不经通知即予终止,任何违反这些服务条款的tikt.io的使用均应未经批准。
由于接受这些服务条件,没有与tikt.io建立雇主-雇员关系、伙伴关系或其他机构关系。
你代表并授权我们:(A) 你是一个个人(即不是公司),你的法定年龄是签订具有约束力的合同或得到父母的许可,而且你至少年满13岁或13岁以上;(B) 你提交的所有登记资料都是准确和真实的;以及(C) 你将保持这种资料的准确性;你还证明,你在法律上被允许使用和获得这些服务,并对选择、使用和获得服务承担全部责任;在法律禁止的情况下,这项协议无效,任何获得tikt.io或其在这类管辖区的服务都被禁止。
tikt.io保留其在tikt.io及其网站上任何原始内容的权利。
tikt.io 可能收集您使用 tikt.io 及其服务的信息。 例如, tikt.io 收集您的IP 地址用于利率限制记录, 如果您不是 UPGRADED 用户的话。 这是 Tikt. io 登录您的 IP 的唯一实例。 在任何转帐器上没有 IP 登录 IP 。 它不会将 IP 连接到它所录的任何视频或音频。 它只是统计该 IP 进行的记录, 直到 IP 达到 3 个请求 。 一小时后, 您的 IP 地址将过期。 这是 Tikt.io 将使用您的 IP IP 协议 地址 ( " IP " ) 的唯一实例。 任何其它用途都将被明确禁止, 因为 tikt.io io 将不登录在它使用的任何服务器上。 它也可以在创建账户中收集您提供的信息 。 尽管您拥有个人数据和信息, 并且通过使用 tikt.io 及其服务, 您会提供访问、 收集、 和存储这些用户数据和信息的授权和许可 。 您所使用的任何链接 。
您表示您有权提供您的用户信息 tikt.io 。 您还同意您提交到 tikt.io 的所有用户信息, 无论是明确还是通过使用 tikt.io 及其服务, 都将被Tikt. io 的隐私政策收集并管理 。
tikt.io使用社会媒体服务( " 社会媒体图标 " )的某些图标,引导用户在tikt.io网站上了解这种社会媒体服务的内容记录信息,使用这些图标并不反映社会媒体网站对tikt.io或其服务的任何认可。
Tikt.io除了收集用户提供的信息外,也不收集或储存任何第三方内容或信息。
使用与 tikt.io 连接到第三方内容的链接时,您明白您对使用 tikt.io 服务链接负有全部责任。 tikt.io 不负责通过这种链接或链接材料获取的任何内容。 您承担全部责任 。
tikt.io并不直接存储与第三方内容的任何链接,而只是管道内容。因此,tikt.io只能访问不受DRM保护的内容。由于您负责提供与tikt.io及其服务所使用的链接,tikt.io既不审查也不认可第三方网站的内容。此外,tikt.io并不主张对此类内容拥有任何权利。您承认,通过提交 tikt.io 的链接访问的内容和材料及其服务可能并不总是准确、完整或更新。
某些内容可能包含数字权利机制,防止获取或储存这类内容,你同意不试图规避这类数字权利机制。
你使用任何链接作为自己的酌处权和风险。你明白的。
jikt.io尊重他人的知识产权,不允许或容忍侵犯版权的活动,这就是为什么这项服务只允许公开记录网上内容的原因。
tikt.io 也不存储通过其服务或网站访问的任何第三方内容。 因此, 我们无法删除任何内容 。 如果您想要删除或禁用其他网站提供的内容, 请直接向主机提供方( 如Instagram、 FaceBook、Pinterest等 ) 发出任何通知 。 您可以通过以下链接联系其中一些 : Instagma 收缩, 收取利息.
此外,你同意不:
你同意负责任地使用tikt.io的服务。
任何违反本服务条款和任何一方权利的行为,都可能导致tikt.io或其他第三方实施民事或刑事处罚。
tikt.io本身不在其网站或服务器上存储第三方内容,我们的例子代码表明,如何配置画廊-dl或类似的和python来完成 要取消订阅,请点击此处tikt.io/refund/;或 0) {
var dur = parseFloat(attrDuration);
info.data('duration', dur);
info.find('.clip-fields').show();
info.find('.clip-loading').hide();
initClipSlider(info, dur);
} else {
info.find('.clip-loading').show();
info.find('.clip-fields').hide();
info.find('.clip-error').hide();
var itemPageUrl = info.attr('data-item-page-url') || '';
var pageUrl = decodeURIComponent(info.find('.download-button').data('page-url') || '');
var directUrl = decodeURIComponent(info.find('.download-button').data('url') || '');
var fetchUrl = itemPageUrl || pageUrl || directUrl;
$.ajax({
url: '/api/duration/',
type: 'POST',
data: {
url: fetchUrl,
csrfmiddlewaretoken: 'jaYuTmQUqltiZObYD7nx8jBwW8dQFQJiAkvdfO6zjBQOBeiMsQB5ZJhnvaDhq0gz'
},
success: function(data) {
if (data.duration) {
info.data('duration', data.duration);
info.find('.clip-loading').hide();
info.find('.clip-fields').show();
initClipSlider(info, data.duration);
} else {
info.find('.clip-loading').hide();
info.find('.clip-error').text('Could not get duration').show();
}
},
error: function() {
info.find('.clip-loading').hide();
info.find('.clip-error').text('Could not get duration').show();
}
});
}
}
} else {
clipInputs.hide();
}
resetDownloadButton(info);
});
container.on("click", ".download-button", function (e) {
var target = $(this);
var info = target.closest('.result-item-info');
var itemType = target.data('type') || '';
var format = info.find('[data-input=format]:checked').val() || '';
var quality = info.find('[data-input=quality]').val() || '';
var h264 = info.find('input[name=h264]').is(':checked');
// Image conversion (available to all users)
if (itemType === 'image' && GO_API_URL) {
var imgFormat = info.find('[data-input=img-format]:checked').val() || '';
var imgWidth = info.find('[data-input=img-width]').val() || '';
var imgHeight = info.find('[data-input=img-height]').val() || '';
var imgAspectRatio = info.find('[data-input=img-aspect-ratio]').val() || '';
var needsImageConversion = imgFormat !== '' || imgWidth !== '' || imgHeight !== '' || imgAspectRatio !== '';
if (needsImageConversion) {
e.preventDefault();
if (!hasPro) {
var modal = new bootstrap.Modal(document.getElementById('upgradeModal'));
modal.show();
return;
}
var sourceUrl = decodeURIComponent(target.data('url'));
var fn = target.data('fn') || 'image';
var form = document.createElement('form');
form.method = 'POST';
form.action = '/api/convert/image/';
form.style.display = 'none';
function addImgField(name, value) {
var input = document.createElement('input');
input.type = 'hidden';
input.name = name;
input.value = value;
form.appendChild(input);
}
addImgField('csrfmiddlewaretoken', 'jaYuTmQUqltiZObYD7nx8jBwW8dQFQJiAkvdfO6zjBQOBeiMsQB5ZJhnvaDhq0gz');
addImgField('url', sourceUrl);
addImgField('title', fn);
if (imgFormat) addImgField('image_format', imgFormat);
if (imgWidth) addImgField('width', imgWidth);
if (imgHeight) addImgField('height', imgHeight);
if (imgAspectRatio) addImgField('aspect_ratio', imgAspectRatio);
document.body.appendChild(form);
form.submit();
document.body.removeChild(form);
onDownloadButton.call(target[0]);
return;
}
}
var needsConversion = (format === 'wav') || (quality !== '') || h264;
if (needsConversion && !hasPro) {
e.preventDefault();
var modal = new bootstrap.Modal(document.getElementById('upgradeModal'));
modal.show();
return;
}
if (needsConversion && GO_API_URL) {
e.preventDefault();
var pageUrl = decodeURIComponent(target.data('page-url') || '');
var fn = target.data('fn') || 'download';
var sourceUrl = pageUrl;
if (pageUrl.indexOf('tiktok.com') !== -1) {
var proxyType = (itemType === 'audio') ? 'audio' : 'video';
sourceUrl = GO_API_URL + '/api/proxy?url=' + encodeURIComponent(pageUrl) + '&type=' + proxyType + '&fn=' + encodeURIComponent(fn);
}
var fmt;
if (format === 'wav') {
fmt = 'wav';
} else if (itemType === 'audio') {
fmt = 'mp3';
} else {
fmt = 'mp4';
}
var form = document.createElement('form');
form.method = 'POST';
form.action = '/api/convert/' + fmt + '/';
form.style.display = 'none';
function addField(name, value) {
var input = document.createElement('input');
input.type = 'hidden';
input.name = name;
input.value = value;
form.appendChild(input);
}
addField('csrfmiddlewaretoken', 'jaYuTmQUqltiZObYD7nx8jBwW8dQFQJiAkvdfO6zjBQOBeiMsQB5ZJhnvaDhq0gz');
addField('url', sourceUrl);
addField('title', fn);
if (fmt === 'mp3' && quality) addField('audio_quality', quality + 'k');
if (fmt === 'mp4' && quality) addField('video_quality', quality);
if (fmt === 'mp4' && h264) addField('h264', 'true');
document.body.appendChild(form);
form.submit();
document.body.removeChild(form);
onDownloadButton.call(this);
} else {
onDownloadButton.call(this);
}
});
container.on("change", "[data-input=format]", function () {
var info = $(this).closest('.result-item-info');
var row = info.find('.quality-row');
if ($(this).val() === 'wav') {
row.addClass("d-none");
} else {
row.removeClass("d-none");
}
resetDownloadButton(info);
});
container.on("change input", "[data-input=quality]", function () {
resetDownloadButton($(this).closest('.result-item-info'));
});
container.on("change", "input[name=h264]", function () {
resetDownloadButton($(this).closest('.result-item-info'));
});
onChangeURLValue();
function onDownloadAll() {
var target = $(this);
target.find(".spinner-border").removeClass("d-none");
target.prop("disabled", true);
var filter = container.find('input[name="downloadFilter"]:checked').val() || 'all';
var downloadLinks = [];
var downloadButtons = container.find(".download-button");
downloadButtons.each(function (index, item) {
var type = $(item).data("type") || "";
if (filter === "all" || type === filter || (filter === "video" && (type === "video" || type === "video_watermark"))) {
downloadLinks.push($(item).data("url"));
$(item).addClass("downloaded");
}
});
if (downloadLinks.length === 0) {
target.find(".spinner-border").addClass("d-none");
target.prop("disabled", false);
return;
}
var batchDownloadI18n = {
intro: "We detected {count} files. To keep things reliable we will download them in {n} batches of up to {size}. Each batch is saved separately as it finishes.",
progress: "Batch {current} of {total}",
retrying: "Batch {batch} failed, retrying in {sec}s…",
failed: "Batch {batch} failed after retries. Press Resume to try again.",
done_status: "All batches downloaded.",
resume_prompt: "You already downloaded {done} of {total} batches for this list. Continue from there?",
cancel_confirm: "Cancel the remaining batches?"
};
batchDownload.show({
urls: downloadLinks,
baseName: "Tikt",
csrfToken: "jaYuTmQUqltiZObYD7nx8jBwW8dQFQJiAkvdfO6zjBQOBeiMsQB5ZJhnvaDhq0gz",
goApiUrl: GO_API_URL || "",
i18n: batchDownloadI18n,
onAllDone: function () {
setTimeout(function () {
target.find(".spinner-border").addClass("d-none");
target.text('分享 Tikt.io');
target.removeClass('btn-primary').addClass('btn-success');
target.prop("disabled", false);
launchConfetti(target, 150, 2200);
}, 100);
},
onError: function (err) {
alert(err && err.message ? err.message : err);
target.find(".spinner-border").addClass("d-none");
target.prop("disabled", false);
},
onCancel: function () {
target.find(".spinner-border").addClass("d-none");
target.prop("disabled", false);
}
});
}
var individualDownloadCount = 0;
function onDownloadButton() {
var target = $(this);
if (!target.data('original-html')) {
target.data('original-html', target.html());
target.data('original-class', target.attr('class'));
}
target.find(".spinner-border").removeClass("d-none");
setTimeout(function () {
target.find(".spinner-border").addClass("d-none");
target.text('分享 Tikt.io');
target.removeClass('btn-outline-primary').addClass('btn-success');
launchConfetti(target, 150, 2200);
}, 100)
if (!hasPro) {
individualDownloadCount++;
var banner = $('#batchUpsellBanner');
if (banner.length && individualDownloadCount >= 3) {
$('#batchUpsellCount').text(individualDownloadCount);
banner.removeClass('d-none');
}
}
}
function resetDownloadButton(info) {
var btn = info.find('.download-button');
var originalHtml = btn.data('original-html');
if (originalHtml) {
btn.html(originalHtml);
btn.attr('class', btn.data('original-class'));
}
}
// Multi-select for batch download
container.on('change', '.select-item-checkbox', function () {
var checked = container.find('.select-item-checkbox:checked');
var count = checked.length;
if (!hasPro && count > 1) {
$(this).prop('checked', false);
var modal = new bootstrap.Modal(document.getElementById('upgradeModal'));
modal.show();
return;
}
$('#selectedCount').text(count);
if (count > 1) {
$('#downloadSelectedBtn').removeClass('d-none');
} else {
$('#downloadSelectedBtn').addClass('d-none');
}
});
$('#downloadSelectedBtn').on('click', function () {
var target = $(this);
target.find('.spinner-border').removeClass('d-none');
target.prop('disabled', true);
var selectedUrls = [];
container.find('.select-item-checkbox:checked').each(function () {
selectedUrls.push($(this).data('url'));
});
if (selectedUrls.length === 0) {
target.find('.spinner-border').addClass('d-none');
target.prop('disabled', false);
return;
}
var batchDownloadI18n = {
intro: "We detected {count} files. To keep things reliable we will download them in {n} batches of up to {size}. Each batch is saved separately as it finishes.",
progress: "Batch {current} of {total}",
retrying: "Batch {batch} failed, retrying in {sec}s…",
failed: "Batch {batch} failed after retries. Press Resume to try again.",
done_status: "All batches downloaded.",
resume_prompt: "You already downloaded {done} of {total} batches for this list. Continue from there?",
cancel_confirm: "Cancel the remaining batches?"
};
batchDownload.show({
urls: selectedUrls,
baseName: "Tikt-selected",
csrfToken: "jaYuTmQUqltiZObYD7nx8jBwW8dQFQJiAkvdfO6zjBQOBeiMsQB5ZJhnvaDhq0gz",
goApiUrl: GO_API_URL || "",
i18n: batchDownloadI18n,
onAllDone: function () {
target.find('.spinner-border').addClass('d-none');
target.prop('disabled', false);
launchConfetti(target, 150, 2200);
},
onError: function (err) {
alert(err && err.message ? err.message : 'An error occurred');
target.find('.spinner-border').addClass('d-none');
target.prop('disabled', false);
},
onCancel: function () {
target.find('.spinner-border').addClass('d-none');
target.prop('disabled', false);
}
});
});
function launchConfetti($btn, amount, lifetime) {
var colors = ['#FF4757', '#2ED573', '#1E90FF', '#FFA502', '#A55EEA', '#2ECC71', '#FF6B81'];
var offset = $btn.offset();
var btnWidth = $btn.outerWidth();
var btnHeight = $btn.outerHeight();
for (var i = 0; i < amount; i++) {
var $c = $('');
var size = 3 + Math.random() * 4; // 🎯 más pequeño: 3–7 px
var dur = 0.8 + Math.random() * 0.8; // más rápido: 0.8–1.6 s
var delay = Math.random() * 0.2;
var color = colors[Math.floor(Math.random() * colors.length)];
var rotateStart = Math.floor(Math.random() * 360);
var startLeft = offset.left + Math.random() * btnWidth;
var startTop = offset.top + Math.random() * btnHeight;
$c.css({
position: 'absolute',
left: startLeft + 'px',
top: startTop + 'px',
background: color,
width: size + 'px',
height: (size + 2) + 'px',
transform: 'rotate(' + rotateStart + 'deg)',
animation: 'fall linear forwards',
animationDuration: dur + 's',
animationDelay: delay + 's',
zIndex: 9999,
pointerEvents: 'none',
opacity: 0.9
});
$('body').append($c);
(function (el) {
setTimeout(function () {
el.remove();
}, lifetime || 2000);
})($c);
}
}
function onChangeURLValue() {
const inputValue = $('#url').val();
if (!inputValue) {
return
}
const button = $('#copyPasteText');
const pasteText = button.data('paste');
const clearText = button.data('clear');
if (inputValue.trim() === '') {
button.text(pasteText);
} else {
button.text(clearText);
}
}
function onLoadMore() {
var wrapper = $(this).closest(".job-wrapper");
container.find("#loadMoreEntries").prop("disabled", true);
container.find("#loadMoreEntries").find(".spinner-border").removeClass("d-none");
var target = container.find("#form");
var formData = target.serializeArray();
var nextPageToken = wrapper.find("[name=next_page_token]").val();
formData.push({name: 'page', value: page});
formData.push({name: 'next_page_token', value: nextPageToken});
$.ajax({
url: `/api/extract/`,
type: 'POST',
data: formData,
success: function (data) {
if (data.error === true || data.success === false) {
$('.m-progress').removeClass('m-progress').removeAttr('disabled');
container.find("#loadMoreEntries .spinner-border").addClass("d-none");
container.find("#loadMoreEntries").prop("disabled", false);
if (data.html) {
wrapper.find(".job-result").append(data.html);
}
return;
}
wrapper.find("#actionsWrapper").remove();
wrapper.find(`.job-result #postListWrapper`).append(data.html);
wrapper.find(`[name=next_page_token]`).val(data.next_page_token);
if (!data.next_page_token) {
container.find("#loadMoreEntries").remove();
} else {
container.find("#loadMoreEntries .spinner-border").addClass("d-none");
container.find("#loadMoreEntries").removeClass('m-progress').removeAttr('disabled');
}
initializeLazyLoad();
page += 1;
},
error: function (xhr, status, error) {
container.find("#loadMoreEntries .spinner-border").addClass("d-none");
container.find("#loadMoreEntries").prop("disabled", false);
try {
var response = JSON.parse(xhr.responseText);
if (response.html) {
wrapper.find(".job-result").append(response.html);
}
} catch (e) {
alert(error);
}
}
});
}
function onSubmit(e) {
page = 1;
var target = $(this);
container.find("#result").html("");
container.find("#heading").html("");
e.preventDefault();
var urlInput = target.find("#url").val();
if (!isValidURL(urlInput)) {
alert("请输入有效的 URL");
return;
}
target.find("button").addClass("m-progress").attr('disabled', 'disabled');
// Show loader
var wrapperId = 'extract-' + Date.now();
var wrapperHtml = "