fwcd / mixync Goto Github PK
View Code? Open in Web Editor NEWCLI tool for copying Mixxx databases and music to and from portable stores
License: MIT License
CLI tool for copying Mixxx databases and music to and from portable stores
License: MIT License
Currently, all playlists and crates are copied even if there are no tracks in them (which can happen e.g. when filtering only a certain directory). We should simply skip these playlists and crates.
It would be cool if mixync could automatically write tags such as title/artist or even beatgrids etc. as Serato tags into the output files (though not by default, perhaps behind a flag?).
...and update the models, including e.g. PlaylistType
accordingly.
mixync [source] [dest]
)mixync @local portable.musiclib
A well-tested progress bar library like tqdm
might produce prettier output and have less overhead than our own solution.
This could be useful to limit the sync to tracks that are already "organized" into a system of crates.
I.e. a "--by-reference" (or "--link") flag or similar
Mostly to avoid confusion if we introduce other local databases (e.g. a hypothetical local Bassment database) in the future.
This could e.g. be useful to eliminate duplicates (merging the best quality version?), merge folders, regroup tracks by a predefined path scheme e.g. ${artist}/${album}
etc.
Perhaps we could do this by writing mixync [source] [source]
, i.e. allowing the source as destination, and perhaps sugaring that to mixync [source]
or mixync --inplace [source]
(though we'd want to be careful to not perform any destructive operations, so perhaps making a backup would be a good idea?)
Once ready, there are a number of neat things we could do with such a portable archive:
mixxxlib
generated by this tool
mixxxlib
along with a web interface, letting the user create playlists/crates directly from the browser?Progress:
--dest-root-dir
absolutize_directory
)absolutize_track
)MixxxStore
To make it easier to evolve the portable database, we should consider integrating a migration framework such as alembic.
Ideally, we'd like to have uniqueness constraints in our portable DB and use upsert operations to insert rows (also we have to be careful since we use different ids in the portable DB compared to the local one)
We should test the library on Windows, especially to make sure that the conversions behave correctly in the presence of non-slash file path separators etc. (the portable db should always use POSIX-style slashes, but during absolutization they should get converted back to platform-specific absolute paths and vice versa)
Add support for filtering e.g. directories, by artist, only specific crates etc etc
This issue tracks support for the mixxxdb
's tables:
library
directories
track_locations
Playlists
PlaylistTracks
crates
crate_tracks
cues
settings
(primarily for the schema version)Out of scope for now:
LibraryHashes
(shouldn't be necessary, but might be nice to have to ensure data integrity?)track_analysis
(contains only waveform analysis, which usually can be generated on-the-fly pretty quickly, beatsgrids and keysgrids are stored under library.beats
and library.keys
, respectively)Third-party libraries are also out of scope:
itunes_library
, itunes_playlist_tracks
, itunes_playlists
rhythmbox_library
, rhythmbox_playlist_tracks
, rhythmbox_playlists
traktor_library
, traktor_playlist_tracks
, traktor_playlists
For example:
It would be cool if we could persist the id mappings locally to skip matching if we already matched the track in the past.
Mixync is tested on schema version 39, we may want to check that the user's version is recent enough too though.
Add a store that talks to a remote Bassment server.
E.g. only download/upload differences between the tracklists
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.