// ==UserScript==
// @name tiktok-scraper
// @namespace https://greasyfork.org/en/users/14470-sewil
// @version 1.2.2
// @description tiktok dl links scraper
// @author Sewil
// @match https://www.tiktok.com/@*
// @require https://code.jquery.com/jquery-3.6.0.js
// @require https://cdnjs.cloudflare.com/ajax/libs/arrive/2.4.1/arrive.js
// @icon https://www.google.com/s2/favicons?sz=64&domain=tiktok.com
// @grant none
// @license MIT
// @downloadURL none
// ==/UserScript==
console.log('tiktok-scraper');
var links = new Set();
var navSelector = '[data-e2e="tiktok-logo"]';
var itemSelector = '[data-e2e="user-post-item"] a';
var linkRegex = /https:\/\/www.tiktok.com\/@[A-Za-z-\d_]+\/video\/\d+/g;
$(document).ready(function () {
setTimeout(function() {
$(navSelector).after('');
$('#tiktok-scraper_button').on('click', function () {
var json = [Array.from(links).join('\n')];
var blob = new Blob(json, { type: 'text/plain;charset=utf-8' });
var url = window.URL || window.webkitURL;
var link = url.createObjectURL(blob);
var a = $('');
a.attr('download', 'links.txt');
a.attr('href', link);
$('body').append(a);
a[0].click();
$('body').remove(a);
});
}, 2000);
console.log('tiktok-scraper ready');
$(itemSelector).each(handleLink);
$(document).arrive(itemSelector, handleLink);
function handleLink() {
var link = $(this).attr('href');
console.log('handleLink', link);
if (!link.match(linkRegex)) return;
links.add(link);
$('#tiktok-scraper_button').val(
'DL Links (' + links.size + ')'
);
}
});