Skip to content

Commit 1d27dd6

Browse files
authored
v1.2.1: don't use dom and fixed image proxy
1 parent 1f52edc commit 1d27dd6

File tree

1 file changed

+23
-10
lines changed

1 file changed

+23
-10
lines changed

NyaaTorrentHelper.user.js

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// ==UserScript==
22
// @name Nyaa Torrent Helper
33
// @namespace https://github.com/jc3213/userscript
4-
// @version 1.2.0
4+
// @version 1.2.1
55
// @description Nyaa Torrent easy preview, batch export, better filter
66
// @author jc3213
77
// @match *://*.nyaa.si/*
@@ -191,10 +191,10 @@ async function getTorrentDetail(tr) {
191191
working.add(url);
192192
let site = new Set();
193193
let image = new Set();
194-
let container = document.createElement('div');
195-
container.innerHTML = await fetch(url).then((res) => res.text()).catch((err) => working.delete(url));
196-
let result = container.querySelector('#torrent-description').textContent;
197-
result.match(/https?:\/\/[^\]\[);!*"]*/g)?.forEach((url) => url.match(/.(jpe?g|png|gif|avif|bmp|webp)/) ? image.add(url) : site.add(url));
194+
let text = await fetch(url).then((res) => res.text()).catch((err) => working.delete(url));
195+
let result = text.match(/<div[^>]*id=["']torrent-description["'][^>]*>([\s\S]*?)<\/div>/i)[1];
196+
let urls = result.match(/https?:\/\/[^&)* ]+/g);
197+
urls?.forEach((url) => url.match(/.(jpe?g|png|gif|avif|bmp|webp)/) ? image.add(url) : site.add(url));
198198
info = { site: [...site], image: [...image] };
199199
GM_setValue(url, info);
200200
tr.classList.add('nyaa-cached');
@@ -206,7 +206,7 @@ async function getTorrentDetail(tr) {
206206

207207
// copy info to clipboard
208208
async function getClipboardInfo(tr) {
209-
let {url, name, torrent, magnet, size, image, site} = await getTorrentDetail(tr);
209+
let { url, name, torrent, magnet, size, image, site } = await getTorrentDetail(tr);
210210
return `${i18n.name}
211211
${name} (${size})
212212
${i18n.preview}
@@ -218,18 +218,31 @@ ${torrent ? `${i18n.torrent}\n ${torrent}\n` : ''}${i18n.magnet}\n ${magne
218218
async function getTorrentPreview(tr, top, left) {
219219
let { image, site } = await getTorrentDetail(tr);
220220
if (image?.length > 0) {
221-
let src = image[0];
222-
let img = preview.get(src);
221+
let url = image[0];
222+
let img = preview.get(url);
223223
if (!img) {
224224
img = document.createElement('img');
225-
img.src = src;
225+
img.src = redirectURL(url);
226226
img.className = 'nyaa-preview';
227227
img.addEventListener('click', event => img.remove());
228-
preview.set(src, img);
228+
preview.set(url, img);
229229
}
230230
img.style.cssText = `top: ${top}px; left: ${left}px;`;
231231
document.body.append(img);
232232
} else if (site?.length > 0) {
233233
GM_openInTab(site[0]);
234234
}
235235
}
236+
237+
const redirectRules = [
238+
{ match: 'files.catbox.moe', replace: 'i0.wp.com/files.catbox.moe', suffix: '?ssl=1' }
239+
];
240+
241+
function redirectURL(url) {
242+
for (let { match, replace, suffix } of redirectRules) {
243+
if (url.includes(match)) {
244+
return url.replace(match, replace) + suffix;
245+
}
246+
}
247+
return url;
248+
}

0 commit comments

Comments
 (0)