File size: 1,462 Bytes
9002555
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 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)