Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
File size: 2,937 Bytes
8fce765 266b7fc 8fce765 b628664 8fce765 9fd8477 8fce765 9fd8477 8fce765 549506b 8fce765 9fd8477 8fce765 bacde8d 549506b d7c9dd1 549506b 8fce765 ffd658d 8fce765 d7c9dd1 8fce765 929204e 9fd8477 ffd658d 8fce765 7ddbc0b 8fce765 9fd8477 8fce765 |
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 |
/** @type {import('./$types').RequestHandler} */
import { json } from '@sveltejs/kit';
// import moment from 'moment';
import prisma from '$lib/prisma';
export async function POST({ request }) {
const headers = Object.fromEntries(request.headers.entries());
if (headers["x-hf-token"] !== process.env.SECRET_HF_TOKEN) {
return Response.json({
message: "Wrong castle fam :^)"
}, { status: 401 });
}
const response_models = await fetch(`https://huggingface.co/api/models?limit=200&filter=lora%2Cdiffusers&sort=createdAt&full=true&config=true`)
const new_models = await response_models.json();
// eslint-disable-next-line @typescript-eslint/no-explicit-any
let index = 0;
let model_saved = 0;
for (const model of new_models) {
if (index % 50 === 0) {
await new Promise(resolve => setTimeout(resolve, 2000));
}
index++
const existing_model = await prisma.model.findUnique({
where: {
id: model.id
}
})
if (existing_model) {
continue;
}
const hasImages = model?.siblings?.filter((sibling: Record<string, string>) => sibling?.rfilename.endsWith(".png") || sibling?.rfilename.endsWith(".jpeg") || sibling?.rfilename.endsWith(".jpg"))
if (hasImages.length > 0) {
model.image = hasImages[1]?.rfilename ? `https://huggingface.co/${model.id}/resolve/main/${hasImages[1]?.rfilename}` : `https://huggingface.co/${model.id}/resolve/main/${hasImages[0]?.rfilename}`
} else {
const hasReadme = model?.siblings?.find((sibling: Record<string, string>) => sibling?.rfilename === "README.md")
if (hasReadme) {
const readmeRes = await fetch(`https://huggingface.co/${model.id}/raw/main/README.md`)
const readme = await readmeRes.text().catch(() => null)
if (readme) {
const imageRegex = /!\[.*\]\((.*)\)/
let image = readme.match(imageRegex)?.[1]
if (image) {
image = image.replace(///g, "/")
if (image.startsWith("http")) model.image = image
else model.image = `https://huggingface.co/${model.id}/resolve/main/${image.replace("./", "")}`
}
}
}
}
const base_model = model.tags.find((tag: string) => tag.startsWith("base_model:"))?.split(":")[1] ?? null
await prisma.model.create({
data: {
id: model.id,
...(
model?.image?.startsWith("http") ? {
image: model.image
} : {
image: undefined,
}
),
likes: model.likes,
downloads: model.downloads,
createdAt: model.createdAt,
isPublic: false,
...(base_model ? {
base_model: base_model
} : {}
)
}
})
.then(() => {
model_saved++
})
.catch((error) => {
console.error(error)
})
}
return json({
message: `Successfully added ${model_saved} models`,
})
}
|