> ## Documentation Index
> Fetch the complete documentation index at: https://docs.augustin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Yamtrack

# Yamtrack

Self-hosted media tracker for movies, TV, anime, manga, games, books, and more.

## CSV Bulk Import

To bulk-add media, create a CSV and import it via Django shell. Titles are auto-resolved via TMDB — no IDs needed.

Minimal CSV format:

```csv theme={null}
"media_id","source","media_type","title","image","season_number","episode_number","score","progress","status","start_date","end_date","notes","progressed_at"
"","","tv","The Mandalorian","","","","","","Completed","","","",""
"","","movie","Inception","","","","9.0","","Completed","","","",""
```

* `media_type` (required): `tv`, `movie`, `anime`, `manga`, `game`, `book`, `comic`
* `status` (required): `Completed`, `In progress`, `Planning`, `Paused`, `Dropped`
* `source`: auto-detected if blank (e.g. `tmdb` for tv/movie)
* `score`: optional, 0-10

Import command:

```bash theme={null}
docker exec yamtrack python3 /yamtrack/manage.py shell -c "
import app.forms  # required: force submodule import for shell context
from users.models import User
from integrations.imports.yamtrack import importer
u = User.objects.get(username='augustin')
with open('/yamtrack/db/import.csv', 'rb') as f:
    counts, warnings = importer(f, u, 'new')
    print('Imported:', counts)
    if warnings: print('Warnings:', warnings)
"
```

Place the CSV at `yamtrack/db/import.csv` (mapped to `/yamtrack/db/` in container).

## References

* [CSV format docs](https://github.com/FuzzyGrim/Yamtrack/wiki/Media-Import-Configuration#yamtrack-csv-format)
* [Importer source](https://github.com/FuzzyGrim/Yamtrack/blob/dev/src/integrations/imports/yamtrack.py)
