File size: 2,862 Bytes
480d732
ebc5000
480d732
 
 
 
 
 
 
ebc5000
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3fdc088
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
from enum import Enum

class Dir(Enum):
    URL = (1, 'url')
    API = (2, 'api')

    def __init__(self, id, path):
        self.id = id
        self.path = path

class Card:

    def __init__(self, title, description, url):
        self._title = title
        self._description = description
        self._url = url
    
    @property
    def title(self):
        return self._title
    
    @property
    def description(self):
        return self._description
    
    @property
    def url(self):
        return self._url
    
    @title.setter
    def title(self, value):
        self._title = value
    
    @description.setter
    def description(self, value):
        self._description = value
    
    @url.setter
    def url(self, value):
        self._url = value
    
    def __str__(self):
        return f"Title: {self.title}\nDescription: {self.description}\nUrl: {self.url}"
    
    def to_json(self):
        return {
            "title": self.title,
            "description": self.description,
            "url": self.url
        }



class MyDoc:

    def __init__(self, content, metadata):
        self._content = content
        self._metadata = {k:v for k,v in metadata.items() if v is not None and v.strip()!= ''}
    
    @staticmethod
    def from_docs(docs):
        res = []
        for doc in docs:
            res.append(MyDoc(doc.page_content, doc.metadata))
        return res
    
    @property
    def idx(self):
        return self.metadata.get('idx', -1)

    @property
    def page_content(self):
        return self._content
    
    @property
    def metadata(self):
        return self._metadata
    
    @page_content.setter
    def page_content(self, value):
        self._page_content = value

    @metadata.setter
    def metadata(self, value):
        self._metadata = value

    @property
    def title(self):
        return self.metadata.get('title', '')
    
    @property
    def source(self):
        return self.metadata.get('source', '')
    
    @property
    def description(self):
        return self.metadata.get('description', '')
    
    @property
    def language(self):
        return self.metadata.get('language', '')
    
    @property
    def keywords(self):
        return self.metadata.get('keywords', [])
    
    @property
    def description_llm(self):
        return self.metadata.get('description_llm', '')
    
    @property
    def title_llm(self):
        return self.metadata.get('title_llm', '')
    
    @description_llm.setter
    def description_llm(self, value):
        self.metadata['description_llm'] = value
    
    @title_llm.setter
    def title_llm(self, value):
        self.metadata['title_llm'] = value
    
    @keywords.setter
    def keywords(self, value):
        self.metadata['keywords'] = value
    
    def __str__(self):
        return f"Source: {self.source}"