From 6ba8a31a7f3653ddc08cc889f14f8ac6af68d6be Mon Sep 17 00:00:00 2001 From: Jakob Meier Date: Thu, 29 Feb 2024 16:29:51 +0100 Subject: [PATCH] acctually fix the home feed duplicate error caused by the worker pool not being cleared properly --- melon/models/__init__.py | 1 - melon/servers/invidious/__init__.py | 1 - melon/servers/utils.py | 16 +++++----------- 3 files changed, 5 insertions(+), 13 deletions(-) diff --git a/melon/models/__init__.py b/melon/models/__init__.py index 8220b45..7caaeee 100644 --- a/melon/models/__init__.py +++ b/melon/models/__init__.py @@ -434,7 +434,6 @@ def ensure_video(vid): """, (vid.server, vid.id, vid.url, vid.title, vid.description, vid.thumbnail, vid.channel[1], vid.channel[0])) def add_videos(vids:list[Video]): - # TODO deduplicate entries conn = connect_to_db() execute_sql( conn, diff --git a/melon/servers/invidious/__init__.py b/melon/servers/invidious/__init__.py index ac6b0c8..6e82b39 100644 --- a/melon/servers/invidious/__init__.py +++ b/melon/servers/invidious/__init__.py @@ -297,7 +297,6 @@ class Invidious(Server): for src in video.find_all("source"): try: rel = src["src"] - print(rel) stream_url = f"{instance}{rel}" results.append(Stream(stream_url, src["label"])) except: diff --git a/melon/servers/utils.py b/melon/servers/utils.py index 7a1a171..746789b 100644 --- a/melon/servers/utils.py +++ b/melon/servers/utils.py @@ -53,6 +53,8 @@ class NewsWorkerPool: tasks=[] results=[] def __init__(self, size, tasks): + self.results=[] + self.threads=[] self.tasks = tasks for i in range(size): thread = threading.Thread(target=self.run, name=str(i)) @@ -61,23 +63,16 @@ class NewsWorkerPool: self.threads.append(thread) def run(self): name = threading.currentThread().getName() - try: - task = self.tasks.pop() + while self.tasks: + task = self.tasks.pop(0) instance = task[0] channel = task[1] - print(f"{name} obtained task") dts = instance.get_timeline(channel.id) for entry in dts: self.results.append(entry) - self.run() - except Exception as e: - print(f"{name} done") - print(e) - return def wait(self): for thread in self.threads: thread.join() - print("all done") def fetch_home_feed() -> list[Resource]: subs = get_subscribed_channels() @@ -97,11 +92,10 @@ def fetch_home_feed() -> list[Resource]: instance = get_server_instance(server) channels = db[server["id"]] tasks = tasks + [ (instance, channel) for channel in channels ] - pool = NewsWorkerPool(10, tasks) + pool = NewsWorkerPool(6, tasks) pool.wait() feed = pool.results feed.sort(key=lambda dts: dts[1]) - print("returning") return feed def group_by_date(dataset): db = {} -- 2.38.5