dget ⎗ ✓ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37<script type="module"> async function dget(id, relay){ return new Promise((resolve) => { const socket = new WebSocket(relay) let file_data = [] let fileids = [] socket.onopen = function(){ socket.send(JSON.stringify(["REQ", "fileids", {"ids": [id]}])) } socket.onmessage = async function(e){ const data = JSON.parse(e.data) if(data[0] === "EVENT" && data[1] === "fileids"){ fileids.push(...JSON.parse(data[2].content).fileids) socket.send(JSON.stringify(["REQ", "parts", {"ids": fileids, "limit": 3000}])) } else if(data[0] === "EVENT" && data[1] === "parts"){ const match = data[2].content.match(/^part(\d);(\d);[a-z0-9]+;/) const part_data = data[2].content.substr(match[0].length) file_data.push([parseInt(match[1], 10), part_data]) if(file_data.length === fileids.length){ file_data = file_data.sort((a, b) => a[0] - b[0]).map(e => e[1]) const datauri = "data:" + file_data.join("") const blob = await (await fetch(datauri)).blob() resolve(URL.createObjectURL(blob)) } } } }) } const res = await dget("411b819bcfa948b4a251658f930fe746d33b094c21d3c78e6a28b86e7c964af0", "wss://relay.nostr.band") console.log("res", res) </script>
Warning LINK You are about to visit a link which has been flagged with the above content warnings. Do you wish to continue? Continue Cancel