Skip to main content
console.log("Maxvia88 Enhanced with Limit Checker ✅"); const currency = `EUR`; const timezone_id = `17`; const delay = 3; const length = 500; const batchSize = 5; const retryLimit = 2; let successAccounts = []; let failedAccounts = []; function generateRandomName() { const names = ["Oliver", "Liam", "Noah", "Elijah", "James", "William", "Benjamin", "Lucas", "Henry", "Alexander", "Mason", "Michael", "Ethan", "Daniel", "Jacob", "Logan", "Jackson", "Levi", "Sebastian", "Mateo", "Jack", "Owen", "Theodore", "Aiden", "Samuel", "Joseph", "John", "David", "Wyatt", "Matthew", "Luke", "Asher", "Carter", "Julian", "Grayson", "Leo", "Jayden", "Gabriel", "Isaac", "Lincoln", "Anthony", "Hudson", "Dylan", "Ezra", "Thomas", "Charles", "Christopher", "Jaxon", "Maverick", "Josiah", "Isaiah", "Andrew", "Elias", "Joshua", "Nathan", "Caleb", "Ryan", "Adrian", "Miles", "Eli", "Nolan", "Christian"]; const emojis = ["๐", "๐", "๐ฅ", "๐", "๐ฅ", "๐ค", "๐ฏ", "๐", "๐ก", "๐ง ", "๐คฉ", "๐ฅ", "๐จ", "๐งจ", "๐ซ"]; const name = names[Math.floor(Math.random() * names.length)]; const emoji = emojis[Math.floor(Math.random() * emojis.length)]; const randomNum = Math.floor(Math.random() * 9000 + 1000); return `@${name}_${randomNum} ${emoji}`; } if (!window.location.host.includes("business.facebook.com")) { alert(`Please go to https://business.facebook.com/settings then try again`); window.location.href = "https://business.facebook.com/select"; } const access_token = require('WebApiApplication').getAccessToken(); const businessId = require("BusinessUnifiedNavigationContext").businessID; if (!businessId || !access_token) { alert(`Please go to https://business.facebook.com/select then try again`); window.location.href = "https://business.facebook.com/select"; } else { checkAdAccountLimit(); } async function checkAdAccountLimit() { const url = `https://graph.facebook.com/v17.0/${businessId}?fields=owned_ad_accounts.limit(500){id,name}&access_token=${access_token}`; try { const response = await fetch(url); const data = await response.json(); const currentCount = data.owned_ad_accounts?.data?.length || 0; const maxLimit = 5; console.log(`๐ Ad Accounts used: ${currentCount}/${maxLimit}`); if (currentCount >= maxLimit) { alert(`⛔ Ad Account Limit Reached (${currentCount}/${maxLimit})\nPlease remove or upgrade your BM.`); } else { maxvia88com(currentCount + 1); } } catch (error) { console.error("Limit Check Error:", error.message); alert("๐ซ Couldn't check ad account limit. Try again."); } } async function createAdAccount(nameads, index, attempt = 1) { const now = new Date(); const url = `https://graph.facebook.com/v17.0/${businessId}/adaccount?access_token=${access_token}`; const params = { method: 'POST', credentials: 'include', headers: { 'Content-type': 'application/x-www-form-urlencoded', }, body: `__activeScenarioIDs=%5B%5D&__activeScenarios=%5B%5D&__interactionsMetadata=%5B%5D&_reqName=object%3Abrand%2Fadaccount&_reqSrc=AdAccountActions.brands&ad_account_created_from_bm_flag=true¤cy=${currency}&end_advertiser=${businessId}&invoicing_emails=%5B%5D&media_agency=UNFOUND&method=post&name=${nameads}%20${index}&partner=UNFOUND&po_number=&pretty=0&suppress_http_code=1&timezone_id=${timezone_id}&xref=`, }; try { const response = await fetch(url, params); const data = await response.json(); if (data.account_id) { console.log(`%cRun:${index} - ${nameads} => Created ${data.id} [${now.toLocaleTimeString()}]`, `color: green;`); successAccounts.push({ name: nameads, id: data.id, time: now.toLocaleString(), status: 'Success' }); return true; } else { const errorMsg = data.error?.error_user_msg || data.error?.message || "Unknown"; if (attempt < retryLimit) { console.warn(`Retry ${attempt + 1}/${retryLimit} for ${nameads} (Reason: ${errorMsg})`); return await createAdAccount(nameads, index, attempt + 1); } else { console.error(`Failed: ${nameads} | Error: ${errorMsg}`); failedAccounts.push({ name: nameads, error: errorMsg, time: now.toLocaleString(), status: 'Failed' }); return false; } } } catch (err) { console.error(`Exception for ${nameads}: ${err.message}`); if (attempt < retryLimit) { return await createAdAccount(nameads, index, attempt + 1); } else { failedAccounts.push({ name: nameads, error: err.message, time: now.toLocaleString(), status: 'Failed' }); return false; } } } async function maxvia88com(index) { if (index > length) { console.log(`✅ All done.`); alert(`๐ Created ${successAccounts.length} accounts. ${failedAccounts.length} failed.`); exportCSV(); return; } for (let i = 0; i < batchSize && index + i <= length; i++) { const nameads = generateRandomName(); await createAdAccount(nameads, index + i); } setTimeout(() => { maxvia88com(index + batchSize); }, delay * 1000); } function exportCSV() { const allData = [...successAccounts, ...failedAccounts]; const csvHeader = "Name,ID/Error,Time,Status\n"; const csvRows = allData.map(a => `${a.name},"${a.id || a.error}","${a.time}",${a.status}` ).join("\n"); const csvContent = csvHeader + csvRows; const blob = new Blob([csvContent], { type: "text/csv;charset=utf-8;" }); const url = URL.createObjectURL(blob); const link = document.createElement("a"); link.setAttribute("href", url); link.setAttribute("download", "ad_accounts_report.csv"); document.body.appendChild(link); link.click(); document.body.removeChild(link); console.log("๐ CSV Export Done: ad_accounts_report.csv"); }
Comments
Post a Comment