diff --git a/frontend/src/tools/paywallkiller.jsx b/frontend/src/tools/paywallkiller.jsx index d699b18..f164f1d 100644 --- a/frontend/src/tools/paywallkiller.jsx +++ b/frontend/src/tools/paywallkiller.jsx @@ -8,27 +8,10 @@ const C = { muted: '#6b7280', }; -// Wayback CDX – prüft ob Snapshot existiert (CORS: *) -async function checkWayback(targetUrl) { - try { - const res = await fetch( - `https://web.archive.org/cdx/search/cdx?url=${encodeURIComponent(targetUrl)}&output=json&limit=1&fl=timestamp&filter=statuscode:200&fastLatest=true` - ); - if (!res.ok) return null; - const data = await res.json(); - if (Array.isArray(data) && data.length >= 2 && data[1]?.[0]) { - return `https://web.archive.org/web/${data[1][0]}/${targetUrl}`; - } - } catch {} - return null; -} - export default function PaywallKiller() { - const [inputUrl, setInputUrl] = useState(''); + const [inputUrl, setInputUrl] = useState(''); const [archiveUrl, setArchiveUrl] = useState(''); - // status: idle | checking | archiving | ready | notfound - const [status, setStatus] = useState('idle'); - const [statusMsg, setStatusMsg] = useState(''); + const [status, setStatus] = useState('idle'); const inputRef = useRef(null); function getTargetUrl() { @@ -36,32 +19,12 @@ export default function PaywallKiller() { return url.startsWith('http') ? url : 'https://' + url; } - async function handleSearch() { + function handleSearch() { if (!inputUrl.trim()) return; const targetUrl = getTargetUrl(); - setStatus('checking'); - setStatusMsg('Prüfe ob Archiv existiert...'); - setArchiveUrl(''); - - // Schritt 1: Prüfen ob archive.ph schon einen Snapshot hat - // archive.ph /newest/ leitet weiter wenn gefunden, sonst Suchseite - // Wir nutzen CDX der Wayback Machine als schnelle Vorab-Prüfung - // und bauen immer die archive.ph URL auf - const newestUrl = `https://archive.ph/newest/${targetUrl}`; - - // Parallel: Wayback prüfen (liefert uns Info ob überhaupt archiviert) - // Aber primär: archive.ph direkt versuchen - // Falls "No results" → automatisch archivieren via no-cors submit - - setArchiveUrl(newestUrl); - - // Schritt 2: archive.ph Submit (fire-and-forget, no-cors) - // Das triggert die Archivierung falls noch nicht vorhanden - setStatus('archiving'); - setStatusMsg('Archiviere Artikel (falls noch nicht vorhanden)...'); + // archive.ph Submit (no-cors, fire-and-forget) – triggert Archivierung try { - // archive.ph Submit via no-cors – kein Response lesbar aber Request geht raus const formData = new FormData(); formData.append('url', targetUrl); formData.append('anyway', '1'); @@ -72,13 +35,7 @@ export default function PaywallKiller() { }).catch(() => {}); } catch {} - // Schritt 3: 8s warten dann Artikel öffnen - // (archive.ph braucht ~5-15s zum Archivieren) - for (let i = 8; i > 0; i--) { - setStatusMsg(`Archivierung läuft... öffnet in ${i}s`); - await new Promise(r => setTimeout(r, 1000)); - } - + setArchiveUrl(`https://archive.ph/newest/${targetUrl}`); setStatus('ready'); } @@ -86,30 +43,28 @@ export default function PaywallKiller() { setInputUrl(''); setArchiveUrl(''); setStatus('idle'); - setStatusMsg(''); setTimeout(() => inputRef.current?.focus(), 50); } return (