REST API для запуска парсинга и получения сохранённых данных - ТЗ
git clone \
--single-branch \
--depth=1 \
https://github.com/ames0k0/TT--FastAPI--File-Metadata-Parser
cd TT--FastAPI--File-Metadata-ParserЗависимости
docker -v # Docker version 27.5.1, build 9f9e405 python -V # Python 3.12.8
docker compose up -d --build| Сервис | Документация / SwaggerUI |
|---|---|
| http://127.0.0.1:8000/ | http://127.0.0.1:8000/docs |
-
GET /suip-data - Список сохранённых результатов с возможностью фильтрации
Параметры запроса Тип Описание Ключ=Значение Строка Фильтр по метаданным curl -X 'GET' \ 'http://127.0.0.1:8000/suip-data' \ -H 'accept: application/json'
# MIME тип=application/pdf curl -X 'GET' \ 'http://127.0.0.1:8000/suip-data?MIME%20%D1%82%D0%B8%D0%BF=application/pdf' \ -H 'accept: application/json'
[ { "id": "b4218b17-80f2-4172-b4f2-c731075b08f8", "fs_path": "static/file_metadata/b4218b17-80f2-4172-b4f2-c731075b08f8.json", "name": "тестовое задания.pdf", "available_metadata": { "Версия ExifTool": "13.30", "Название файла": "fileforsending", "Каталог": "/tmp", "Размер файла": "91 kB", "Дата редактирования файла": "2025:07:03 01:24:29+03:00", "Дата последнего доступа к файлу": "2025:07:03 01:24:29+03:00", "Дата изменения файлового индекса": "2025:07:03 01:24:29+03:00", "Разрешения файла": "-rw-r--r--", "Тип файла": "PDF", "Расширение файла": "pdf", "MIME тип": "application/pdf", "Версия PDF": "1.4", "Линеаризация": "Нет", "Количество страниц": "1", "Тегированный PDF": "Да", "Название": "тестовое задания", "Производитель": "Skia/PDF m139 Google Docs Renderer" } } ]
-
POST /suip-data/parse - Ручной запуск парсинга
Тело запроса Тип Описание file Файл Файл для парсинга curl -X 'POST' \ 'http://127.0.0.1:8000/suip-dataparse' \ -H 'accept: application/json' \ -H 'Content-Type: multipart/form-data' \ -F 'file=@тестовое задания.pdf;type=application/pdf'
Остановка и удаление проекта
- Docker-образов, Docker-контейнеров, Хранилище, Сети
docker compose down --volumes --rmi localФайловая структура проекта
tree -a -I ".git|.venv|__pycache__|_readme|static|pgdata|__init__.py" --dirsfirst├── src │ ├── core │ │ └── config.py │ ├── services │ │ └── suip_data.py │ └── main.py ├── docker-compose.yml ├── Dockerfile ├── pyproject.toml ├── README.md ├── requirements.txt └── uv.lock
Использованные технологии
| Название | Ссылки |
|---|---|
| FastAPI | https://fastapi.tiangolo.com |
| Uvicorn | https://www.uvicorn.org/ |
| PostgreSQL | https://www.postgresql.org/ |
| requests | https://requests.readthedocs.io/en/latest/ |
| bs4 | https://www.crummy.com/software/BeautifulSoup/bs4/doc/ |
| Docker Compose | https://docs.docker.com/compose |

