backend: initial

This commit is contained in:
OleSTEEP 2025-09-28 15:59:46 +03:00
parent e5932844e2
commit b62f6d87c7
33 changed files with 59 additions and 15 deletions

3
.gitignore vendored
View file

@ -1,2 +1,5 @@
.venv/
venv/
__pycache__/
.idea/
.DS_Store

32
backend/main.py Normal file
View file

@ -0,0 +1,32 @@
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from vntypes import Novel
app = FastAPI()
origins = [
"http://localhost",
"http://localhost:5173",
]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/posts/{uuid}")
def get_post(uuid: str):
return uuid
@app.post("/new")
def new_post(novel: Novel):
print(novel)
return "yay!"

View file

@ -1,17 +1,20 @@
from pydantic import BaseModel
from datetime import datetime
class Novel:
class Novel(BaseModel):
title: str
description: str
vndb: int
vndb: int | None = None
hours_to_read: int
tags: list[str]
genres: list[str]
badges: list[str]
tg_post: str #url::Url
post_at: datetime
tg_post: str | None = None #url::Url
post_at: datetime | None = None
class FullNovel:
data: Novel

View file

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 119 KiB

After

Width:  |  Height:  |  Size: 119 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before After
Before After

View file

@ -11,15 +11,21 @@
let page_data = $state({
title: "",
description: "",
time_to_read: "",
hours_to_read: 0,
genres: [],
tags: [],
badges: [],
pub_date: ""
badges: []
})
function send_json() {
console.log(JSON.stringify(page_data))
fetch('http://127.0.0.1:8000/new', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': "<origin>"
},
body: JSON.stringify(page_data)
});
}
</script>
@ -43,11 +49,11 @@
<!-- Время на чтение -->
<div class="horisontal-bar">
<p>Время на чтение</p>
<select class="input rounded" id="hours-count" bind:value={page_data["time_to_read"]}>
<option value="first">менее 2-х часов</option>
<option value="second">2-10 часов</option>
<option value="third">10-30 часов</option>
<option value="third">50+ часов</option>
<select class="input rounded" id="hours-count" bind:value={page_data["hours_to_read"]}>
<option value="2">менее 2-х часов</option>
<option value="10">2-10 часов</option>
<option value="30">10-30 часов</option>
<option value="50">50+ часов</option>
</select>
</div>

View file

@ -1,9 +1,9 @@
{
"title": "Higurashi no Naku Koro ni. Console-exclusive Arcs (Когда плачут цикады. Эксклюзивные главы)",
"description": "Эксклюзивные главы для консольных версий \"Higurashi no Naku Koro ni\". Главы рекомендуется читать после ознакомления с оригинальными главами.\n\nUPD: На данный момент переведены: Taraimawashi, Tsukiotoshi, Hajisarashi, Miotsukushi и Материалы полиции\n\nОписание глав:\n\nTaraimawashi - Альтернативная первая глава, на первый взгляд — это дополнение к арке \"Вопросов\", пересказ Onikakushi-hen. Тем не менее, эта глава на самом деле содержит события Watanagashi-hen.\nУзнав секреты Хинамидзавы, Кейти решает игнорировать всё и наслаждаться мирной школьной жизнью.\nTsukiotoshi - Оригинальная консольная глава, которая является развилкой для третьей главы \"Tatarigoroshi\".\nДядя Сатоко приезжает в Хинамидзаву, и Кейти решает найти союзников, чтобы помочь Сатоко. Возможно, \"худший\" из миров, где на кубиках выпали одни \"единицы.\"\nHajisarashi - одним жарким днём Рика и её друзья идут в бассейн.\nMiotsukushi - альтернативная концовка всей оригинальной серии.\nМатериалы полиции - краткие истории по длине равных TIPS, которые немного раскрывают Оиши и Акасаку..[/i]",
"time_to_read": 4,
"hours_to_read": 50,
"genres": [ "Драма", "Хоррор", "Детектив", "Мистика", "Повседневность" ],
"tags": [ "Иностранный разработчик", "Несколько главных героев" ],
"badges": [ "Лучшее" ],
"pub_date": "2024-04-13T08:30:00Z"
"post_at": "2024-04-13T08:30:00Z"
}