Skip to main content

Convert files from various sources (SharePoint, S3, Azure Blob, etc.) to Markdown and upload to destinations (Google Drive, SharePoint, etc.).

Project description

Ws-Mark-Flow AI Converter

Convert files from various sources (SharePoint, S3, Azure Blob, etc.) to Markdown and upload to destinations (Google Drive, SharePoint, etc.).

Features

  • Multi-source support: SharePoint, S3, Azure Blob Storage (extensible)
  • Multi-destination support: Google Drive, SharePoint, S3 (extensible)
  • File conversion: PDF, DOCX, PPTX, XLSX, CSV, images, and more → Markdown
  • Incremental conversion: Only converts files not already in destination
  • Job persistence: MongoDB-backed job storage for resumable pipelines
  • REST API: FastAPI-based API for job management
  • Progress tracking: Real-time conversion progress and statistics

Architecture

┌─────────────┐     ┌──────────────┐     ┌───────────────┐
│   Source    │────▶│  Converter   │────▶│  Destination  │
│ (SharePoint)│     │ (MarkItDown) │     │(Google Drive) │
└─────────────┘     └──────────────┘     └───────────────┘
                           │
                    ┌──────▼──────┐
                    │   MongoDB   │
                    │ (Job Store) │
                    └─────────────┘

Installation

# Install dependencies
uv pip install -r requirements.txt

# Copy environment file
cp .env.example .env
# Edit .env with your MongoDB URI

# Run with auto-reload
uvicorn src.main:app --reload --port 8000

API Documentation

Supported Integrations

Sources

  • SharePoint (sharepoint): Microsoft Graph API
  • More coming: S3, Azure Blob, Local filesystem

Destinations

  • Google Drive (google_drive): Google Drive API v3
  • More coming: SharePoint, S3, Azure Blob

Supported File Types

Converted using Microsoft MarkItDown, Docling or LLM-based analysis for complex PDFs & images.

  • Documents: PDF, DOCX, DOC, RTF, TXT
  • Presentations: PPTX, PPT
  • Spreadsheets: XLSX, XLS, CSV
  • Web: HTML, XML, JSON, YAML
  • Images: PNG, JPG, GIF, BMP, TIFF (OCR)

Configuration

Main Environment Variables

Variable Default Description
AUTH_USERNAME admin Basic auth username
AUTH_PASSWORD yourpassword Basic auth password
MONGODB_URI mongodb://localhost:27017 MongoDB connection string
MONGODB_DATABASE converter Database name
TEMP_DIR ./.data/converter Temporary file storage

Development

🔖 requirements

  • install uv venv package management
py -m pip install --upgrade uv
# create venv
uv venv
# activate venv
#win: .venv/Scripts/activate
#linux: source .venv/bin/activate
  • project requirements update
uv pip install --upgrade -r requirements.txt --prerelease
  • build tools
uv pip install --upgrade setuptools build twine 

🪛 build

  • clean dist and build package
if (Test-Path ./dist) {rm ./dist -r -force}; `
python -m build && twine check dist/*
  • linux/mac
[ -d ./dist ] && rm -rf ./dist
python -m build && twine check dist/*

📦 test / 🧪 debugger

Install the package in editable project location

uv pip install -U -e .
uv pip show ws-mark-flow

code quality tools

# .\src\robot
uv pip install -U scanreq prospector[with_everything]
## unused requirements
scanreq -r requirements.txt -p ./src
## style/linting
prospector ./src -t pylint -t pydocstyle
## code quality/complexity
prospector ./src -t vulture -t mccabe -t mypy 
## security
prospector ./src -t dodgy -t bandit
## package
prospector ./src -t pyroma

✈️ publish

  • pypi

    twine upload --verbose dist/* 
    

Docker

  • Build the Docker image (override version at build time if needed)
docker build -t ws-mark-flow ./app

# Copy environment file
cp .env.example ./app/.env
# Edit .env 

docker run -p 80:80 --env-file ./app/.env ws-mark-flow
# use host.docker.internal for MongoDB connection from container to host
docker run --add-host=host.docker.internal:host-gateway -p 80:80 --env-file ./app/.env ws-mark-flow

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ws_mark_flow-0.0.12.tar.gz (99.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ws_mark_flow-0.0.12-py3-none-any.whl (116.4 kB view details)

Uploaded Python 3

File details

Details for the file ws_mark_flow-0.0.12.tar.gz.

File metadata

  • Download URL: ws_mark_flow-0.0.12.tar.gz
  • Upload date:
  • Size: 99.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for ws_mark_flow-0.0.12.tar.gz
Algorithm Hash digest
SHA256 fb6a306eddd2390063cc5a6b79ffba31d0864d7f80d92b132e0e98885b73a1a5
MD5 72ccd39dae81ba79d84af391231bed15
BLAKE2b-256 8177166a2b332f004880729a1d7f1a2a92e0bda97d688b7323cd6fd5aa9eeeea

See more details on using hashes here.

File details

Details for the file ws_mark_flow-0.0.12-py3-none-any.whl.

File metadata

  • Download URL: ws_mark_flow-0.0.12-py3-none-any.whl
  • Upload date:
  • Size: 116.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for ws_mark_flow-0.0.12-py3-none-any.whl
Algorithm Hash digest
SHA256 1717410c2b8c273a05d9db40ee6d840c8a45e73c1e521d2cad73fc2290c22aa4
MD5 16ef0dcd086727610d56fb7ea19acd83
BLAKE2b-256 6d5e3ea742657287cf9b6ecb92fb7e59ba4442e6ac47adbebe0b5ea7e17900b5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page