|
|
@ -11304,7 +11304,10 @@ |
|
|
|
resolve(resp); |
|
|
|
}, |
|
|
|
ontimeout: () => reject("fetch timeout"), |
|
|
|
onerror: () => reject("fetch error"), |
|
|
|
onerror: (...args) => { |
|
|
|
debugger; |
|
|
|
reject("fetch error"); |
|
|
|
}, |
|
|
|
onabort: () => reject("fetch abort") |
|
|
|
}; |
|
|
|
xmlhttprequest(gmopt); |
|
|
@ -11393,51 +11396,55 @@ |
|
|
|
return new Blob([ret]); |
|
|
|
}; |
|
|
|
var decodeCoom3Payload = async (buff) => { |
|
|
|
const pees = buff.toString().split(" ").slice(0, 5).filter((e) => e.startsWith("http")); |
|
|
|
return Promise.all(pees.map(async (pee) => { |
|
|
|
const headers = headerStringToObject(await GM_head(pee)); |
|
|
|
const res = await GM_fetch(pee, { |
|
|
|
headers: { ranges: "bytes=0-2048" }, |
|
|
|
mode: "cors", |
|
|
|
referrerPolicy: "no-referrer" |
|
|
|
}); |
|
|
|
const size = +headers["content-size"] || 0; |
|
|
|
const header = import_buffer2.Buffer.from(await res.arrayBuffer()); |
|
|
|
let hptr = 0; |
|
|
|
if (header.slice(0, 4).toString() == "PEE\0") |
|
|
|
hptr += 4; |
|
|
|
const flags = header[hptr]; |
|
|
|
const hasFn = !!(flags & 1); |
|
|
|
const hasTags = !!(flags & 2); |
|
|
|
const hasThumbnail = !!(flags & 4); |
|
|
|
let [ptr, ptr2] = [hptr + 1, hptr + 1]; |
|
|
|
let fn = "embedded"; |
|
|
|
let tags = []; |
|
|
|
let thumb = import_buffer2.Buffer.from(hasembed_default); |
|
|
|
if (hasFn) { |
|
|
|
while (header[ptr2] != 0) |
|
|
|
ptr2++; |
|
|
|
fn = header.slice(ptr, ptr2).toString(); |
|
|
|
ptr = ++ptr2; |
|
|
|
} |
|
|
|
if (hasTags) { |
|
|
|
while (header[ptr2] != 0) |
|
|
|
ptr2++; |
|
|
|
tags = header.slice(ptr, ptr2).toString().split(/\s+/); |
|
|
|
} |
|
|
|
let thumbsize = 0; |
|
|
|
if (hasThumbnail) { |
|
|
|
thumbsize = header.readInt32LE(ptr); |
|
|
|
console.log("Thumbnail size of ", thumbsize); |
|
|
|
thumb = import_buffer2.Buffer.from(await (await GM_fetch(pee, { headers: { range: `bytes=${ptr + 4}-${ptr + 4 + thumbsize}` } })).arrayBuffer()); |
|
|
|
const pees = buff.toString().split(" ").slice(0, 5).filter((e) => e.startsWith("https://files.catbox.moe/")); |
|
|
|
return (await Promise.all(pees.map(async (pee) => { |
|
|
|
try { |
|
|
|
const headers = headerStringToObject(await GM_head(pee)); |
|
|
|
const res = await GM_fetch(pee, { |
|
|
|
headers: { ranges: "bytes=0-2048", "user-agent": "" }, |
|
|
|
mode: "cors", |
|
|
|
referrerPolicy: "no-referrer" |
|
|
|
}); |
|
|
|
const size = +headers["content-length"] || 0; |
|
|
|
const header = import_buffer2.Buffer.from(await res.arrayBuffer()); |
|
|
|
let hptr = 0; |
|
|
|
if (header.slice(0, 4).toString() == "PEE\0") |
|
|
|
hptr += 4; |
|
|
|
const flags = header[hptr]; |
|
|
|
const hasFn = !!(flags & 1); |
|
|
|
const hasTags = !!(flags & 2); |
|
|
|
const hasThumbnail = !!(flags & 4); |
|
|
|
let [ptr, ptr2] = [hptr + 1, hptr + 1]; |
|
|
|
let fn = "embedded"; |
|
|
|
let tags = []; |
|
|
|
let thumb = import_buffer2.Buffer.from(hasembed_default); |
|
|
|
if (hasFn) { |
|
|
|
while (header[ptr2] != 0) |
|
|
|
ptr2++; |
|
|
|
fn = header.slice(ptr, ptr2).toString(); |
|
|
|
ptr = ++ptr2; |
|
|
|
} |
|
|
|
if (hasTags) { |
|
|
|
while (header[ptr2] != 0) |
|
|
|
ptr2++; |
|
|
|
tags = header.slice(ptr, ptr2).toString().split(/\s+/); |
|
|
|
} |
|
|
|
let thumbsize = 0; |
|
|
|
if (hasThumbnail) { |
|
|
|
thumbsize = header.readInt32LE(ptr); |
|
|
|
thumb = import_buffer2.Buffer.from(await (await GM_fetch(pee, { headers: { "user-agent": "", range: `bytes=${ptr + 4}-${ptr + 4 + thumbsize}` } })).arrayBuffer()); |
|
|
|
} |
|
|
|
return { |
|
|
|
embed_type: 2 /* MEDIA_EMBED */, |
|
|
|
filename: fn, |
|
|
|
data: async (lsn) => import_buffer2.Buffer.from(await (await GM_fetch(pee, { headers: { "user-agent": "", range: `bytes=${ptr + 4 + thumbsize}-${size - 1}` } }, lsn)).arrayBuffer()), |
|
|
|
thumbnail: thumb |
|
|
|
}; |
|
|
|
} catch (e) { |
|
|
|
console.warn(e); |
|
|
|
} |
|
|
|
return { |
|
|
|
embed_type: 2 /* MEDIA_EMBED */, |
|
|
|
filename: fn, |
|
|
|
data: async (lsn) => import_buffer2.Buffer.from(await (await GM_fetch(pee, { headers: { range: `bytes=${ptr + 4 + thumbsize}-${size - 1}` } }, lsn)).arrayBuffer()), |
|
|
|
thumbnail: thumb |
|
|
|
}; |
|
|
|
})); |
|
|
|
return; |
|
|
|
}))).map((e) => e); |
|
|
|
}; |
|
|
|
var fireNotification = (level, text2, lifetime = 3) => { |
|
|
|
document.dispatchEvent(new CustomEvent("CreateNotification", { |
|
|
@ -11470,7 +11477,9 @@ |
|
|
|
case "tEXt": |
|
|
|
buff = chunk; |
|
|
|
if (buff.slice(4, 4 + CUM3.length).equals(CUM3)) { |
|
|
|
return await decodeCoom3Payload(buff.slice(4 + CUM3.length)); |
|
|
|
const results = await decodeCoom3Payload(buff.slice(4 + CUM3.length)); |
|
|
|
const filtered = results.filter((e) => e != null); |
|
|
|
return filtered.length > 0 ? filtered : void 0; |
|
|
|
} |
|
|
|
break; |
|
|
|
case "IDAT": |
|
|
|