{"id":15707241,"url":"https://github.com/fwcd/mixync","last_synced_at":"2025-05-12T19:42:05.115Z","repository":{"id":98826195,"uuid":"478274978","full_name":"fwcd/mixync","owner":"fwcd","description":"CLI tool for copying Mixxx databases and music to and from portable stores","archived":false,"fork":false,"pushed_at":"2022-04-30T14:35:31.000Z","size":166,"stargazers_count":8,"open_issues_count":16,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-01T02:48:21.941Z","etag":null,"topics":["backup","cli","mixxx","mixxxdb","sync"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fwcd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-05T19:37:28.000Z","updated_at":"2024-10-22T20:43:28.000Z","dependencies_parsed_at":"2023-05-25T16:15:29.100Z","dependency_job_id":null,"html_url":"https://github.com/fwcd/mixync","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fwcd%2Fmixync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fwcd%2Fmixync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fwcd%2Fmixync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fwcd%2Fmixync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fwcd","download_url":"https://codeload.github.com/fwcd/mixync/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253809470,"owners_count":21967732,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backup","cli","mixxx","mixxxdb","sync"],"created_at":"2024-10-03T20:38:39.182Z","updated_at":"2025-05-12T19:42:05.083Z","avatar_url":"https://github.com/fwcd.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mixync\n\n[![Typecheck](https://github.com/fwcd/mixync/actions/workflows/typecheck.yml/badge.svg)](https://github.com/fwcd/mixync/actions/workflows/typecheck.yml)\n\nLike `rsync` but for Mixxx databases and music.\n\n\u003e **NOTE: The project is still in very early stages, so please make sure to back up your mixxxdb and your music before trying it. Additionally the portable database's schema should be considered _unstable_ until we have a proper solution for database migrations and schema versioning in place (e.g. using alembic), see [#11](https://github.com/fwcd/mixync/issues/11).**\n\n```\n+-------------------+\n|    Your local     |\n|  mixxxdb.sqlite   |   \u003c--+                +--------------------------+\n+-------------------+      |                | A portable musiclib with |\n                           +--\u003e mixync \u003c--\u003e |  all your tracks, cues,  |\n+-------------------+      |                | grids and other metadata |\n|    Your local     |   \u003c--+                +--------------------------+\n|   music folders   |\n+-------------------+\n```\n\nA small CLI tool for copying a Mixxx database along with tracks to and from a portable and relocatable folder (`*.musiclib`) for archival, storage on a flash drive, a web server, etc.\n\n## Usage\n\nAll invocations of `mixync` follow the same pattern, roughly analogous to `rsync` or `cp`:\n\n```sh\nmixync [source] [dest]\n```\n\nwhere `source` and `dest` are so-called _refs_, which describe a store for metadata and music. Each ref can be one of the following:\n\n- A local mixxxdb, e.g. `@local`, `path/to/mixxxdb.sqlite`\n- A portable musiclib, e.g. `path/to/library.musiclib`\n- A debug output that prints updates just to stdout, either `@debug` or `@debugcompact`\n\nFor example:\n\n```sh\n# Copy your local mixxxdb and music to a portable musiclib\nmixync @local ~/my-library.musiclib\n```\n\n```sh\n# Copy a portable musiclib to your local mixxxdb and music folders\nmixync ~/my-library.musiclib @local\n```\n\nMore advanced examples include:\n\n```sh\n# Copy only tracks and playlists from your local mixxxdb to a portable musiclib\nmixync -f tracks,playlists @local ~/my-library.musiclib\n```\n\n```sh\n# Copy only tracks and crates from the directory named 'MyCollection' from your local mixxxdb to a portable musiclib\nmixync -f tracks,crates -d MyCollection @local ~/my-library.musiclib\n```\n\n\u003e Note: While you can omit tracks e.g. by specifying `-f crates` to only copy crates, this usually isn't meaningful since the copied crates will always be empty (since no tracks were copied, thus no track ids were mapped). The same applied to playlists.\n\n## Portable Musiclib Structure\n\nA portable `musiclib` (a new format introduced by this tool) as generated by `mixync` has the following directory structure:\n\n```\nmy-library.musiclib\n- library.sqlite3           \u003c- Tracks (with portable paths), playlists, crates and cues\n- folder1                   \u003c- Exported music folder\n  - track1.mp3\n  - track2.mp3\n    ...\n- folder2                   \u003c- Exported music folder\n  - track1.mp3\n  - track2.mp3\n    ...\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffwcd%2Fmixync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffwcd%2Fmixync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffwcd%2Fmixync/lists"}