diff --git a/frontend/src/tools/paywallkiller.jsx b/frontend/src/tools/paywallkiller.jsx index 9e32733..c34bb82 100644 --- a/frontend/src/tools/paywallkiller.jsx +++ b/frontend/src/tools/paywallkiller.jsx @@ -1,5 +1,5 @@ -import { useState, useRef, useEffect } from 'react'; -import { S, api } from '../lib.js'; +import { useState, useRef } from 'react'; +import { S } from '../lib.js'; const C = { accent: '#f59e0b', @@ -9,14 +9,13 @@ const C = { }; export default function PaywallKiller() { - const [inputUrl, setInputUrl] = useState(''); - const [status, setStatus] = useState('idle'); - const [archiveUrl, setArchiveUrl] = useState(''); - const [showCaptcha, setShowCaptcha] = useState(false); - const [errMsg, setErrMsg] = useState(''); - const [pdfLoading, setPdfLoading] = useState(false); - const inputRef = useRef(null); - const iframeRef = useRef(null); + const [inputUrl, setInputUrl] = useState(''); + const [status, setStatus] = useState('idle'); + const [archiveUrl, setArchiveUrl] = useState(''); + const [captchaDone, setCaptchaDone] = useState(false); + const [errMsg, setErrMsg] = useState(''); + const [pdfLoading, setPdfLoading] = useState(false); + const inputRef = useRef(null); function getTargetUrl() { const url = inputUrl.trim(); @@ -27,26 +26,19 @@ export default function PaywallKiller() { if (!inputUrl.trim()) return; const aUrl = `https://archive.ph/newest/${getTargetUrl()}`; setArchiveUrl(aUrl); - setStatus('captcha'); - setShowCaptcha(true); + setStatus('open_archive'); + setCaptchaDone(false); setErrMsg(''); } - function handleCaptchaDone() { - setShowCaptcha(false); - setStatus('ready'); + function handleOpenArchive() { + window.open(archiveUrl, '_blank'); } async function handlePdf() { setPdfLoading(true); setErrMsg(''); try { - // Cookies für archive.ph aus dem Browser lesen - // document.cookie liefert nur same-site cookies – archive.ph cookies - // sind third-party und nicht lesbar. Wir übergeben stattdessen - // die URL und lassen Puppeteer direkt die Session simulieren: - // Puppeteer öffnet zuerst archive.ph root um Cookies zu setzen, - // dann direkt die Snapshot-URL. const token = localStorage.getItem('sk_token'); const res = await fetch('/api/tools/paywallkiller/pdf', { method: 'POST', @@ -80,7 +72,7 @@ export default function PaywallKiller() { setInputUrl(''); setStatus('idle'); setArchiveUrl(''); - setShowCaptcha(false); + setCaptchaDone(false); setErrMsg(''); setPdfLoading(false); setTimeout(() => inputRef.current?.focus(), 50); @@ -110,13 +102,12 @@ export default function PaywallKiller() { style={{ ...S.inp, width: '100%', boxSizing: 'border-box', marginBottom: 10 }} />
- {status === 'idle' && ( + {status === 'idle' ? ( - )} - {status !== 'idle' && ( + ) : (
- {/* CAPTCHA-Schritt */} - {status === 'captcha' && ( + {/* Schritt 1: archive.ph öffnen + CAPTCHA */} + {status === 'open_archive' && (
-
SCHRITT 1 – CAPTCHA BESTÄTIGEN
-
- archive.ph wird unten geladen. Falls ein CAPTCHA erscheint: abhaken, warten bis der Artikel sichtbar ist, dann auf "Artikel bereit → PDF erstellen" klicken. +
+ 1 + ARCHIVE.PH ÖFFNEN
- {/* archive.ph iframe */} -
-