Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ElevenLabs Knowledge Base Bulk Delete Script - Forward Only Version
- // This version just keeps moving forward through the list
- async function deleteAllKnowledgeBaseFiles() {
- console.log('Starting ElevenLabs Knowledge Base deletion (Forward Only)...');
- const wait = (ms) => new Promise(resolve => setTimeout(resolve, ms));
- let deletedCount = 0;
- let skippedCount = 0;
- let lastSuccessTime = Date.now();
- // Function to close any open dialogs
- async function closeDialog() {
- const cancelButton = Array.from(document.querySelectorAll('button')).find(btn =>
- btn.textContent?.trim() === 'Cancel' && btn.offsetParent !== null
- );
- if (cancelButton) {
- cancelButton.click();
- await wait(1000);
- } else {
- document.body.click();
- await wait(500);
- }
- }
- async function tryDeleteAt(index) {
- const menuButtons = document.querySelectorAll('button[aria-label="Document actions"]');
- if (index >= menuButtons.length) {
- return 'end_of_list';
- }
- const menuButton = menuButtons[index];
- const row = menuButton.closest('tr');
- let fileName = 'Unknown';
- if (row) {
- const nameCell = row.querySelector('td:first-child');
- if (nameCell) {
- const link = nameCell.querySelector('a');
- fileName = link ? link.textContent.trim() : nameCell.textContent.trim();
- }
- }
- console.log(`\n--- Trying position ${index + 1}/${menuButtons.length}: ${fileName} ---`);
- try {
- // Step 1: Click menu
- console.log('Opening menu...');
- menuButton.scrollIntoView({ behavior: 'smooth', block: 'center' });
- await wait(500);
- menuButton.click();
- await wait(2000);
- // Step 2: Click delete
- const deleteOption = document.querySelector('[data-value="Delete document"]');
- if (!deleteOption) {
- console.log('❌ No delete option, skipping...');
- await closeDialog();
- skippedCount++;
- return 'skip';
- }
- deleteOption.click();
- await wait(2000);
- // Step 3: Confirm
- const deleteButton = Array.from(document.querySelectorAll('button')).find(btn => {
- const text = btn.textContent?.trim();
- const isVisible = btn.offsetParent !== null;
- const isInDialog = btn.closest('[role="dialog"], [role="alertdialog"]');
- return isVisible && isInDialog && text === 'Delete';
- });
- if (!deleteButton) {
- console.log('❌ No confirm button, skipping...');
- await closeDialog();
- skippedCount++;
- return 'skip';
- }
- deleteButton.click();
- deletedCount++;
- lastSuccessTime = Date.now();
- console.log(`✅ Deleted! Total: ${deletedCount}`);
- // Wait for page update
- await wait(7000);
- return 'success';
- } catch (error) {
- console.log('❌ Error, skipping...');
- await closeDialog();
- skippedCount++;
- return 'skip';
- }
- }
- // Main loop - just go through the list
- console.log('\n=== Starting forward-only deletion ===\n');
- let position = 0;
- let noProgressCycles = 0;
- while (true) {
- const menuButtons = document.querySelectorAll('button[aria-label="Document actions"]');
- if (menuButtons.length === 0) {
- console.log('\n✅ No more files!');
- break;
- }
- // If we've gone through the whole list without deleting anything
- if (position >= menuButtons.length) {
- noProgressCycles++;
- if (noProgressCycles >= 2) {
- console.log('\n⚠️ Went through entire list twice with no deletions.');
- console.log('The remaining files may have issues. Try refreshing.');
- break;
- }
- console.log('\n🔄 Reached end of list, starting from top...\n');
- position = 0;
- await wait(3000);
- continue;
- }
- const result = await tryDeleteAt(position);
- if (result === 'success') {
- // Reset to start after successful deletion
- position = 0;
- noProgressCycles = 0;
- } else {
- // Move to next position
- position++;
- }
- // Check if we've been stuck too long
- const timeSinceSuccess = Date.now() - lastSuccessTime;
- if (timeSinceSuccess > 120000) { // 2 minutes
- console.log('\n⏱️ No successful deletions in 2 minutes, stopping...');
- break;
- }
- await wait(1000);
- }
- console.log('\n=== Final Results ===');
- console.log(`✅ Deleted: ${deletedCount} files`);
- console.log(`⏭️ Skipped: ${skippedCount} attempts`);
- }
- // Status check
- function status() {
- const files = document.querySelectorAll('button[aria-label="Document actions"]').length;
- console.log(`Files remaining: ${files}`);
- }
- // Instructions
- console.log('=== ElevenLabs KB Delete (Forward Only) ===');
- console.log('This version keeps moving forward through the list.');
- console.log('\nCommands:');
- console.log('- status() : Check remaining files');
- console.log('\nStarting in 3 seconds...\n');
- setTimeout(() => {
- deleteAllKnowledgeBaseFiles();
- }, 3000);
Advertisement
Add Comment
Please, Sign In to add comment