znek / itunesfs Goto Github PK
View Code? Open in Web Editor NEWHome Page: http://www.mulle-kybernetik.com/software/iTunesFS/
License: BSD 3-Clause "New" or "Revised" License
Home Page: http://www.mulle-kybernetik.com/software/iTunesFS/
License: BSD 3-Clause "New" or "Revised" License
rsync --recursive --verbose --itemize-changes --modify-window=2 --exclude "PlaylistsTrackFormat.txt" --delete /Volumes/iTunesFS/Playlists/By-Device/mp3-player/ /Volumes/MP3-PLAYER-VOLUME/My-Playlist/
I do not use rsync's commonplace -a
--archive
flag, because the whole Unix stuff which is included in --archive
(owner, group, permissions) will always differ if the destination is a FAT formatted drive, which is the case for most mp3 players.
--exclude "PlaylistsTrackFormat.txt"
because we don't needs them at the destination. Some very dumb and chunky players may even choke on a text file and abort playback. More clever ones will skip it. But by excluding it in the sync we avoid that problem beforehand.
--modify-window=2
because --modify-window=0
is too strict, because due to FAT's lower time resolution for the timestamps will often differ even though it it's the same unchanged file.
Alternatively you can simply use --ignore-existing
instead of --modify-window
. Then any file which is already at the destination with this name is assumed as being same as on the source and skipped. Should you have updated an MP3's cover art or ID3 tags these changes would be undetected. But to simply compare by filename is the most rudimentary comparison, which may be handy for some use cases.
Beware that in your iTunesFS file naming scheme you use %(playlistNumber)
then if you change the track order in a playlist, the filename changes and is considered as new, even though it is the same. If you just delete a single track from such a playlist all tracks thereafter have their playlistNumber shifted and would re-copy on the next sync!
@users: I hope this hints may be handy for you.
@znek : Feel free to integrate this to Readme.me or the projects's website's FAQ.
This is more/less a duplicate of #1 but I tried to be as specific as possible with my observations, and also included an idea
/Volumes/iTunesFS/AlbumsTrackFormat.txt
/Volumes/iTunesFS/Albums/*
open refresh the file names according to your format change ca 2-3 secs after the config file was updated./Volumes/iTunesFS/PlaylistsTrackFormat.txt
/Volumes/iTunesFS/Playlists/*
open refresh their file names according to your format change in the config file only some 1-3minutes later.I guess the speed difference comes for the following reasons:
/Volumes/iTunesFS/AlbumsTrackFormat.txt
/Volumes/iTunesFS/AlbumsTrackFormat.txt
plus an override PlaylistsTrackFormat.txt
at each playlist folder within /Volumes/iTunesFS/Playlists/*
./Volumes/iTunesFS/AlbumsTrackFormat.txt
this change is (virtually) written to each PlaylistsTrackFormat.txt
which does not divert from the standard definition. I do not know how it is implemented, whether this is only pointing to the central definition, or some real writing takes place. If the later, yeah than ofc this recursion takes quite some time.PlaylistsTrackFormat.txt
in each playlists track or else fall back to the central definition. Also quite some lookup work I guess./Volumes/iTunesFS/PlaylistsTrackFormat.txt
%(artist) - %(album) - %(trackNumber#00) %(name).%(ext.lowercaseString)
For classical music I often only state the composer and leave the artist field empty.
With a stubborn filename formatter I get results like this:
/Volumes/iTunesFS/Playlists/Genre/Classical
- Requiem en ré mineur KV 626 - 04 Tuba mirum.mp3
Introduce "if exists bracket" as a new syntax element
%()
— The syntax as it currently is. Outputs the tag value.*{}
*()
- Output tag if it exists*{tag plus freetext}{tag2 plus freetext}{tag3}{freetext only as last alternative}
*{%(composer) - }*{%(artist) - }*(trackNumber#00) - }%(name).%(ext.lowercaseString)
*{%(composer)}{%(artist)} - *(trackNumber#00) - }%(name).%(ext.lowercaseString)
*{%(artist) - }*{%(album) - }*(trackNumber#00) - }%(name).%(ext.lowercaseString)
%(artist) - *{%(trackNumber#00)}{00}%(name).%(ext.lowercaseString)
/Volumes/iTunesFS/AlbumsTrackFormat.txt
%(playlistNumber#000) %(artist) - %(album) - %(trackNumber#00) %(name).%(ext.lowercaseString)
%(playlistNumber#000) %(artist) - %(album) - %(trackNumber) %(name).%(ext.lowercaseString)
Hi there,
when adding songs to a playlist in iTunes, the folder in the corresponding iTunesFS volume doesn't update it's contents.
Only ejecting the volume and opening the iTunesFS app (which remounts the volume) updates the folder contents.
Is there a better way? (hourly auto-update oder a hidden terminal command)
Can't find any options for that.
I read your FAQ, specifically on what you are likely not to implement or surely never going to implement. But as I am not a developer by trade, and not at all familiar with how such virtual/filesystems work I nevertheless make a proposal, more than being rejected cannot happen 😉
iTunesFs gets additional configuration parameters:
Carbon Copy Cloner 5.1.28 on macOS 11.6.6 Big Sur
CCC cannot read the contents of the source volume because they are inaccessible to the System Administrator user account.
CCC cannot back up to or from an OS X FUSE volume mounted without the "allow_root" or "allow_other" option.
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.