# Get reference class Metadata: def __init__(self, reference): self.title = reference["title"] self.author = reference["author"] self.category = reference["category"] self.year = reference["year"] self.publisher = reference["publisher"] def add_metadata(self, documents, metadata): """Add metadata to each item (document or node).""" for document in documents: if not hasattr(document, "metadata") or document.metadata is None: document.metadata = {} document.metadata.update(metadata) print("metadata is added") # self.logger.log_action(f"Metadata added to document {item.id_}", action_type="METADATA") return documents def _generate_metadata(self): """Generate metadata and return it.""" metadata = { "title": self.title, "author": self.author, "category": self.category, "year": self.year, "publisher": self.publisher, "reference": f"{self.author}. ({self.year}). *{self.title}*. {self.publisher}.", # APA style reference } print("metadata is generated") return metadata def apply_metadata(self, documents): """Apply generated metadata to documents.""" metadata = self._generate_metadata() print("metadata is applied") return self.add_metadata(documents, metadata)