From 19c2db9a23c1592a9a18e39a7460a10d92165717 Mon Sep 17 00:00:00 2001
From: Christoph Stahl <christoph.stahl@tu-dortmund.de>
Date: Sat, 15 Feb 2025 01:34:26 +0100
Subject: [PATCH] Buffering log message should now only appear once for each
 entry

---
 syng/client.py | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/syng/client.py b/syng/client.py
index a7ca14e..077c03d 100644
--- a/syng/client.py
+++ b/syng/client.py
@@ -238,8 +238,20 @@ class Client:
         self.state.recent = [Entry(**entry) for entry in data["recent"]]
 
         for pos, entry in enumerate(self.state.queue[0 : self.buffer_in_advance]):
-            logger.info("Buffering: %s", entry.title)
-            await self.sources[entry.source].buffer(entry, pos)
+            source = self.sources[entry.source]
+            if entry.incomplete_data:
+                meta_info = await source.get_missing_metadata(entry)
+                await self.sio.emit("meta-info", {"uuid": entry.uuid, "meta": meta_info})
+                entry.update(**meta_info)
+
+            if entry.ident in source.downloaded_files:
+                continue
+            logger.info("Buffering: %s (%d s)", entry.title, entry.duration)
+            try:
+                await self.sources[entry.source].buffer(entry, pos)
+            except ValueError as e:
+                logger.error("Error buffering: %s", e)
+                await self.sio.emit("skip", {"uuid": entry.uuid})
 
     async def handle_connect(self) -> None:
         """