NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name BLRepost // @namespace Script Runner Pro2 // @match https://m.bukalapak.com/c/* // @match https://m.bukalapak.com/u/* // @match https://seller.bukalapak.com/product/new* // @version 1.0.9 // @date 2020-08-08 // @description Repost BL // @homepage https://github.com/agusibrahim // @author agusibrahim // @grant none // @license MIT // ==/UserScript== // Script by agusibrahim // https://github.com/agusibrahim var MARKUP_HARGA=1000; var REDUCE_STOCK=1; // 50 persen var Bind=function e(n){"use strict";function t(e){return(e+"").replace(/[<>]/g,function(e){return{">":">","<":"<"}[e]})}function r(e,n){for(var t=e.length,r=0;t>r;r++)n(e[r],r,e)}function i(e,n){var t="pop push reverse shift sort splice unshift".split(" ");r(t,function(t){this[t]=function(){this.__dirty=!0;var r=a({},l[t].apply(this,arguments));return delete this.__dirty,e&&n.ready&&e(this),r}.bind(this)}.bind(this));var i=this.length;return Object.defineProperty(this,"length",{configurable:!1,enumerable:!0,set:function(e){if(this.__dirty)return void(i=e);var n=1*e;return i!==n&&(n>i?this.push.apply(this,new Array(n-i)):this.splice(n),i=n),e},get:function(){return i}}),this}function c(l,d,p,y){if(y||(y=[]),p.ready&&d.__callback)return l;if(d instanceof e)return d;var v;try{var b=p.context||document;v=b.querySelectorAll.bind(b)}catch(g){}return r(Object.getOwnPropertyNames(d),function(e){if("__callback"!==e){var b,g=d[e],k=[].slice.call(y),_=function(e){return t(e)},m=f;k.push(e);var O=p.mapping[k.join(".")];o&&console.log("key: %s / %s",e,k.join("."),O),O&&"[object Object]"===O.toString()&&(O.callback&&(b=O.callback),O.transform&&(_=h(O.transform.bind({safe:t}))),O.parse&&(m=h(O.parse)),O=O.dom);var j;if("string"==typeof O?j=v(O||"☺"):n.Element&&O instanceof n.Element&&(j=[O]),"function"==typeof O)b=O;else if(j){0===j.length&&console.warn('No elements found against "'+O+'" selector');var A=["OPTION","INPUT","PROGRESS","TEXTAREA"];(null===g||void 0===g)&&(g=m(-1!==A.indexOf(j[0].nodeName)?j[0].hasOwnProperty("checked")?"on"===j[0].value?j[0].checked:j[0].value:j[0].value:j[0].innerHTML));var E=b;b=function(e){j=v(O||"☺"),j&&r(j,function(n){if(!n.__dirty)if(-1!==A.indexOf(n.nodeName)){var t=_(e,l);if("checkbox"===n.type)if(e instanceof Array){var i=e.filter(function(e){return e===n.value?(n.checked=n.value===e,!0):void 0});0===i.length&&(n.checked=!1)}else"boolean"==typeof e&&(n.checked=e);else if("radio"===n.type)n.checked=n.value===t;else if("number"==typeof n.value)try{n.value=1*t}catch(c){console.error(c.message)}else n.value=t}else{e instanceof Array||(e=[e]);var a=[];r(e,function(e){a.push(_(e,l))}),"object"==typeof a[0]?(n.innerHTML="",a.forEach(function(e){n.appendChild(e)})):n.innerHTML=a.join("")}}),E&&E.apply(l,arguments)},r(j,function(n){if("INPUT"===n.nodeName||"SELECT"===n.nodeName||"TEXTAREA"===n.nodeName){var t=function(){this.__dirty=!0;var t;if("checkbox"===n.type){var i=(n.form||document).querySelectorAll('input[name="'+n.name+'"][type="checkbox"]');if(l[e]instanceof Array){var c=[];r(i,function(e){e.checked&&c.push(m("on"===e.value?e.checked:e.value))}),t=c}else t=m("on"===this.value?this.checked:this.value)}else"radio"===n.type&&(t=m("on"===this.value?this.checked:this.value)),t=m("number"==typeof l[e]?1*this.value:this.value);void 0===t&&(t=this.value),l[e]=t,this.__dirty=!1},i={checkbox:"change",radio:"change"}[n.type];n.addEventListener(i||"input",t)}})}b&&k.reduce(function(e,n,t,r){return e[n]||(e[n]={}),t===r.length-1&&(e[n].__callback=b),e[n]},p.callbacks);var N=function(n){var t=[],r=[],i=p.instance,c=!1,l=!1;o&&console.log("> finding callback for %s",e,k),k.reduce(function(e,o,s){if(e&&e[o]&&o){if(i=i[o],null===i||void 0===i)return e[o]||{};if("function"==typeof e[o].__callback){var u=s===k.length-1?n:i;i.__dirty&&(c=!0),s===k.length-1&&e[o].__callback&&(l={path:k.join("."),callback:e[o].__callback,instance:u}),c||(r.push(a(u instanceof Array?[]:{},u)),t.push(e[o].__callback))}return e[o]||{}}},p.callbacks),c||(r.reverse(),t.reverse().forEach(function(e,n){e.call(p.instance,r[n])})),c&&l&&(i=l.instance,l.callback.call(p.instance,a(i instanceof Array?[]:{},i)))},P={configurable:!0,enumerable:!0,set:function(n){var t=g!==n?g:void 0;g=!p.ready||typeof n!==u||null===n||s(n)||n.__callback?s(n)?c(new i(N,p),n,p,k):n:c(l[e]?a({},l[e]):{},n,p,k),o&&console.log("set: key(%s): %s -> %s",e,JSON.stringify(t),JSON.stringify(n)),p.ready?N(g):"undefined"!=typeof p.mapping[k.join(".")]&&p.deferred.push(N.bind(l,g,t))},get:function(){return g}};try{Object.defineProperty(l,e,P)}catch(x){o&&console.log("failed on Object.defineProperty",x.toString(),x.stack)}typeof g!==u||null===g||s(g)?s(g)?l[e]=c(new i(N,p),g,p,k):l instanceof i||(l[e]=g):l[e]=c(l[e]||{},g,p,k)}}),l instanceof i&&l.push.apply(l,d),l}function a(n,t){return t instanceof Object?(r(Object.getOwnPropertyNames(t),function(r){var i=t[r];e.prototype[r]||"__callback"===r||(typeof i===u&&null!==i&&i instanceof Array?n[r]=[].map.call(i,function(e){return e instanceof Object?a(n[r]||{},e):e}):typeof i!==u||null===i||s(i)||"[Object object]"!==i.toString?n[r]=i:n[r]=a(n[r]||{},i))}),n):t}function e(t,i,a){if(!this||this===n)return new e(t,i);var o={context:a||n.document,mapping:i||{},callbacks:{},deferred:[],ready:!1,instance:this};return c(this,t,o),o.ready=!0,o.deferred.length&&r(o.deferred,function(e){e()}),this}if(!Function.bind||!Object.defineProperty)throw new Error("Prerequisite APIs not available.");var o=!1,l=[],s=Array.isArray,u="object",f=function(e){return e},h=function(e){return function(){try{return e.apply(this,arguments)}catch(n){console.error(n.stack?n.stack:n)}}};return i.prototype=[],e.prototype.__export=function(){return a({},this)},e}(this);"undefined"!=typeof exports&&(module.exports=Bind); var my_awesome_script = document.createElement('script'); my_awesome_script.setAttribute('src','https://cdn.jsdelivr.net/npm/sweetalert2@9'); document.head.appendChild(my_awesome_script); var style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = '.titleredd { filter: sepia(6%) brightness(29%) saturate(0%); -webkit-filter: sepia(6%) brightness(29%) saturate(0%); -moz-filter: sepia(6%) brightness(29%) saturate(0%); }'; document.getElementsByTagName('head')[0].appendChild(style); var btn = document.createElement('button'); btn.classList.add('c-header__action__btn'); btn.innerText="All" btn.id="selectall" btn.style.cssText="display: none;" var btnd = document.createElement('button'); btnd.classList.add('c-header__action__btn'); btnd.innerHTML='<span class="c-icon c-icon--reply c-icon--with-bubble"><i class="c-icon__bubble c-icon__bubble--counter">0</i></span>' btnd.id="dwnld" btnd.style.cssText="display: none;" btnd.addEventListener("click",async (c)=>{ //alert("ok") var tt=document.getElementsByClassName("titleredd"); if((await Swal.fire({ title: 'Posting Produk', text: "Yakin ingin memposting "+tt.length+" produk ini ke lapak Anda?", showCancelButton: true, confirmButtonColor: '#d71149', cancelButtonColor: '#ccc',imageUrl: 'https://static-jengririz.bukalapak.com/images/illustrations/upgrade-super-seller.png',imageWidth: 200, imageHeight: 200, confirmButtonText: 'Ya' })).isConfirmed){ PostBegin() } },false); let observer = new MutationObserver((mutations) => { mutations.forEach((mutation) => { if (!mutation.addedNodes) return for (let i = 0; i < mutation.addedNodes.length; i++) { // do things to your newly added nodes here let node = mutation.addedNodes[i] //console.log(node) try{ var pl=node.getElementsByClassName("c-product-card").length if(pl>1) { document.getElementsByClassName("c-header__action--right")[0].children[2].remove() hijackProduct() } }catch(cv){} try{ var pl=node.getElementsByClassName("bl-flex-item").length if(pl>1) { //hijackProduct(false) } }catch(cv){} try{ var pl=node.querySelectorAll("input[name='condition_filter']").length if(pl>0 && node.classList.contains("c-input-wrapper")) { appendCtrlPanel(node) } }catch(c){} } }) }) observer.observe(document.body, { childList: true , subtree: true , attributes: false , characterData: false }) function appendCtrlPanel(node){ if(node.querySelector("#blrpanel")) return; var pl=document.querySelector(".c-overlay-scr__content__inner__sidebar ul").children[0]; pl.style.fontWeight="bold" pl.innerText="🛠 Repost Panel" var e = document.createElement('div'); e.id="blrpanel" e.innerHTML = "<div style=\"padding-left: 15px;padding-right:15px;padding-top:15px\"><label>Title Template<\/label> <div class=\"c-input-grp-table u-mrgn-top--3\"> <input id=\"tmp_title\" type=\"text\" class=\"c-input-text\" value=\"%s\"><\/div><\/div><div style=\"padding-left: 15px;padding-right:15px;padding-top:15px\"><label>Desc. Template<\/label> <div class=\"c-input-grp-table u-mrgn-top--3\"> <textarea id=\"tmp_desc\" type=\"text\" class=\"c-input-text\" style=\"height: 100px;\">%s\r\n<\/textarea><\/div><\/div><div style=\"padding-left: 15px;padding-right:15px;padding-top:15px\"><label>Desc. Trim<\/label> <div class=\"c-input-grp-table u-mrgn-top--3\"> <input id=\"desc_trim\" type=\"text\" class=\"c-input-text\"><\/div><\/div><div style=\"padding: 15px\"><label>Markup<\/label> <div class=\"c-input-grp-table u-mrgn-top--3\"> <input id=\"price_markup\" type=\"number\" max=\"100\" min=\"0\" class=\"c-input-text\"><div class=\"c-input__ctx\">%<\/div><\/div><\/div>\r\n<div style=\"padding-left: 15px;padding-right:15px;padding-bottom:15px\"> <label>Conditional Markup</label><div id=\"cond_markup\" class=\"u-mrgn-top--2\"></div><div class=\"c-input-grp-table\" style=\"margin-left: 5px\"> <label id=\"cond_act_add\" onclick=\"actcond_Add()\" style=\"color: #d71448;font-size: 10px;font-weight: bold\">Add</label><label id=\"cond_act_rem\" onclick=\"actcond_Rem()\" style=\"color: #d71448;font-size: 10px;font-weight: bold;margin-left:10px\">Remove</label></div></div>\r\n<div style=\"padding-left: 15px;padding-right:15px\"><label>Watermark Text<\/label> <div class=\"c-input-grp-table u-mrgn-top--3\"> <input id=\"photo_wm_txt\" type=\"text\" placeholder=\"\" class=\"c-input-text\"><\/div><\/div><div style=\"padding-left: 15px;padding-right:15px;padding-top:15px\"><label>Watermark Img (URL)<\/label> <div class=\"c-input-grp-table u-mrgn-top--3\"> <input id=\"photo_wm_url\" type=\"text\" placeholder=\"https:\/\/sss.com\/ccc\/img.png\" class=\"c-input-text\"><\/div><\/div><div style=\"display:none;padding-left: 15px;padding-right:15px;padding-top:15px\"><label>Closing Photo (ID)<\/label> <div class=\"c-input-grp-table u-mrgn-top--3\"> <input id=\"photo_closing\" type=\"text\" placeholder=\"12345678\" class=\"c-input-text\"><\/div><p style=\"color: #aaa;font-size:10px;margin-top:5px\">Isi menggunakan ID Photo. Caranya <a target=\"_blank\" href='https://seller.bukalapak.com/product/new'>UPLOAD FOTO DISINI</a> trus catat ID Photo yang muncul<\/p><\/div><div style=\"padding-left: 15px;padding-right:15px\"><label>Stock Reducer (percent)<\/label> <div class=\"c-input-grp-table u-mrgn-top--3\"> <input id=\"stock_red\" type=\"number\" placeholder=\"30\" max=\"100\" min=\"0\" class=\"c-input-text\"><div class=\"c-input__ctx\">%<\/div><\/div><p style=\"color: #aaa;font-size:10px;margin-top:5px\">Pengurangan stok dari toko asli, hitungan persen<\/p><\/div><button class=\"c-btn c-btn--block c-btn--red c-btn--large\" id=\"blrsave\" onclick=\"saveBlrPanel()\">Simpan</button><div style=\"margin-top:100px;\">..<\/div>"; node.append(e) } function getallconditionalmarkupvalue(allowzero=true){ var cl=document.getElementsByClassName("cond_input") var vv=[] for(var i in cl){ var d=cl[i] if(!d.children) continue var key=Number(d.children[0].value) var val=Number(d.children[2].value) if(allowzero||(key>0&&val>0)) vv.push([key,val]) } return vv } window.saveBlrPanel= function(){ document.getElementsByClassName("c-icon--close")[2].parentElement.click() var dd=JSON.parse(JSON.stringify(window.settingsdata)) dd.price_markup_cond=getallconditionalmarkupvalue(false) //console.log(JSON.stringify(window.settingsdata)) //console.log(JSON.stringify(getallconditionalmarkupvalue())) localStorage.setItem("blrset",JSON.stringify(dd)); } window.actcond_Rem=function(){ window.settingsdata.price_markup_cond=getallconditionalmarkupvalue() if(window.settingsdata.price_markup_cond.length>1) window.settingsdata.price_markup_cond.splice(-1,1) window.settingsdata.action_cond_rem=window.settingsdata.price_markup_cond.length>1; } window.actcond_Add=function(){ /*price_markup_cond:["100:20","300:35"], action_cond_add: true, action_cond_rem: false*/ window.settingsdata.price_markup_cond=getallconditionalmarkupvalue() window.settingsdata.price_markup_cond.push(":") window.settingsdata.action_cond_rem=window.settingsdata.price_markup_cond.length>1; } async function PostBegin(){ var isfromcat=window.location.href.match(/bukalapak\.com\/c/) var tt=document.getElementsByClassName("titleredd"); for(var i=0;i<tt.length;i++){ var link=null; if(isfromcat) link=tt[i].parentElement.parentElement.getAttribute("href").replace("m.bukalapak.com","www.bukalapak.com") else link=tt[i].parentElement.parentElement.parentElement.getAttribute("href").replace("m.bukalapak.com","www.bukalapak.com").split("\?")[0] var stat=null; if(isfromcat) stat=tt[i].parentElement.parentElement.getElementsByClassName("c-product-card__meta")[1] else stat=tt[i].parentElement.parentElement.parentElement.parentElement.parentElement.getElementsByClassName("c-product-rating__count")[0] console.log(tt[i].parentElement.parentElement.parentElement.parentElement.parentElement.parentElement) stat.style.color="#ff0000" stat.innerText="waiting..." for(var d=0;d<window.dataproduk.length;d++){ if(window.dataproduk[d].url==link){ var prod=window.dataproduk[d] for(var m=0;m<prod.images.large_urls.length;m++){ //console.log(await MarkPlease(prod.images.large_urls[m], "Agus Sulkhi Store")); var img=prod.images.large_urls[m] //console.log(img) //uploadimg(img) } doPostProduk(prod,stat) //dummyprocess(stat) } } } } async function dummyprocess(stat){ stat.innerText="upload img..." await delay(3000); stat.innerText="posting..." await delay(2000); stat.innerText="DONE" stat.style.color="#00dd00" } function delay(t, v) { return new Promise(function(resolve) { setTimeout(resolve.bind(null, v), t) }); } async function doPostProduk(prod,stat){ if(!stat.innerText.startsWith("wait")) return; console.log("---- upload multi...") var imu=await uploadimgs(prod.images.large_urls,stat) console.log("---- POST PRODUK") stat.innerText="⏳ POSTING..." var r=await postProduk(prod, imu,stat) var statdata=stat.getAttribute("data") if(statdata){ stat.setAttribute("data", JSON.stringify(r)) }else{ stat.setAttribute("data", JSON.stringify(r)) stat.addEventListener("click",(v)=>{v.preventDefault();v.stopPropagation();showstatus(JSON.parse(stat.getAttribute("data")))}) } //stat.innerText="✅ DONE" console.log("---- OK OK") } async function postProduk(data,imgs,stat){ return new Promise(async (oke,not)=>{ var payload={ "id": 0, "new": true, "name": null, "price": null, "description_bb": null, "description": null, "weight": null, "stock": null, "category_id": null, "category_id_edit": 0, "image_ids": imgs, "imported": false, "save_as_draft": false, "force_insurance": false, "video_url": "", "min_quantity": 1, "max_quantity": null, "free_shipping": [], "sku_name": "", "tag_page_ids": [], "specification": [ { "name": "brand", "value": [ "" ] } ], "attributes": [ { "name": "brand", "value": [ "" ] } ], "wholesales": [], "label_ids": [], "sla": { "type": null, "value": null }, "primary_image_id": imgs[0], "couriers": [], "insta_flag": false, "page_from": "", "clone_product": false, "crop_flag": false, "socmed_message": "", "share_to_facebook": false, "share_to_twitter": false, "product_skus": [], "with_variant": false, "flexible_variant": false, "dimensions": { "length": null, "width": null, "height": null }, "international_shipping": false, "catalog_id": "" }; var res={} for (var key in payload){ if(payload[key]==null) res[key]=data[key] else res[key]=payload[key] res["description_bb"]=data.description_bb res["description"]=data.description_bb res["category_id"]=data.category.id } var outprice=data.price var haschange=false for(var f in window.settingsdata.price_markup_cond){ var pr=window.settingsdata.price_markup_cond[f][0] var mup=window.settingsdata.price_markup_cond[f][1] if(pr<1) continue if(data.price<=pr){ outprice=(data.price*mup)/100 haschange=true break } } if(!haschange && window.settingsdata.price_markup>0) outprice=(data.price*window.settingsdata.price_markup)/100 if(window.settingsdata.template_title) res.name=window.settingsdata.template_title.replace("%s", res.name) var tmpdes=window.settingsdata.template_desc.replace("%s", data.description) if(window.settingsdata.trim_desc) tmpdes=tmpdes.replace(new RegExp(window.settingsdata.trim_desc, "g"),"") if(window.settingsdata.template_desc){ res.description=tmpdes res.description_bb=tmpdes } res["price"]=data.price+outprice if(window.settingsdata.stock_red) res.stock=Number((data.stock*window.settingsdata.stock_red)/100).toFixed() if(res.stock<1) res.stock=1 var closingp=Number(window.settingsdata.img_closing) if(closingp && res.image_ids.length<5)res.image_ids.push(closingp) //res["stock"]=0 /*await delay(2000) stat.innerText="✅ DONE" console.log(JSON.stringify(res)) if(true) return;*/ console.log(JSON.stringify(res)) var pp=fetch('https://api.bukalapak.com/products?access_token='+window.bltoken, { method: 'POST', headers: { 'authority': 'api.bukalapak.com', 'accept': 'application/json', 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36 OPR/69.0.3686.77', 'content-type': 'application/json', 'origin': 'https://seller.bukalapak.com', 'sec-fetch-site': 'same-site', 'sec-fetch-mode': 'cors', 'sec-fetch-dest': 'empty', 'referer': 'https://seller.bukalapak.com/product/new', 'accept-language': 'en-US,en;q=0.9', 'Content-Type': 'application/json; charset=UTF-8' }, body: JSON.stringify(res) }); var result=null; pp.then((response) => { result= response.json(); if (response.ok) { stat.innerText="✅ DONE" } else { stat.innerText="❌ ERR." } oke(result) }) .then((responseJson) => { result= responseJson oke(result) }) .catch((error) => { result=error stat.innerText="❌ ERR." oke(result) }); }); //console.log(await pp.json()) //console.log(await pp.json()) } function showstatus(data){ alert(JSON.stringify(data)) } function watermarkedDataURL(canvas,text){ var tempCanvas=document.createElement('canvas'); var tempCtx=tempCanvas.getContext('2d'); var cw,ch; cw=tempCanvas.width=canvas.width; ch=tempCanvas.height=canvas.height; tempCtx.drawImage(canvas,0,0); tempCtx.font="24px verdana"; var textWidth=tempCtx.measureText(text).width; tempCtx.globalAlpha=.50; tempCtx.fillStyle='white' tempCtx.fillText(text,cw-textWidth-10,ch-20); tempCtx.fillStyle='black' tempCtx.fillText(text,cw-textWidth-10+2,ch-20+2); // just testing by adding tempCanvas to document document.body.appendChild(tempCanvas); return(tempCanvas.toDataURL()); } window.MarkPlease =function(xurl, ttx){ return new Promise((resolve, reject) => { var canvas=document.createElement('canvas'); var ctx=canvas.getContext("2d"); var cw=canvas.width; var ch=canvas.height; var img=new Image(); img.crossOrigin='anonymous'; img.onload=start; img.src=xurl; async function start(){ canvas.width=img.width; canvas.height=img.height; ctx.drawImage(img,0,0); if(window.settingsdata.wm_img){ var imgf=await markingimg(window.settingsdata.wm_img) ctx.drawImage(imgf,0,img.height-imgf.height); }else if(window.settingsdata.wm_text){ resolve( watermarkedDataURL(canvas,window.settingsdata.wm_text) ); return; } //non watermark: resolve(canvas.toDataURL()) //resolve( watermarkedDataURL(canvas,ttx) ); resolve(canvas.toDataURL()) } }); } function markingimg(imgurl){ return new Promise((oke,not)=>{ var imgf=new Image(); imgf.crossOrigin='anonymous'; imgf.onload=()=>{ oke(imgf); } imgf.src=imgurl; }) } async function uploadimgs(urls,stat){ var s=[]; for(var i=0;i<urls.length;i++){ try{ stat.innerText="📷 PHOTO "+(i+1) var uu=await uploadimg(urls[i]) s.push(uu.data.id) }catch(err){} } return s; } async function uploadimg(url){ var imgdata=await MarkPlease(url, "c") var rr=await fetch('https://api.bukalapak.com/images?access_token='+window.bltoken, { method: 'POST', headers: { 'authority': 'api.bukalapak.com', 'accept': 'application/json', 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36 OPR/69.0.3686.77', 'content-type': 'application/json', 'origin': 'https://seller.bukalapak.com', 'sec-fetch-site': 'same-site', 'sec-fetch-mode': 'cors', 'sec-fetch-dest': 'empty', 'referer': 'https://seller.bukalapak.com/product/new', 'accept-language': 'en-US,en;q=0.9', 'Content-Type': 'application/json; charset=UTF-8' }, body: JSON.stringify({"image":imgdata}) }); return await rr.json() } function hijackProduct(cat=true) { if(document.querySelectorAll("input[name='condition_filter']").length>1){ var node=document.querySelector("input[name='condition_filter']").parentElement.parentElement.parentElement.parentElement node.children[0].style.display="none" appendCtrlPanel(node) } var sett={ template_title: "%s", template_desc: "%s", trim_desc:"", price_markup:10, wm_text:"", wm_img:"", img_closing:"", stock_red:0, price_markup_cond:[], action_cond_add: true, action_cond_rem: false } if(localStorage.getItem("blrset")===null){ localStorage.setItem("blrset",JSON.stringify(sett)) }else{ sett=JSON.parse(localStorage.getItem("blrset")) } sett.action_cond_rem=sett.price_markup_cond.length>0; if(sett.price_markup_cond.length<1) sett.price_markup_cond.push([0,0]) window.settingsdata = Bind(sett, { template_title: "#tmp_title", template_desc: "#tmp_desc", trim_desc:"#desc_trim", price_markup:"#price_markup", wm_text:"#photo_wm_txt", wm_img:"#photo_wm_url", img_closing:"#photo_closing", stock_red:"#stock_red", price_markup_cond: { dom: "#cond_markup", transform: (v)=>{ return "<div class=\"c-input-grp-table u-mrgn-top--1 cond_input\"> <input min=\"0\" value="+v[0]+" class=\"c-input-text\" placeholder=\"Rp\" type=\"number\"><div class=\"c-input__ctx\">≤</div> <input max=\"100\" min=\"0\" style=\"width:70px\" value="+v[1]+" class=\"c-input-text\" placeholder=\"%\" type=\"number\"></div>"; } }, action_cond_add: { dom: "#cond_act_add", transform: (v)=>{ return v?"Add":""; } }, action_cond_rem: { dom: "#cond_act_rem", transform: (v)=>{ return v?"Remove":""; } } }); document.getElementsByClassName("c-header__action--right")[0].appendChild(btn) document.getElementsByClassName("c-header__action--right")[0].appendChild(btnd) if(cat)var tt = document.getElementsByClassName("c-product-image") else tt = document.getElementsByClassName("ratio-container") for (var x = 0; x < tt.length; x++) { if(tt[x].classList.contains("hijackprod")) continue tt[x].addEventListener("click", (x) => { x.preventDefault(); x.stopPropagation(); // console.log(x.target.parentElement.parentElement.parentElement) var link=null; if(!cat) link=x.target.parentElement.parentElement.parentElement.getAttribute("href") else link=x.target.parentElement.parentElement.getAttribute("href") if(!link) return; link=link.replace("m.bukalapak.com","www.bukalapak.com") x.target.classList.toggle("titleredd") //document.getElementById("selectall").style.display=document.getElementsByClassName("titleredd").length>0?"inline":"none"; document.getElementById("dwnld").style.display=document.getElementsByClassName("titleredd").length>0?"inline":"none"; document.getElementById("dwnld").children[0].children[0].innerText=document.getElementsByClassName("titleredd").length+""; //document.getElementsByClassName("titleredd").length }, false); tt[x].classList.add("hijackprod") } } var proxied = window.XMLHttpRequest.prototype.send; window.XMLHttpRequest.prototype.send = function() { //console.log( arguments ); //Here is where you can add any code to process the request. //If you want to pass the Ajax request object, pass the 'pointer' below var pointer = this var intervalId = window.setInterval(function(){ if(pointer.readyState != 4){ return; } //console.log( pointer.responseURL ); if(pointer.responseURL.toString().match(/com\/images\?/)&&window.location.href.match(/.*com\/product\/new.*/)){ var idp=JSON.parse(pointer.responseText).data.id document.getElementsByClassName("c-upload-image__outline")[0].innerHTML="<strong style='color:red'>ID Photo: "+idp+"</strong>" } if(pointer.responseURL.toString().match(/.*\/carts\?identity=.*/)){ if(document.getElementsByClassName("hijackprod").length != document.getElementsByClassName("c-product-image").length){ //document.getElementsByClassName("c-header__action--right")[0].children[2].remove() //hijackProduct() } } if(pointer.responseURL.toString().match(/\?category_id=/)){ //alert("ok "+pointer.responseURL) window.bltoken=pointer.responseURL.split("access_token=")[1].split("&")[0] if(window.dataproduk==null){ window.dataproduk=JSON.parse(pointer.responseText).data //console.log("1: "+JSON.stringify( window.dataproduk.data)) }else{ //console.log("2: "+JSON.stringify(JSON.parse(pointer.responseText).data)) window.dataproduk=window.dataproduk.concat(JSON.parse(pointer.responseText).data) } } if(pointer.responseURL.toString().match(/.*\/products\?.*/) ){ //console.log(pointer.responseURL+" OK data: "+pointer.responseText) window.bltoken=pointer.responseURL.split("access_token=")[1].split("&")[0] var son=JSON.parse(pointer.responseText); if(window.dataproduk==null){ window.dataproduk=son.data }else{ window.dataproduk=window.dataproduk.concat(son.data) } hijackProduct(false) } if(pointer.responseURL.toString().match(/.*\/product-highlights.*/) ){ var son=JSON.parse(pointer.responseText); if(window.dataproduk==null){ window.dataproduk=[] } for(var d in son.data){ console.log(son.data[d].products) // window.dataproduk.concat(son.data[d].products) for(var f in son.data[d].products){ window.dataproduk.push(son.data[d].products[f]) } } } //Here is where you can add any code to process the response. //If you want to pass the Ajax request object, pass the 'pointer' below clearInterval(intervalId); }, 1);//I found a delay of 1 to be sufficient, modify it as you need. return proxied.apply(this, [].slice.call(arguments)); };