Javascript for "dev tools mode" TAB console in Chrome (testing only on Chrome). Open page media for model (example: ) and click on first media (start slideshow mode, need for script which emulate random time user clicks on buttons). Only manipulations with DOM: script move image elements to popup window where you can download image by click on this image. JavaScript: function getRandomIntInclusive(min, max) { const minCeiled = Math.ceil(min); const maxFloored = Math.floor(max); // The maximum is inclusive and the minimum is inclusive return Math.floor(Math.random() * (maxFloored - minCeiled + 1) + minCeiled); } const timeout = async ms => new Promise(res => setTimeout(res, ms)); function to_popup(blbImg, in_val, s_begin, add_separator = false) { // blbImg = blbImg.cloneNode(true) const link = doc.createElement('a'); link.href = blbImg.src; let tpl_v1 = '' switch (typeof in_val) { case 'string': tpl_v1 = in_val break; case 'number': const sFill = '000' tpl_v1 = sFill + in_val; tpl_v1 = tpl_v1.substring(tpl_v1.length - sFill.length); break; default: tpl_v1 += in_val break; } link.download = s_begin + `${tpl_v1}.jpg`; //link.click(); link.appendChild(blbImg); const div = doc.createElement('div'); div.setAttribute('id', 'div-' + tpl_v1); div.appendChild(link); let br = doc.createElement('br'); div.appendChild(br); br = doc.createElement('br'); div.appendChild(br); let arr = myWindow.new_divs; if (arr.length > 50) { const new_arr = arr.slice(10); const arr_del = arr.slice(0, 10); for (const el of arr_del) { el.remove(); } myWindow.new_divs = new_arr; console.log('REMOVE!\n', arr_del); } myWindow.new_divs.push(div); doc.body.insertBefore(div, el_end); if (add_separator) { const blck = doc.createElement('div'); blck.innerHTML = '==============================================='; for(let ii = 0; ii < 4; ii++) { br = doc.createElement('br'); blck.appendChild(br); } doc.body.insertBefore(blck, el_end); } } const myWindow = window.open("", "","width=850,height=1080"); myWindow.new_divs = []; const doc = myWindow.document; doc.open(); doc.write('<div id="el_end"></div>'); doc.close(); const el_end = doc.getElementById('el_end'); const elNext = document.querySelector(".modal-next-button.zoom-hidden"); re = RegExp(String.raw`https?://fansly\.com/(?<model_name>[\w\.]+)/(media|posts)`, 'i'); const result = re.exec(window.location.href) //console.log(result); let m_name = 'undef'; if (null !== result) { m_name = result.groups.model_name } console.log(m_name); // Date.now().toISOString() // new Intl.DateTimeFormat('sv-SE', {timeZone: 'Asia/Jakarta', year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false, timeZoneName: 'short'}).format(new Date()) // "2021-09-02 21:19:35 GMT+7" const s_date_now = new Intl.DateTimeFormat('en-CA', { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false}) .format(Date.now()).replaceAll('-', '').replaceAll(':', '').replaceAll(', ', 'T'); const s_begin = s_date_now + '-' + m_name + '-' let popup_closed = false; const __timer = setInterval(function() { if(myWindow.closed) { clearInterval(__timer); popup_closed = true console.log('closed: ', myWindow); } }, 400); const avatar = document.querySelector(".profile-image img.image.cover"); if (null !== avatar) { to_popup(avatar, 'prof_avatar', s_begin) } const banner = document.querySelector(".profile-banner img.image.cover"); if (null !== banner) { to_popup(banner, 'prof_banner', s_begin, true) } const d_animation = 600; let ttt = 0; let first = false; for(let kkk = 0; kkk < 1000; kkk++) { if (popup_closed) { throw new Error('"myWindow" was closed!'); } // const image = document.querySelector(".modal-content .media-wrapper .view-content img.image.contain-no-grow"); const image = document.querySelector(".modal-content .view-content img.image.contain-no-grow"); if (first) { first = false } else { if (null === image) { ttt = getRandomIntInclusive(6, 8); } else { to_popup(image, kkk, s_begin) ttt = getRandomIntInclusive(16, 45); } ttt *= 100 ttt = Math.max(0, ttt - d_animation); await timeout(ttt); } elNext.click(); // animation await timeout(d_animation); }
Interact with your fans today and start selling content. Sign up today and make a free account.
fansly.com