A simple BlueSky profile labeler that can be ran on Cloudflare Workers github.com/SocksTheWolf/SimpleBSkyLabeler
cf bsky profile label bluesky cloudflare workers
at main 31 lines 1.1 kB view raw
1function clearResult() { 2 document.getElementById("form-output").innerHTML = ""; 3} 4const bskyHandleEl = document.getElementById("username"); 5const addForm = document.getElementById("addform"); 6if (bskyHandleEl !== null && addForm !== null) { 7 bskyHandleEl.value = ""; 8 bskyHandleEl.addEventListener("paste", ev => { 9 ev.preventDefault(); 10 clearResult(); 11 12 // regex to clean up URLs 13 const linkRegex = /(?:^.*\/profile\/)([0-9a-zA-Z\-\.]+)(?:\/post\/\w+)?(?:\/)?$/gm; 14 15 // Clean any unicode trash that bsky likes to hide near handle names. 16 let inputData = ev.clipboardData.getData("text").replace(/[^\x00-\x7F]/g, "").replace("@", ""); 17 18 // Convert urls into handles 19 var matches = linkRegex.exec(inputData); 20 if (matches != null && matches.length >= 2) { 21 // was a URL, convert to handle 22 bskyHandleEl.value = matches[1]; 23 } else { 24 // was something else, w/e 25 bskyHandleEl.value = inputData; 26 } 27 console.log(`output: ${bskyHandleEl.value}`); 28 }); 29 // clear previous results upon submit 30 addForm.addEventListener("submit", () => clearResult); 31}