Skip to content

kompot/foo-tunes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

foo-tunes

Project is aimed to help foobar2000 users update their iPods with minimum usage of iTunes. Features are:

  • Bidirectional playback statistics update between iPod/iTunes and foobar2000
  • Tag mappings support (meaningful album sort by year, iTunes compilation tag based on album artist value are included)
  • Album art is attached on-the-fly
  • Separate folder for iPod music (you should put files to be sent to iPod there)
  • Uses iTunes COM interface to interact with iPod, so further updates to iTunes should not break `foo-tunes`

Motivation

There are lots of iPod sync software on the market but most/all of those use some reverse engineered libraries to access iPod. Major iPod software updates often brake those libs. On the other hand there’s a lack of tools that allow precise control on what is done to your music. Among those tools are excellent `foobar2000` media player and its great component for syncing with iPods `foo_dop`. After release of iOS 5 it stopped working, so I decided to write a tool of my own. It uses (and launches) iTunes automatically but minimum effort is required.

Prerequisites

{"Location": "%path%", "Rating": "%rating%", "PlayedCount": "%play_count%", "PlayedDate": "%last_played%", "DateAdded": "%added%"},

Internals

Main script is `foo-tunes.js` (modify variables in the first lines – at least `musicTrackedPath`, `musicNotTrackedPath` and `foobar2000Path`). Run it with `sync.cmd`.

You can pretty easily find what’s going on under the covers by examining `foo-tunes.js` – there’s only very high level logic (for deep internals see files located in `inc` and `lib` folders).

Feel free to modify sources and see what happens. I use oleview tool to explore iTunes COM interfaces. I’ll be pleased to know if you can find a better/cleaner/faster way to do things this script performs.

Recommended workflow

Set up foobar2000 converter component to convert music to `musicNotTrackedPath` folder (or file operations component if you do not want to convert – but I recommend using Nero AAC Encoder as aac provides better quality at a lower bitrate than mp3). Do not forget to copy *.jpg along with music files (there is such option in converter).

Actually you may not use a separate folder but in this case your tags will get modifed by `foo-tunes` (album art added if none, tags mapped if set and playback statistics is first synced to file tags and then imported). Also I would not expect iTunes not to mess up with your library. So keeping a separate folder is a way to go.

Add `musicTrackedPath` as foobar2000 media library folder. This is required if you wish to sync playback statistics with iPod. Stats is synced based on full filename and internal iTunes track id (see `foo-tunes-db.txt` generated after sync).

Before syncing all files are moved from `musicNotTrackedPath` to `musicTrackedPath` and when sync is over back to `musicNotTrackedPath` so you won’t see duplicates in your foobar2000 library.

Changelog

  • 0.0.2 Fixed file system compatibility bugs and made database preserving more robust.
  • 0.0.1 First public version. Lots of bugs are to be found and fixed. Use with caution.

About

Set of scripts and techniques to sync foobar2000 media library with iPod bidirectionally

Resources

Stars

Watchers

Forks

Packages

No packages published