Spaces:
Sleeping
Sleeping
Add First Commit
Browse files- Dockerfile +8 -0
- Pipfile +14 -0
- Pipfile.lock +340 -0
- api_files/main.py +12 -0
- api_files/src/base_api.py +30 -0
- api_files/src/middle_api.py +32 -0
- api_files/src/models.py +93 -0
- requirements.txt +3 -0
Dockerfile
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
ARG APIKJ=si
|
2 |
+
FROM python:3.9
|
3 |
+
WORKDIR /server
|
4 |
+
COPY ./requirements.txt /server/requirements.txt
|
5 |
+
RUN pip install --no-cache-dir --upgrade -r /server/requirements.txt
|
6 |
+
RUN --mount=type=secret,id=APIKJ,mode=0444,required=true
|
7 |
+
COPY ./api_files /server/api_files
|
8 |
+
CMD ["uvicorn", "api_files.main:api_fn", "--host", "0.0.0.0", "--port", "9028"]
|
Pipfile
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[[source]]
|
2 |
+
url = "https://pypi.org/simple"
|
3 |
+
verify_ssl = true
|
4 |
+
name = "pypi"
|
5 |
+
|
6 |
+
[packages]
|
7 |
+
fastapi = "==0.115.6"
|
8 |
+
uvicorn = "==0.34.0"
|
9 |
+
requests = "*"
|
10 |
+
|
11 |
+
[dev-packages]
|
12 |
+
|
13 |
+
[requires]
|
14 |
+
python_version = "3.12"
|
Pipfile.lock
ADDED
@@ -0,0 +1,340 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"_meta": {
|
3 |
+
"hash": {
|
4 |
+
"sha256": "e08defb23e31d8e2829190208d2da04100c8d2fc14a9dabd7dfefc0485f6e710"
|
5 |
+
},
|
6 |
+
"pipfile-spec": 6,
|
7 |
+
"requires": {
|
8 |
+
"python_version": "3.12"
|
9 |
+
},
|
10 |
+
"sources": [
|
11 |
+
{
|
12 |
+
"name": "pypi",
|
13 |
+
"url": "https://pypi.org/simple",
|
14 |
+
"verify_ssl": true
|
15 |
+
}
|
16 |
+
]
|
17 |
+
},
|
18 |
+
"default": {
|
19 |
+
"annotated-types": {
|
20 |
+
"hashes": [
|
21 |
+
"sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53",
|
22 |
+
"sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"
|
23 |
+
],
|
24 |
+
"markers": "python_version >= '3.8'",
|
25 |
+
"version": "==0.7.0"
|
26 |
+
},
|
27 |
+
"anyio": {
|
28 |
+
"hashes": [
|
29 |
+
"sha256:1d9fe889df5212298c0c0723fa20479d1b94883a2df44bd3897aa91083316f7a",
|
30 |
+
"sha256:b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a"
|
31 |
+
],
|
32 |
+
"markers": "python_version >= '3.9'",
|
33 |
+
"version": "==4.8.0"
|
34 |
+
},
|
35 |
+
"certifi": {
|
36 |
+
"hashes": [
|
37 |
+
"sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56",
|
38 |
+
"sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"
|
39 |
+
],
|
40 |
+
"markers": "python_version >= '3.6'",
|
41 |
+
"version": "==2024.12.14"
|
42 |
+
},
|
43 |
+
"charset-normalizer": {
|
44 |
+
"hashes": [
|
45 |
+
"sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537",
|
46 |
+
"sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa",
|
47 |
+
"sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a",
|
48 |
+
"sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294",
|
49 |
+
"sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b",
|
50 |
+
"sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd",
|
51 |
+
"sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601",
|
52 |
+
"sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd",
|
53 |
+
"sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4",
|
54 |
+
"sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d",
|
55 |
+
"sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2",
|
56 |
+
"sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313",
|
57 |
+
"sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd",
|
58 |
+
"sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa",
|
59 |
+
"sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8",
|
60 |
+
"sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1",
|
61 |
+
"sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2",
|
62 |
+
"sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496",
|
63 |
+
"sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d",
|
64 |
+
"sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b",
|
65 |
+
"sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e",
|
66 |
+
"sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a",
|
67 |
+
"sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4",
|
68 |
+
"sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca",
|
69 |
+
"sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78",
|
70 |
+
"sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408",
|
71 |
+
"sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5",
|
72 |
+
"sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3",
|
73 |
+
"sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f",
|
74 |
+
"sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a",
|
75 |
+
"sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765",
|
76 |
+
"sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6",
|
77 |
+
"sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146",
|
78 |
+
"sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6",
|
79 |
+
"sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9",
|
80 |
+
"sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd",
|
81 |
+
"sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c",
|
82 |
+
"sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f",
|
83 |
+
"sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545",
|
84 |
+
"sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176",
|
85 |
+
"sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770",
|
86 |
+
"sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824",
|
87 |
+
"sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f",
|
88 |
+
"sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf",
|
89 |
+
"sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487",
|
90 |
+
"sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d",
|
91 |
+
"sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd",
|
92 |
+
"sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b",
|
93 |
+
"sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534",
|
94 |
+
"sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f",
|
95 |
+
"sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b",
|
96 |
+
"sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9",
|
97 |
+
"sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd",
|
98 |
+
"sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125",
|
99 |
+
"sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9",
|
100 |
+
"sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de",
|
101 |
+
"sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11",
|
102 |
+
"sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d",
|
103 |
+
"sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35",
|
104 |
+
"sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f",
|
105 |
+
"sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda",
|
106 |
+
"sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7",
|
107 |
+
"sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a",
|
108 |
+
"sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971",
|
109 |
+
"sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8",
|
110 |
+
"sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41",
|
111 |
+
"sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d",
|
112 |
+
"sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f",
|
113 |
+
"sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757",
|
114 |
+
"sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a",
|
115 |
+
"sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886",
|
116 |
+
"sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77",
|
117 |
+
"sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76",
|
118 |
+
"sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247",
|
119 |
+
"sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85",
|
120 |
+
"sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb",
|
121 |
+
"sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7",
|
122 |
+
"sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e",
|
123 |
+
"sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6",
|
124 |
+
"sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037",
|
125 |
+
"sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1",
|
126 |
+
"sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e",
|
127 |
+
"sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807",
|
128 |
+
"sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407",
|
129 |
+
"sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c",
|
130 |
+
"sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12",
|
131 |
+
"sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3",
|
132 |
+
"sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089",
|
133 |
+
"sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd",
|
134 |
+
"sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e",
|
135 |
+
"sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00",
|
136 |
+
"sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"
|
137 |
+
],
|
138 |
+
"markers": "python_version >= '3.7'",
|
139 |
+
"version": "==3.4.1"
|
140 |
+
},
|
141 |
+
"click": {
|
142 |
+
"hashes": [
|
143 |
+
"sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2",
|
144 |
+
"sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"
|
145 |
+
],
|
146 |
+
"markers": "python_version >= '3.7'",
|
147 |
+
"version": "==8.1.8"
|
148 |
+
},
|
149 |
+
"fastapi": {
|
150 |
+
"hashes": [
|
151 |
+
"sha256:9ec46f7addc14ea472958a96aae5b5de65f39721a46aaf5705c480d9a8b76654",
|
152 |
+
"sha256:e9240b29e36fa8f4bb7290316988e90c381e5092e0cbe84e7818cc3713bcf305"
|
153 |
+
],
|
154 |
+
"index": "pypi",
|
155 |
+
"markers": "python_version >= '3.8'",
|
156 |
+
"version": "==0.115.6"
|
157 |
+
},
|
158 |
+
"h11": {
|
159 |
+
"hashes": [
|
160 |
+
"sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d",
|
161 |
+
"sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"
|
162 |
+
],
|
163 |
+
"markers": "python_version >= '3.7'",
|
164 |
+
"version": "==0.14.0"
|
165 |
+
},
|
166 |
+
"idna": {
|
167 |
+
"hashes": [
|
168 |
+
"sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9",
|
169 |
+
"sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"
|
170 |
+
],
|
171 |
+
"markers": "python_version >= '3.6'",
|
172 |
+
"version": "==3.10"
|
173 |
+
},
|
174 |
+
"pydantic": {
|
175 |
+
"hashes": [
|
176 |
+
"sha256:278b38dbbaec562011d659ee05f63346951b3a248a6f3642e1bc68894ea2b4ff",
|
177 |
+
"sha256:4dd4e322dbe55472cb7ca7e73f4b63574eecccf2835ffa2af9021ce113c83c53"
|
178 |
+
],
|
179 |
+
"markers": "python_version >= '3.8'",
|
180 |
+
"version": "==2.10.5"
|
181 |
+
},
|
182 |
+
"pydantic-core": {
|
183 |
+
"hashes": [
|
184 |
+
"sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278",
|
185 |
+
"sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50",
|
186 |
+
"sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9",
|
187 |
+
"sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f",
|
188 |
+
"sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6",
|
189 |
+
"sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc",
|
190 |
+
"sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54",
|
191 |
+
"sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630",
|
192 |
+
"sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9",
|
193 |
+
"sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236",
|
194 |
+
"sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7",
|
195 |
+
"sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee",
|
196 |
+
"sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b",
|
197 |
+
"sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048",
|
198 |
+
"sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc",
|
199 |
+
"sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130",
|
200 |
+
"sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4",
|
201 |
+
"sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd",
|
202 |
+
"sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4",
|
203 |
+
"sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7",
|
204 |
+
"sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7",
|
205 |
+
"sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4",
|
206 |
+
"sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e",
|
207 |
+
"sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa",
|
208 |
+
"sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6",
|
209 |
+
"sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962",
|
210 |
+
"sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b",
|
211 |
+
"sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f",
|
212 |
+
"sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474",
|
213 |
+
"sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5",
|
214 |
+
"sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459",
|
215 |
+
"sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf",
|
216 |
+
"sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a",
|
217 |
+
"sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c",
|
218 |
+
"sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76",
|
219 |
+
"sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362",
|
220 |
+
"sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4",
|
221 |
+
"sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934",
|
222 |
+
"sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320",
|
223 |
+
"sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118",
|
224 |
+
"sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96",
|
225 |
+
"sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306",
|
226 |
+
"sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046",
|
227 |
+
"sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3",
|
228 |
+
"sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2",
|
229 |
+
"sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af",
|
230 |
+
"sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9",
|
231 |
+
"sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67",
|
232 |
+
"sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a",
|
233 |
+
"sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27",
|
234 |
+
"sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35",
|
235 |
+
"sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b",
|
236 |
+
"sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151",
|
237 |
+
"sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b",
|
238 |
+
"sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154",
|
239 |
+
"sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133",
|
240 |
+
"sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef",
|
241 |
+
"sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145",
|
242 |
+
"sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15",
|
243 |
+
"sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4",
|
244 |
+
"sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc",
|
245 |
+
"sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee",
|
246 |
+
"sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c",
|
247 |
+
"sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0",
|
248 |
+
"sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5",
|
249 |
+
"sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57",
|
250 |
+
"sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b",
|
251 |
+
"sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8",
|
252 |
+
"sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1",
|
253 |
+
"sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da",
|
254 |
+
"sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e",
|
255 |
+
"sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc",
|
256 |
+
"sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993",
|
257 |
+
"sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656",
|
258 |
+
"sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4",
|
259 |
+
"sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c",
|
260 |
+
"sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb",
|
261 |
+
"sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d",
|
262 |
+
"sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9",
|
263 |
+
"sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e",
|
264 |
+
"sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1",
|
265 |
+
"sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc",
|
266 |
+
"sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a",
|
267 |
+
"sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9",
|
268 |
+
"sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506",
|
269 |
+
"sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b",
|
270 |
+
"sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1",
|
271 |
+
"sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d",
|
272 |
+
"sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99",
|
273 |
+
"sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3",
|
274 |
+
"sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31",
|
275 |
+
"sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c",
|
276 |
+
"sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39",
|
277 |
+
"sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a",
|
278 |
+
"sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308",
|
279 |
+
"sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2",
|
280 |
+
"sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228",
|
281 |
+
"sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b",
|
282 |
+
"sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9",
|
283 |
+
"sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad"
|
284 |
+
],
|
285 |
+
"markers": "python_version >= '3.8'",
|
286 |
+
"version": "==2.27.2"
|
287 |
+
},
|
288 |
+
"requests": {
|
289 |
+
"hashes": [
|
290 |
+
"sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760",
|
291 |
+
"sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"
|
292 |
+
],
|
293 |
+
"index": "pypi",
|
294 |
+
"markers": "python_version >= '3.8'",
|
295 |
+
"version": "==2.32.3"
|
296 |
+
},
|
297 |
+
"sniffio": {
|
298 |
+
"hashes": [
|
299 |
+
"sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2",
|
300 |
+
"sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"
|
301 |
+
],
|
302 |
+
"markers": "python_version >= '3.7'",
|
303 |
+
"version": "==1.3.1"
|
304 |
+
},
|
305 |
+
"starlette": {
|
306 |
+
"hashes": [
|
307 |
+
"sha256:0e4ab3d16522a255be6b28260b938eae2482f98ce5cc934cb08dce8dc3ba5835",
|
308 |
+
"sha256:44cedb2b7c77a9de33a8b74b2b90e9f50d11fcf25d8270ea525ad71a25374ff7"
|
309 |
+
],
|
310 |
+
"markers": "python_version >= '3.8'",
|
311 |
+
"version": "==0.41.3"
|
312 |
+
},
|
313 |
+
"typing-extensions": {
|
314 |
+
"hashes": [
|
315 |
+
"sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d",
|
316 |
+
"sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"
|
317 |
+
],
|
318 |
+
"markers": "python_version >= '3.8'",
|
319 |
+
"version": "==4.12.2"
|
320 |
+
},
|
321 |
+
"urllib3": {
|
322 |
+
"hashes": [
|
323 |
+
"sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df",
|
324 |
+
"sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"
|
325 |
+
],
|
326 |
+
"markers": "python_version >= '3.9'",
|
327 |
+
"version": "==2.3.0"
|
328 |
+
},
|
329 |
+
"uvicorn": {
|
330 |
+
"hashes": [
|
331 |
+
"sha256:023dc038422502fa28a09c7a30bf2b6991512da7dcdb8fd35fe57cfc154126f4",
|
332 |
+
"sha256:404051050cd7e905de2c9a7e61790943440b3416f49cb409f965d9dcd0fa73e9"
|
333 |
+
],
|
334 |
+
"index": "pypi",
|
335 |
+
"markers": "python_version >= '3.9'",
|
336 |
+
"version": "==0.34.0"
|
337 |
+
}
|
338 |
+
},
|
339 |
+
"develop": {}
|
340 |
+
}
|
api_files/main.py
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from fastapi import FastAPI as APP
|
2 |
+
from api_files.src.middle_api import Middle_Blogger_Api, Base_Blog_Data
|
3 |
+
|
4 |
+
api_fn = APP()
|
5 |
+
|
6 |
+
@api_fn.get("/blog_data/{blog_id}")
|
7 |
+
def get_blog_data(blog_id: str):
|
8 |
+
base_data = Base_Blog_Data(blog_id)
|
9 |
+
blog_data = Middle_Blogger_Api.update_blog_data(base_data)
|
10 |
+
return {"blog_id": blog_id,
|
11 |
+
"blog_data": blog_data.to_json()}
|
12 |
+
|
api_files/src/base_api.py
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import requests
|
2 |
+
import os
|
3 |
+
|
4 |
+
class Base_Blogger_Api:
|
5 |
+
@staticmethod
|
6 |
+
def call_api(method:str=None)->requests.Response:
|
7 |
+
print(os.getenv('MODEL_REPO_ID'))
|
8 |
+
SECRET_APIK = os.getenv('APIKJ')
|
9 |
+
try:
|
10 |
+
base = "https://www.googleapis.com/blogger/v3/"
|
11 |
+
if method is not None:
|
12 |
+
query = f"{base+method}?key={SECRET_APIK}"
|
13 |
+
r = requests.get(query)
|
14 |
+
else:
|
15 |
+
raise ValueError("El método no puede ser nulo.")
|
16 |
+
except Exception as e:
|
17 |
+
print(f"Error al conectar a la API: {e}")
|
18 |
+
r = requests.Response()
|
19 |
+
r.status_code = 502
|
20 |
+
r._content = str(e).encode()
|
21 |
+
finally:
|
22 |
+
return r
|
23 |
+
|
24 |
+
@staticmethod
|
25 |
+
def get_blog_by_id(blog_id:str):
|
26 |
+
return Base_Blogger_Api.call_api(method=f"blogs/{blog_id}")
|
27 |
+
|
28 |
+
@staticmethod
|
29 |
+
def get_all_posts(blog_id:str):
|
30 |
+
return Base_Blogger_Api.call_api(method=f"blogs/{blog_id}/posts")
|
api_files/src/middle_api.py
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from api_files.src.base_api import Base_Blogger_Api
|
2 |
+
from api_files.src.models import Base_Blog_Data, Post
|
3 |
+
|
4 |
+
class Middle_Blogger_Api:
|
5 |
+
@staticmethod
|
6 |
+
def update_blog_data(blog_data:Base_Blog_Data)->Base_Blog_Data:
|
7 |
+
new_blog_data = Base_Blogger_Api.get_blog_by_id(blog_data.id)
|
8 |
+
if new_blog_data:
|
9 |
+
print("Blog Actualizado.")
|
10 |
+
blog_data.nombre = new_blog_data.json().get('name')
|
11 |
+
blog_data.descripcion = new_blog_data.json().get('description')
|
12 |
+
blog_data.url = new_blog_data.json().get('url')
|
13 |
+
blog_data.posts = Middle_Blogger_Api.update_posts_list(blog_data)
|
14 |
+
for _posts in blog_data.posts:
|
15 |
+
for _categoria in _posts.categorias:
|
16 |
+
if _categoria not in blog_data.categorias:
|
17 |
+
blog_data.categorias.append(_categoria)
|
18 |
+
return blog_data
|
19 |
+
|
20 |
+
@staticmethod
|
21 |
+
def update_posts_list(blog_data:Base_Blog_Data)->list:
|
22 |
+
posts_items = Base_Blogger_Api.get_all_posts(blog_data.id).json().get('items')
|
23 |
+
posts_list = []
|
24 |
+
if posts_items:
|
25 |
+
for post_item in posts_items:
|
26 |
+
nuevo_post = Post(post_item.get('id'))
|
27 |
+
nuevo_post.fecha = post_item.get('published')
|
28 |
+
nuevo_post.titulo = post_item.get('title')
|
29 |
+
nuevo_post.contenido = post_item.get('content')
|
30 |
+
nuevo_post.categorias = post_item.get('labels')
|
31 |
+
posts_list.append(nuevo_post)
|
32 |
+
return posts_list
|
api_files/src/models.py
ADDED
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
class Post(object):
|
2 |
+
id:str
|
3 |
+
fecha:str
|
4 |
+
titulo:str
|
5 |
+
contenido:str
|
6 |
+
categorias:list[str]
|
7 |
+
def __init__(self, id:str):
|
8 |
+
self.__id = id
|
9 |
+
self.fecha = str()
|
10 |
+
self.titulo = str()
|
11 |
+
self.contenido = str()
|
12 |
+
self.categorias = ["Nuevos"]
|
13 |
+
|
14 |
+
@property
|
15 |
+
def id(self):
|
16 |
+
return self.__id
|
17 |
+
|
18 |
+
def to_json(self):
|
19 |
+
_json = {"id": self.id,
|
20 |
+
"fecha": self.fecha,
|
21 |
+
"titulo": self.titulo,
|
22 |
+
"contenido": self.contenido,
|
23 |
+
"categorias": self.categorias}
|
24 |
+
return _json
|
25 |
+
|
26 |
+
class Base_Blog_Data(object):
|
27 |
+
nombre:str
|
28 |
+
descripcion:str
|
29 |
+
url:str
|
30 |
+
posts:list[Post]
|
31 |
+
categorias:list[str]
|
32 |
+
def __init__(self, id:str):
|
33 |
+
self.__id = id
|
34 |
+
self.nombre = str()
|
35 |
+
self.descripcion = str()
|
36 |
+
self.url = str()
|
37 |
+
self.posts = []
|
38 |
+
self.categorias = ["Nuevos"]
|
39 |
+
|
40 |
+
@property
|
41 |
+
def id(self):
|
42 |
+
return self.__id
|
43 |
+
|
44 |
+
@staticmethod
|
45 |
+
def filtrar_por_categorias(posts:list[Post], categorias:list[str]):
|
46 |
+
posts_filtrados = []
|
47 |
+
for post in posts:
|
48 |
+
for cat in categorias:
|
49 |
+
if cat in post.categorias and post not in posts_filtrados:
|
50 |
+
posts_filtrados.append(post)
|
51 |
+
return posts_filtrados
|
52 |
+
|
53 |
+
@staticmethod
|
54 |
+
def filtrar_por_categoria(posts:list[Post], categoria:str):
|
55 |
+
posts_filtrados = []
|
56 |
+
for post in posts:
|
57 |
+
if categoria in post.categorias:
|
58 |
+
posts_filtrados.append(post)
|
59 |
+
return posts_filtrados
|
60 |
+
|
61 |
+
@staticmethod
|
62 |
+
def filtrar_por_fecha(posts:list[Post], fecha_inicio:str, fecha_fin:str):
|
63 |
+
posts_filtrados = []
|
64 |
+
for post in posts:
|
65 |
+
if fecha_inicio <= post.fecha <= fecha_fin:
|
66 |
+
posts_filtrados.append(post)
|
67 |
+
return posts_filtrados
|
68 |
+
|
69 |
+
@staticmethod
|
70 |
+
def filtrar_por_titulo(posts:list[Post], titulo:str):
|
71 |
+
posts_filtrados = []
|
72 |
+
for post in posts:
|
73 |
+
if titulo in post.titulo:
|
74 |
+
posts_filtrados.append(post)
|
75 |
+
return posts_filtrados
|
76 |
+
|
77 |
+
@staticmethod
|
78 |
+
def filtrar_por_contenido(posts:list[Post], contenido:str):
|
79 |
+
posts_filtrados = []
|
80 |
+
for post in posts:
|
81 |
+
if contenido in post.contenido:
|
82 |
+
posts_filtrados.append(post)
|
83 |
+
return posts_filtrados
|
84 |
+
|
85 |
+
def to_json(self):
|
86 |
+
_json = {"id": self.id,
|
87 |
+
"nombre": self.nombre,
|
88 |
+
"descripcion": self.descripcion,
|
89 |
+
"url": self.url,
|
90 |
+
"posts": [post.to_json() for post in self.posts],
|
91 |
+
"categorias": self.categorias}
|
92 |
+
return _json
|
93 |
+
|
requirements.txt
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
fastapi==0.115.6
|
2 |
+
uvicorn==0.34.0
|
3 |
+
requests==2.32.3
|