diff --git a/web/static/scrape.js b/web/static/scrape.js
new file mode 100644
index 0000000..07e8db6
--- /dev/null
+++ b/web/static/scrape.js
@@ -0,0 +1,44 @@
+function startScrape() {
+ const output = document.getElementById("output");
+ const startButton = document.getElementById("start-scrape");
+
+ output.textContent = "Starting scrape...\n";
+ startButton.disabled = true;
+ startButton.textContent = "Scraping...";
+
+ fetch("/scrape")
+ .then((response) => {
+ const reader = response.body.getReader();
+ const decoder = new TextDecoder();
+
+ function readStream() {
+ reader
+ .read()
+ .then(({ done, value }) => {
+ if (done) {
+ output.textContent += "\nScraping completed!";
+ startButton.disabled = false;
+ startButton.textContent = "Start Scraping";
+ return;
+ }
+
+ const chunk = decoder.decode(value, { stream: true });
+ output.textContent += chunk;
+ output.scrollTop = output.scrollHeight;
+ readStream();
+ })
+ .catch((error) => {
+ output.textContent += `\nError: ${error.message}`;
+ startButton.disabled = false;
+ startButton.textContent = "Start Scraping";
+ });
+ }
+
+ readStream();
+ })
+ .catch((error) => {
+ output.textContent = `Error starting scrape: ${error.message}`;
+ startButton.disabled = false;
+ startButton.textContent = "Start Scraping";
+ });
+}
diff --git a/web/templates/scrape.html b/web/templates/scrape.html
index 0533405..a5d805a 100644
--- a/web/templates/scrape.html
+++ b/web/templates/scrape.html
@@ -18,50 +18,5 @@ content %}
>
{% endblock %} {% block scripts %}
-
+
{% endblock %}