Passer au contenu principal
Jmail Le client Python Jmail est un fichier unique qui ne nécessite aucune installation préalable. Il utilise les dépendances en ligne de PEP 723, donc uv run gère tout automatiquement.

Mise en route

Aucune installation requise. Exécutez simplement avec uv :
uv run clients/python/jmail.py emails --head 5
Ou utilisez-le en tant que bibliothèque dans vos propres scripts :
from jmail import JmailClient

client = JmailClient()
df = client.emails()

Utilisation de la bibliothèque

Utilisation de base

from jmail import JmailClient

client = JmailClient()

# All emails with full body text
df = client.emails()

# Network-only (no body text, much smaller download)
df = client.emails(slim=True)

# Documents avec le texte intégral extrait (télécharge des fichiers fragmentés)
docs = client.documents(include_text=True)

# Photos, people, and facial recognition data
photos = client.photos()
people = client.people()
faces = client.photo_faces()

# iMessage conversations and messages
convos = client.imessage_conversations()
messages = client.imessage_messages()

# Crowd-sourced star counts
stars = client.star_counts()

# Release batch metadata
batches = client.release_batches()

Récupérer les URL brutes

À utiliser avec DuckDB, Polars ou d’autres outils :
url = client.url("emails-slim")
# → "https://data.jmail.world/v1/emails-slim.parquet"

url = client.url("emails-slim", fmt="ndjson.gz")
# → "https://data.jmail.world/v1/emails-slim.ndjson.gz"

Désactiver la mise en cache

# Toujours télécharger la version la plus récente (pas de cache local)
client = JmailClient(cache=False)

Référence de l’interface en ligne de commande

Usage: uv run jmail.py <command> [options]

Commands:
  manifest          Print manifest JSON
  emails            Download emails (--slim for network-only, --head N)
  documents         Download documents (--include-text for full text, --head N)
  photos            Download photos metadata (--head N)
  people            Download people (--head N)
  photo_faces       Download photo face data (--head N)
  imessage_conversations  Download iMessage conversations (--head N)
  imessage_messages       Download iMessage messages (--head N)
  star_counts       Download star counts (--head N)
  release_batches   Download release batches (--head N)
  urls              Print all dataset URLs
  duckdb-examples   Print example DuckDB SQL queries

Options:
  --head N          Show first N rows
  --slim            (emails) Omit body text columns
  --include-text    (documents) Include full extracted text
  --no-cache        Skip local caching, always download fresh

Exemples

# First 10 emails, network-only view
uv run jmail.py emails --slim --head 10

# All documents with full text
uv run jmail.py documents --include-text

# Print dataset URLs for use elsewhere
uv run jmail.py urls

# Obtenir le manifeste avec les sommes de contrôle des jeux de données
uv run jmail.py manifest

# Fresh download (skip cache)
uv run jmail.py emails --no-cache --head 5

Dépendances

Le client comporte trois dépendances, gérées automatiquement par uv :
  • pandas — gestion des DataFrames
  • pyarrow — lecture de fichiers Parquet
  • requests — téléchargements HTTP
Ces dépendances sont déclarées en ligne via PEP 723 :
# /// script
# requires-python = ">=3.9"
# dependencies = ["pandas", "pyarrow", "requests"]
# ///