in check-blogs/main.py [0:0]
def send_new_blogs():
blog_map = {}
with futures.ThreadPoolExecutor() as executor:
blogs_by_categories = executor.map(get_blog_posts, rss_urls)
for category_blogs in blogs_by_categories:
for guid, blog in category_blogs.items():
if blog:
blog_map[guid] = blog
new_blogs_map = get_new_blog_posts(blog_map)
with futures.ThreadPoolExecutor() as executor:
executor.map(summarize_blog, new_blogs_map.values())
subscriptions_ref = firestore_client.collection("space_blog_subscriptions")
for blog in new_blogs_map.values():
print(f"New blog found: {blog['link']} in {blog['category_name']}")
product_doc = subscriptions_ref.document(blog["category_name"]).get()
if product_doc.exists:
spaces_subscribed = product_doc.to_dict().get("spaces_subscribed", [])
if blog.get("summary"):
for space_id in spaces_subscribed:
publish_to_pubsub(space_id, blog)
else:
print(f"Failed to generate summary for: {blog['link']}")
futures.wait(publish_futures, return_when=futures.ALL_COMPLETED)
if new_blogs_map: # Keep this part to update the Firestore document
doc_ref = firestore_client.collection("cloud-release-notes").document("blogs")
doc_ref.set(blog_map)