mirror of
https://github.com/StepanovPlaton/torrent_backend.git
synced 2026-04-03 12:20:38 +04:00
Add readme, screenshots and small fixes
This commit is contained in:
42
README.md
Normal file
42
README.md
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
# .Torrent backend
|
||||||
|
> .Torrent - сервис обмена .torrent файлами видеоигр, фильмов и аудиокниг
|
||||||
|
|
||||||
|
## Стек
|
||||||
|
- Python 3.12
|
||||||
|
- FastAPI (REST API)
|
||||||
|
- Pydantic
|
||||||
|
- SQLAlchemy (ORM, async)
|
||||||
|
- и другие
|
||||||
|
- Typer
|
||||||
|
- dotenv
|
||||||
|
- asyncio и aiofiles
|
||||||
|
- Pillow
|
||||||
|
- hashlib
|
||||||
|
|
||||||
|
## Возможности
|
||||||
|
- Получение, добавление, изменение и удаление трёх типов сущностей (видеоигр, фильмов и аудиокниг)
|
||||||
|
- Загрузка файлов (.torrent файлы, обложки, аудиофрагменты)
|
||||||
|
- Авторизация через JWT токен
|
||||||
|
- Вся конфигурация через файл .env (или переменные среды), для удобного запуска в Docker контейнере
|
||||||
|
- Лёгкое переключение между разными БД (в тестовом окружении используется SQLite, в контейнере PostgreSQL)
|
||||||
|
- Автодокументация с помощью Swagger
|
||||||
|
|
||||||
|
## Скриншоты
|
||||||
|
|
||||||
|
| Пример автодокументации (Swagger)|
|
||||||
|
|-|
|
||||||
|
| Пример главной страницы приложения (Frontend)|
|
||||||
|
| Пример страницы с информацией о фильме (Frontend)|
|
||||||
|
|
||||||
|
## Запуск
|
||||||
|
### Локально
|
||||||
|
pip install -r ./requirements.txt
|
||||||
|
./main database create
|
||||||
|
fastapi dev ./main.py
|
||||||
|
|
||||||
|
## ToDo
|
||||||
|
- [ ] Dockerfile
|
||||||
|
- [ ] Добавить ссылку на общий репозиторий
|
||||||
|
- [ ] Обновить requirements.txt
|
||||||
|
- [ ] Теги жанров для сущностей
|
||||||
|
- [ ] Поиск
|
||||||
@@ -30,7 +30,7 @@ async def edit_audiobook(db: AsyncSession,
|
|||||||
audiobook_info: sch.AudiobookCreate):
|
audiobook_info: sch.AudiobookCreate):
|
||||||
audiobook = await db.get(mdl.Audiobook, audiobook_id)
|
audiobook = await db.get(mdl.Audiobook, audiobook_id)
|
||||||
for key, value in vars(audiobook_info).items():
|
for key, value in vars(audiobook_info).items():
|
||||||
if (value and value is not None and getattr(audiobook, key) != value):
|
if (getattr(audiobook, key) != value):
|
||||||
setattr(audiobook, key, value)
|
setattr(audiobook, key, value)
|
||||||
setattr(audiobook, "update_date", strftime("%Y-%m-%d %H:%M:%S"))
|
setattr(audiobook, "update_date", strftime("%Y-%m-%d %H:%M:%S"))
|
||||||
await db.commit()
|
await db.commit()
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ async def edit_game(db: AsyncSession,
|
|||||||
game_info: sch.GameCreate):
|
game_info: sch.GameCreate):
|
||||||
game = await db.get(mdl.Game, game_id)
|
game = await db.get(mdl.Game, game_id)
|
||||||
for key, value in vars(game_info).items():
|
for key, value in vars(game_info).items():
|
||||||
if (value and value is not None and getattr(game, key) != value):
|
if (getattr(game, key) != value):
|
||||||
setattr(game, key, value)
|
setattr(game, key, value)
|
||||||
setattr(game, "update_date", strftime("%Y-%m-%d %H:%M:%S"))
|
setattr(game, "update_date", strftime("%Y-%m-%d %H:%M:%S"))
|
||||||
await db.commit()
|
await db.commit()
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ async def edit_movie(db: AsyncSession,
|
|||||||
movie_info: sch.MovieCreate):
|
movie_info: sch.MovieCreate):
|
||||||
movie = await db.get(mdl.Movie, movie_id)
|
movie = await db.get(mdl.Movie, movie_id)
|
||||||
for key, value in vars(movie_info).items():
|
for key, value in vars(movie_info).items():
|
||||||
if (value and value is not None and getattr(movie, key) != value):
|
if (getattr(movie, key) != value):
|
||||||
setattr(movie, key, value)
|
setattr(movie, key, value)
|
||||||
setattr(movie, "update_date", strftime("%Y-%m-%d %H:%M:%S"))
|
setattr(movie, "update_date", strftime("%Y-%m-%d %H:%M:%S"))
|
||||||
await db.commit()
|
await db.commit()
|
||||||
|
|||||||
BIN
screenshots/main.png
Normal file
BIN
screenshots/main.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 613 KiB |
BIN
screenshots/movie.png
Normal file
BIN
screenshots/movie.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 716 KiB |
BIN
screenshots/swagger.png
Normal file
BIN
screenshots/swagger.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 158 KiB |
Reference in New Issue
Block a user