您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
RELIST
// ==UserScript== // @name HAPUS TAWARAN // @namespace https://www.facebook.com/behesty7 // @version 1.2 // @description RELIST // @author BEHESTY // @match https://www.facebook.com/marketplace/selling/relist_items/?is_routable_dialog=* // @grant none // @license MIT // ==/UserScript== (function () { 'use strict'; let running = true; const logBox = document.createElement('div'); Object.assign(logBox.style, { position: 'fixed', bottom: '10px', right: '10px', background: 'rgba(0,0,0,0.8)', color: '#fff', padding: '10px', maxHeight: '300px', overflowY: 'auto', fontSize: '12px', zIndex: '9999', borderRadius: '8px', whiteSpace: 'pre-line', }); logBox.innerText = '📢 Auto Relist FB Marketplace\n'; document.body.appendChild(logBox); function log(message) { const logBox = document.getElementById('terminator-log'); if (logBox) { const timestamp = new Date().toLocaleTimeString(); logBox.value += `[${timestamp}] ${message}\n`; logBox.scrollTop = logBox.scrollHeight; } } function delay(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function countdown(seconds) { for (let i = seconds; i > 0; i--) { if (!running) { log('⏹ Dihentikan saat countdown.'); return; } log(`⏳ Menunggu ${i} detik...`); await delay(1000); } } async function waitForElement(selector, maxTries = 60, interval = 500) { for (let i = 0; i < maxTries; i++) { const el = document.querySelector(selector); if (el && el.offsetHeight > 0) return el; await delay(interval); } return null; } async function clickToBeRelistedIfAvailable() { log('🔎 Mencari tombol "Untuk dihapus & ditawarkan ulang"...'); for (let i = 0; i < 60; i++) { const anchors = Array.from(document.querySelectorAll('a[role="link"]')) .filter(a => a.innerText.includes('Untuk dihapus & ditawarkan ulang') && a.offsetHeight > 0); const btn = anchors[0]; if (btn) { const match = btn.innerText.match(/\d+/); const count = match ? parseInt(match[0]) : 0; if (count > 0) { log(`📌 Klik "Untuk dihapus & ditawarkan ulang" (${count} listing)`); btn.scrollIntoView({ behavior: 'smooth', block: 'center' }); btn.click(); return true; } else { log('✅ Jumlah "Untuk dihapus & ditawarkan ulang" = 0. Menghentikan proses.'); return false; } } await delay(500); } log('⚠️ Tidak menemukan tombol "Untuk dihapus & ditawarkan ulang".'); return false; } async function clickRelistAllButton() { log('🔎 Mencari tombol "Hapus & Tawarkan Ulang Semua Barang Lainnya"...'); const selector = 'div[aria-label="Hapus & Tawarkan Ulang Semua Barang Lainnya"]'; const btn = await waitForElement(selector); if (btn) { log('🔁 Klik tombol "Hapus & Tawarkan Ulang Semua Barang Lainnya"...'); btn.scrollIntoView({ behavior: 'smooth', block: 'center' }); btn.click(); return true; } else { log('⚠️ Tombol "Hapus & Tawarkan Ulang Semua Barang Lainnya" tidak ditemukan.'); return false; } } async function clickDoneButton() { log('🔎 Menunggu tombol "Selesai"...'); const selector = 'div[aria-label="Selesai"]'; const doneBtn = await waitForElement(selector); if (doneBtn) { log('✅ Klik tombol "Selesai"...'); doneBtn.scrollIntoView({ behavior: 'smooth', block: 'center' }); doneBtn.click(); return true; } else { log('⚠️ Tombol "Selesai" tidak ditemukan.'); return false; } } async function mainLoop() { while (true) { const hasRelist = await clickRelistAllButton(); if (!hasRelist) break; await delay(5000); await clickDoneButton(); log('🔄 Memuat ulang halaman untuk siklus berikutnya...'); await countdown(5); window.location.href = 'https://www.facebook.com/marketplace/selling/relist_items/?is_routable_dialog=true&show_only_delete_and_relist=true'; break; // agar reload bisa menjalankan siklus ulang } log('🏁 Proses selesai.'); } setTimeout(mainLoop, 2000); })();