import urllib.request import json import base64 import time url_base_kadence = "https://howdoyouconvert.com/wp-json/wp/v2/kadence_element/" creds = base64.b64encode(b"ben:6YGf wVxu gBpz pkqx BGZO lfVP").decode("utf-8") headers = { "Content-Type": "application/json", "Authorization": "Basic " + creds, "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" } def patch_element(element_id, title, js_logic): print(f"Updating Element {element_id}: {title}") js_wrapped = f"""""" data = { "content": js_wrapped } url = f"{url_base_kadence}{element_id}" req = urllib.request.Request(url, data=json.dumps(data).encode("utf-8"), headers=headers, method="PUT") try: resp = urllib.request.urlopen(req, timeout=30) print(f"--> Success") except Exception as e: print(f"--> Error: {e}") if hasattr(e, 'read'): print(e.read().decode('utf-8')) # --- LOGIC BLOCKS --- triple_logic_base = """ function solve(lastId) { let a = parseFloat(document.getElementById("input-1").value); let v = parseFloat(document.getElementById("input-2").value); let w = parseFloat(document.getElementById("input-3").value); if (isNaN(a) && isNaN(v) && isNaN(w)) return; if (lastId === 'input-1' || lastId === 'input-2') { if (!isNaN(a) && !isNaN(v)) { let res = (a * v) / [DIVISOR]; document.getElementById("input-3").value = parseFloat(res.toFixed(3)); } } else if (lastId === 'input-3') { if (!isNaN(w)) { if (!isNaN(a) && a !== 0) { let res = (w * [DIVISOR]) / a; document.getElementById("input-2").value = parseFloat(res.toFixed(2)); } else if (!isNaN(v) && v !== 0) { let res = (w * [DIVISOR]) / v; document.getElementById("input-1").value = parseFloat(res.toFixed(2)); } } } } document.getElementById("input-1").addEventListener("input", () => solve('input-1')); document.getElementById("input-2").addEventListener("input", () => solve('input-2')); document.getElementById("input-3").addEventListener("input", () => solve('input-3')); """ text_logic_ascii_to_bin = """ function convert1() { let val = document.getElementById("input-1").value; let binary = ""; for (let i = 0; i < val.length; i++) { let bin = val[i].charCodeAt(0).toString(2); binary += ("00000000" + bin).slice(-8) + " "; } document.getElementById("input-2").value = binary.trim(); } function convert2() { let val = document.getElementById("input-2").value.replace(/\\s/g, ""); let text = ""; for (let i = 0; i < val.length; i += 8) { let byte = val.substr(i, 8); if (byte.length === 8) { text += String.fromCharCode(parseInt(byte, 2)); } } document.getElementById("input-1").value = text; } document.getElementById("input-1").addEventListener("input", convert1); document.getElementById("input-2").addEventListener("input", convert2); """ text_logic_bin_to_dec = """ function convert1() { let val = document.getElementById("input-1").value.replace(/\\s/g, ""); if (val) document.getElementById("input-2").value = parseInt(val, 2).toString(10); else document.getElementById("input-2").value = ""; } function convert2() { let val = document.getElementById("input-2").value; if (val) document.getElementById("input-1").value = parseInt(val, 10).toString(2); else document.getElementById("input-1").value = ""; } document.getElementById("input-1").addEventListener("input", convert1); document.getElementById("input-2").addEventListener("input", convert2); """ text_logic_bin_to_hex = """ function convert1() { let val = document.getElementById("input-1").value.replace(/\\s/g, ""); if (val) document.getElementById("input-2").value = parseInt(val, 2).toString(16).toUpperCase(); else document.getElementById("input-2").value = ""; } function convert2() { let val = document.getElementById("input-2").value; if (val) document.getElementById("input-1").value = parseInt(val, 16).toString(2); else document.getElementById("input-1").value = ""; } document.getElementById("input-1").addEventListener("input", convert1); document.getElementById("input-2").addEventListener("input", convert2); """ updates = [ (140, "ASCII to Binary", text_logic_ascii_to_bin), (152, "Binary to ASCII", text_logic_ascii_to_bin), # Logic is the same, just order of fields in UI differs? No, inputs are 1 and 2. (154, "Binary to Decimal", text_logic_bin_to_dec), (156, "Binary to Hex", text_logic_bin_to_hex), (142, "Amps to Volts", triple_logic_base.replace("[DIVISOR]", "1")), (158, "Amps to Watts", triple_logic_base.replace("[DIVISOR]", "1")), (160, "Amps to Kilowatts", triple_logic_base.replace("[DIVISOR]", "1000")), (162, "Amps to kVA", triple_logic_base.replace("[DIVISOR]", "1000")) ] for eid, title, logic in updates: patch_element(eid, title, logic) time.sleep(1)