Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
add filtering options
Browse files
app.py
CHANGED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
import os
|
2 |
import re
|
3 |
import aiohttp
|
@@ -176,12 +177,12 @@ async def sync_data():
|
|
176 |
"class": classifier
|
177 |
})])
|
178 |
db.commit()
|
179 |
-
|
180 |
-
if(len(models) > 0):
|
181 |
print("Updating repository")
|
182 |
subprocess.Popen(
|
183 |
"git add . && git commit --amend -m 'update' && git push --force", cwd=DB_FOLDER, shell=True)
|
184 |
-
else:
|
185 |
print("No new models found")
|
186 |
|
187 |
app = FastAPI()
|
@@ -203,18 +204,31 @@ app.add_middleware(
|
|
203 |
MAX_PAGE_SIZE = 30
|
204 |
|
205 |
|
|
|
|
|
|
|
|
|
|
|
|
|
206 |
@ app.get("/api/models")
|
207 |
-
def get_page(page: int = 1):
|
208 |
page = page if page > 0 else 1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
209 |
with database.get_db() as db:
|
210 |
cursor = db.cursor()
|
211 |
-
cursor.execute("""
|
212 |
SELECT *, COUNT(*) OVER() AS total
|
213 |
FROM models
|
214 |
WHERE json_extract(data, '$.likes') > 4
|
215 |
-
ORDER BY
|
216 |
-
LIMIT
|
217 |
-
"""
|
218 |
results = cursor.fetchall()
|
219 |
total = results[0]['total'] if results else 0
|
220 |
total_pages = (total + MAX_PAGE_SIZE - 1) // MAX_PAGE_SIZE
|
@@ -230,8 +244,8 @@ def read_root():
|
|
230 |
return "Just a bot to sync data from diffusers gallery"
|
231 |
|
232 |
|
233 |
-
@app.on_event("startup")
|
234 |
-
@repeat_every(seconds=60 * 60 * 24, wait_first=
|
235 |
-
async def repeat_sync():
|
236 |
-
|
237 |
-
|
|
|
1 |
+
from enum import Enum
|
2 |
import os
|
3 |
import re
|
4 |
import aiohttp
|
|
|
177 |
"class": classifier
|
178 |
})])
|
179 |
db.commit()
|
180 |
+
|
181 |
+
if (len(models) > 0):
|
182 |
print("Updating repository")
|
183 |
subprocess.Popen(
|
184 |
"git add . && git commit --amend -m 'update' && git push --force", cwd=DB_FOLDER, shell=True)
|
185 |
+
else:
|
186 |
print("No new models found")
|
187 |
|
188 |
app = FastAPI()
|
|
|
204 |
MAX_PAGE_SIZE = 30
|
205 |
|
206 |
|
207 |
+
class Sort(str, Enum):
|
208 |
+
trending = "trending"
|
209 |
+
recent = "recent"
|
210 |
+
likes = "likes"
|
211 |
+
|
212 |
+
|
213 |
@ app.get("/api/models")
|
214 |
+
def get_page(page: int = 1, sort: Sort = Sort.trending):
|
215 |
page = page if page > 0 else 1
|
216 |
+
if sort == Sort.trending:
|
217 |
+
sort_query = "json_extract(data, '$.likes') / POWER((JULIANDAY('now') - JULIANDAY(datetime(json_extract(data, '$.lastModified')))) + 2, 2) DESC"
|
218 |
+
elif sort == Sort.recent:
|
219 |
+
sort_query = "datetime(json_extract(data, '$.lastModified')) DESC"
|
220 |
+
elif sort == Sort.likes:
|
221 |
+
sort_query = "json_extract(data, '$.likes') DESC"
|
222 |
+
|
223 |
with database.get_db() as db:
|
224 |
cursor = db.cursor()
|
225 |
+
cursor.execute(f"""
|
226 |
SELECT *, COUNT(*) OVER() AS total
|
227 |
FROM models
|
228 |
WHERE json_extract(data, '$.likes') > 4
|
229 |
+
ORDER BY {sort_query}
|
230 |
+
LIMIT {MAX_PAGE_SIZE} OFFSET {(page - 1) * MAX_PAGE_SIZE}
|
231 |
+
""")
|
232 |
results = cursor.fetchall()
|
233 |
total = results[0]['total'] if results else 0
|
234 |
total_pages = (total + MAX_PAGE_SIZE - 1) // MAX_PAGE_SIZE
|
|
|
244 |
return "Just a bot to sync data from diffusers gallery"
|
245 |
|
246 |
|
247 |
+
# @app.on_event("startup")
|
248 |
+
# @repeat_every(seconds=60 * 60 * 24, wait_first=True)
|
249 |
+
# async def repeat_sync():
|
250 |
+
# await sync_data()
|
251 |
+
# return "Synced data to huggingface datasets"
|