Watch at EaseStories. Answers. Perspective.

Technology · PRACTICAL GUIDE

Move MediaMonkey 4 Play Counts and Last Played to Strawberry

Map MM4 paths, preview two stored statistics, and create a checked Strawberry database copy on Linux with a reviewed copy-only adapter.

Original illustration of separate MediaMonkey and Strawberry database copies producing a new output while originals stay untouched.
Original explanatory illustration: work from coherent copies and produce a separate database; no live profile is replaced. Watch at Ease

Scanning the same music in Strawberry does not restore the history in MediaMonkey 4. This workflow reads PlayCounter and LastTimePlayed from a raw MM4 MM.DB, matches songs already scanned on Linux, and writes only playcount and lastplayed into a new Strawberry database copy.

Use it only for a newly scanned target whose songs still have playcount 0, lastplayed -1 and, when present, skipcount 0. It does not replace a live profile, merge used libraries, transfer ratings or playlists, reconstruct playback events, or recover missing audio.

Prepare coherent copies and an untouched target

Quit both players. Copy the raw MM4 database to MM.DB and the newly scanned Strawberry database to strawberry.db; preserve separate originals. Inputs beside -wal, -shm or -journal are refused. Do not delete those files to fake a coherent backup.

Use raw MM4 data, not an XML export that may contain local times. Keep the target unplayed. Download https://watchatease.com/guide-tools/mm4-to-strawberry-v1.0.1.zip and verify its SHA-256 before extraction; the tests use generated records, not a real library.

Inspect and map every source volume

Run: python3 mm4_to_strawberry.py inspect --mm-db MM.DB --strawberry-db strawberry.db

The report lists actual IDMedia values, raw paths and target URLs. A path like :\Music\Album\Track.flac does not identify its volume, so use the returned IDMedia. Create mapping.json version 1 with one non-overlapping id_media/source_root rule per volume, such as IDMedia 7 and :\Music to /home/YOU/Music.

Stop on an ambiguous match

This version supports the documented raw :\ path form. It does not rebuild drive-letter or UNC paths, fold Linux case, normalize Unicode spellings, or guess by artist/title.

Duplicate target URLs, two histories resolving to one physical file, cue segments, absent target songs and ambiguous matches block the run. Fix the path or library; do not edit the plan to pick an arbitrary row.

Preview every proposed change

Run: python3 mm4_to_strawberry.py preview --mm-db MM.DB --strawberry-db strawberry.db --mapping mapping.json --confirm-mm4-utc --out-dir preview-mm4

Use a new directory and inspect plan.json for known tracks. A clean preview exits 0; blockers exit 2 and leave diagnostics. Supported dates use (date - 25569) × 86400 and range from 1970-01-01 through preview time plus five minutes. Positive count without a valid date blocks; zero with a date remains; zero without one is skipped-no-supported-history.

Apply the unchanged plan and verify the copy

After reviewing a clean plan, run: python3 mm4_to_strawberry.py apply --plan preview-mm4/plan.json --out-dir migrated-mm4

Apply recomputes the preview. Changed databases, mapping, script, audio identity metadata or decisions invalidate the plan. Success creates migrated-mm4/strawberry.db and verification.json without installing or overwriting a live profile.

The report records input/output SHA-256 values, row counts and the plan checksum; compares the full statistics vector; checks all other tables/schema; rejects extra-write triggers; and runs PRAGMA quick_check plus full PRAGMA integrity_check. Confirm the original hashes remain unchanged.

Test in isolation and keep the limits

Test the returned database in a separate OS account or isolated Strawberry data directory. If rejected, keep the original and investigate the schema/build; do not change a version number to force it.

The 57 synthetic tests cover inspect-preview-apply, a pinned schema-11 songs fixture, preservation of unrelated fields/FTS/playlists, ambiguity and changed-input refusals, and 1,000 date conversions under four timezones. They do not prove every release or a real MM4 library.

Only playcount and lastplayed for existing local songs are moved. Ratings, playlists, individual events, used-library merging, missing audio and universal MM3/MM5 support are outside this guide.

Original illustration of path mapping, preview, apply and verification for MediaMonkey play statistics.
Original explanatory illustration: preview exact matches, apply the unchanged plan and read the verification report. Watch at Ease