Skip to content

ames0k0/TT--FastAPI--File-Metadata-Parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

File Metadata Parser

REST API для запуска парсинга и получения сохранённых данных - ТЗ

Скачивание проекта

git clone \
  --single-branch \
  --depth=1 \
  https://github.com/ames0k0/TT--FastAPI--File-Metadata-Parser

cd TT--FastAPI--File-Metadata-Parser

Запуск проекта через Docker Compose

Зависимости
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

REST API Эндпоинты

  • 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

About

REST API to parse and store file metadata

Resources

Stars

Watchers

Forks