From 95d9fb90d12c91c0da81836cd35f3cf6f2ae7926 Mon Sep 17 00:00:00 2001 From: Ahmed Khaled <125749397+ahmedk20@users.noreply.github.com> Date: Sat, 28 Mar 2026 16:34:51 +0200 Subject: [PATCH] fix: move module-level scraping and config inside update_database() All news collection (CyberNews, newsBox) and Pinecone client setup were executing at import time, triggering full web scraping whenever the module was imported. Moved everything inside update_database() so scraping only runs when the function is explicitly called. Fixes #173 --- db_update/Update.py | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/db_update/Update.py b/db_update/Update.py index 4109397..53376c9 100644 --- a/db_update/Update.py +++ b/db_update/Update.py @@ -6,27 +6,26 @@ from cybernews.CyberNews import CyberNews -PINECONE_API = dotenv_values(".env").get("PINECONE_API_KEY") - -# Configure client -pc = Pinecone(api_key=PINECONE_API) -index_name = str.lower(dotenv_values(".env").get("PINECONE_INDEX_NAME")) # pinecone index name must be in lowercase - - +# Convert news articles to vectors and upsert into Pinecone +def update_database(overwrite=(len(sys.argv) > 1 and sys.argv[1] == '--overwrite')): + env = dotenv_values(".env") + PINECONE_API = env.get("PINECONE_API_KEY") + index_name = str.lower(env.get("PINECONE_INDEX_NAME")) # pinecone index name must be in lowercase + # Configure client + pc = Pinecone(api_key=PINECONE_API) -# Different types of news -news = CyberNews() -newsBox = dict() -newsBox["general_news"] = news.get_news("general") -newsBox["cyber_attack_news"] = news.get_news("cyberAttack") -newsBox["vulnerability_news"] = news.get_news("vulnerability") -newsBox["malware_news"] = news.get_news("malware") -newsBox["security_news"] = news.get_news("security") -newsBox["data_breach_news"] = news.get_news("dataBreach") + # Collect news from all categories + news = CyberNews() + newsBox = { + "general_news": news.get_news("general"), + "cyber_attack_news": news.get_news("cyberAttack"), + "vulnerability_news":news.get_news("vulnerability"), + "malware_news": news.get_news("malware"), + "security_news": news.get_news("security"), + "data_breach_news": news.get_news("dataBreach"), + } -# Convert news articles to vectors and upsert into Pinecone -def update_database(overwrite=(len(sys.argv) > 1 and sys.argv[1] == '--overwrite')): # Delete the index if overwrite is requested if overwrite and index_name in pc.list_indexes().names(): pc.delete_index(index_name)