iTunes2Spotify ============== Author: Michael Rupp Website: https://itunes2spotify.mrupp.ch/ Description: Analyses your iTunes library and allows you to export your playlists either to text files such as CSV, M3U, Extended M3U, PLS, WPL (Windows Media Player playlist), Excel XML or directly to your Spotify account. If a track cannot be mapped or found on Spotify, you're able to search and map manually. Featuring lots of options for both types of export. History ------------------------- 2.6.8493 Win (03.04.2023) 3.4.8493 Mac (03.04.2023) ------------------------- - NEW: allowing the following separator strings for multiple artists recognition: ";", "; " and "/" ------------------------- 2.6.8254 Win (07.08.2022) 3.4.8254 Mac (07.08.2022) ------------------------- - NEW: improved search algorithm concerning tracks having multiple artists - FIXED: possible 404 error if the search string exceeded Spotify's limit of 100 characters. ------------------------- 2.6.8141 Win (16.04.2022) 3.4.8141 Mac (16.04.2022) ------------------------- - NEW: improved search algorithm: searching without album criteria when comparing track lengths; ignoring dashes in names; ignoring "the" in artists names - NEW: skipping tracks without location when exporting them to files in the following formats: M3U, extended M3U, PLS and WPL - FIXED: crash when exporting tracks without location to files ------------------------- 2.6.7821 Win (31.05.2021) 3.4.7821 Mac (31.05.2021) ------------------------- - NEW: Support for Spotify IDs in the source XML file as exported from SonoSaver (https://sonosaver.mrupp.ch/). - NEW: added file export formats CSV and Excel-XML - NEW: Slightly reworked GUI: larger icons (Windows) and "Export to Spotify" is now the first tab as it's the main feature. - FIXED: WPL export: HTML-encoding of special characters ------------------------- 3.3.7672 Mac (02.01.2021) ------------------------- - FIXED: Compatibility issue with macOS Big Sur ------------------------- 2.5.7639 Win (31.11.2020) 3.3.7639 Mac (31.11.2020) ------------------------- - NEW: Improved search algorithm concerning tracks having multiple artists. - NEW: Added column "File Type" to the track grid. ------------------------- 3.3.7239 Mac (27.10.2019) ------------------------- - NEW: Version that runs on MacOS X Catalina. If Catalina is detected, the app will run in 64bit mode. A disadvantage of this is, that the menu cannot be integrated into the Mac menu as it is in 32bit mode. ------------------------- 2.5.7236 Win (24.10.2019) 3.3.7236 Mac (24.10.2019) ------------------------- - FIXED: crash while analyzing he XML file if the total time of a track (in milliseconds) was larger than Int32. ------------------------- 2.5.7174 Win (23.08.2019) 3.3.7174 Mac (23.08.2019) ------------------------- - NEW: export option so save tracks to your liked songs according to your rating in iTunes, either by amount of stars or the favorite (heart) icon. Of course, saving them all without condition is still possible. - NEW: program version and Spotify export options are now logged. - NEW: improved log messages concerning multiple findings but no matches. - FIXED: Spotify relabled "Save to Your Music Library" to "Save to your liked songs". Changed my labels accordingly. - FIXED: crash if the duration of a track was undefined (is the case with radio stations). - FIXED: crash if the track's name was undefined. - FIXED: showing a message if the settings directory cannot be created. ------------------------- 2.4.7055 Win (26.04.2019) 3.2.7055 Mac (26.04.2019) ------------------------- - NEW: Improved search algorithm some more: searching without "the" prefixes (thanks to Dave T. for the input). - NEW: The path to a manually selected iTunes XML file is now remembered (thanks to Ralph V. for the input). - NEW: Improved error handling if the iTunes XML file is corrupt. No more crashing but an error message showing. - FIXED: When re-analyzing the iTunes XML file, the node states (checked, expanded) are kept. Windows version: - NEW: The input control for the amount of allowed delta seconds now has up/down arrows like in the Mac version. - FIXED: Playlist trees: node states (checked, expanded) are now remembered again (introduced in v2.4.7034). Mac version: - FIXED: Don't restrict the amount of allowed delta seconds to 100 anymore. Text alignment set to "right" like in the Windows version. - FIXED: Manual search dialog: restriction of max. search results set to 1000 like in the Windows version. Text alignment set to "center" like in the Windows version. ------------------------- 2.4.7034 Win (05.04.2019) 3.2.7034 Mac (05.04.2019) ------------------------- - NEW: Improved search algorithm: comparing artist's and track's names is now less strict, which brings better results. - NEW: Saved search results, album/artist aliases, albums/artists to skip are now saved including the current datetime and currently exporting playlist name. This makes it easier to manage this data. - NEW: Playlist trees: hiding playlists that don't contain any tracks. - NEW: Logging matches with their track names, artists and albums instead of just the Spotify URI. - NEW: When finding a match by comparing the durations, the durations is logged as mm:ss.msmsms instead of just milliseconds. - NEW: Stopping playback when closing the manual search dialog and having a local file playing (with a nice fadeout). - FIXED: german translation of log entry "Artist: {0}, Track: {1}, Album: {2}" Windows version: - NEW: Playlist trees: toolbar instead of context menu like in the Mac version. - NEW: Grids: some layout optimisations concerning borders. - FIXED: Manage search results: F2 and Enter key now invoke the manual search dialog. ------------------------- 2.3.7022 Win (24.03.2019) 3.1.7022 Mac (24.03.2019) ------------------------- - NEW: Added some more columns to the track grid: "Album Loved", "Disliked", "Playlist Only", "Movement Name", "Movement Number" and "Movement Count" - FIXED: Unhandled exception when skipping an album or an artist on a track of type "Remote" (without a local file in the filesystem). Thanks to Piotr G. to bring this to my attention. ------------------------- 2.3.7013 Win (15.03.2019) 3.1.7013 Mac (15.03.2019) ------------------------- - NEW: Saving the search results more often during the export to ensure that they are not lost in case of a crash or something. It is ensured that never more than 10 results are kept unsaved in memory. - NEW: Option to save the Spotify mappings for future exports. This was the default in previous versions but can now be disabled and when cancelling an export, there's no need to ask anymore. This was needed to be able to save the results more often (see above). - NEW: Support for the categories "Downloaded", "Books" and "iTunes U" in the playlist trees. - FIXED: Selecting a playlist in the "Analyze" tab enabled the "Export 0 playlists to Spotify" button even if no playlists where selected for export. Windows version: - FIXED: Manual search dialog: selecting the results entry if there is only one entry. - FIXED: MiniPlayer: the "Play" button disappeared if an empty playlist was selected. - FIXED: Including the "iTunes2Spotify.exe.config" file in the ZIP will check if the correct .NET framework is installed and prompt to do so if not the case. Mac version: - FIXED: Manage dialogs: german translation of the toolbar icon's tooltips. ------------------------- 2.3.6948 Win (09.01.2019) 3.1.6948 Mac (09.01.2019) ------------------------- - NEW: Improved error handling to ensure the error is logged instead of silently crashing the app. - NEW: Added some more columns to the track grid: "Normalization", "HD", "Video Width", "Video Height", "Apple Music" and "Sort Series" - FIXED: possible crash if a search resulted in more than 10,000 results (could happen if album and artist were both missing). ------------------------- 3.1.6927 Mac (19.12.2018) ------------------------- - FIXED: a nasty bug that let the Mac version crash immediately if run in english. ------------------------- 2.3.6925 Win (17.12.2018) 3.1.6925 Mac (17.12.2018) ------------------------- - NEW: Cancel button! - NEW: Improved search algorithm: support for "Various Artists" (or "Various") as artist and "Artist - Track Name" (or "Artist / Track Name") in track name. - NEW: Improved search algorithm: support for the expression "ft." to be recognized as "featuring". - NEW: Trees: new default to have all nodes collapsed. The last state of collapsed/expanded is still remembered, of course. - NEW: Added column "Matched" to the track grid. - NEW: Set default logfile directory when activating logfile saving and using it for manual logfile saving as well. - FIXED: Improved stability and error handling. Re-initializing the connection to Spotify and retrying the last request if an error occurs (instead of simply crashing). This occured more often with the Mac version than on Windows (whyever) mostly when exporting large playlists (500 tracks an up). - FIXED: Improved stability when analyzing an XML containing empty playlists. Windows version: - NEW: Improved log output speed for large logs (especially notable when outputting tracks that already have a match from a previous search). - FIXED: Improved speed when loading the tracks for a playlist (prior to exporting). Mac version: - FIXED: Reworked the layout a bit. - FIXED: missing german translations ------------------------- 2.2.6865 Win (18.10.2018) 3.0.6865 Mac (18.10.2018) ------------------------- - NEW: Improved search algorithm concerning tracks containing single quotes and artists containing "featuring" (no more aliases are needed to cover that). - FIXED: Stability improved when checking for a new version. - FIXED: No more crashes when having Internet Explorer or MS Edge as default browser and closing the browser window after authentication. Windows version catching up to the Mac version: - NEW: Manual search dialog: After searching, the track with the best duration match is automatically selected. - NEW: Manual search dialog: Disabled search text fields while searching. - NEW: Startup parameters: "/en" to enforce english and "/de" to enforce german translation. - NEW: Support for autodetection of file "iTunes Library.xml" in addition to "iTunes Music Library.xml". - NEW: White background (the empty space below the rows) for grids - FIXED: Manual search dialog in german: Button was too small for its label "Selektierte Titel zur Wiedergabeliste hinzufügen". --------------------- 3.0.6847 (30.09.2018) --------------------- Mac version: - NEW: Mini toolbar for the playlist trees as a replacement for the context menu of the Windows version to expand all, collapse all, check all, uncheck all and invert the selection of the playlists. - FIXED: Tracks in the "Analyze" tab page: column "Track" comes before column "Artist" - FIXED: The last column in a grid was calculated too wide. --------------------- 3.0.6842 (25.09.2018) --------------------- Mac version: - NEW: Finished all missing functionality, such as file export and filtering in the manage dialogs. This is the real thing now, no more beta! Only thing that's still missing is the MiniPlayer for I have to figure out first how to do audio playback on a Mac. - NEW: Added "About" dialog - NEW: Support for autodetection of file "iTunes Library.xml" in addition to "iTunes Music Library.xml". - NEW: Startup parameters: "/en" to enforce english and "/de" to enforce german translation. - NEW: Reworked dialog layout once more. - NEW: Table columns sizes in search and manage dialogs are now calculated to fill out the available space. - FIXED: Dialog settings (location and size) are now remembered correctly. - FIXED: Corrected the filtering in the "Manage artist alias" and "Manage album alias" dialogs as not to list all aliases. --------------------- 3.0.6837 (20.09.2018) --------------------- Mac version: - NEW: Finished all missing manage-dialogs and improved stability. - NEW: Finished german translation. - NEW: Reworked dialog layout. - FIXED: Manual search dialog: the buttons "Add selected tracks to playlist" and "Skip this track" now actually work. --------------------- 2.1.6830 (13.09.2018) --------------------- Windows version: - FIXED: MiniPlayer in the "Search Spotify" dialog didn't refresh its trackbar anymore due to the bugfix in v2.1.6820. - FIXED: consistent look for all the grids - FIXED: german translations of the playlist tree context menu didn't show anymore since v2.1.6820. - MISC: implemented my own translation system which is independed from WinForms and can be used for the GTK version as well. This also means that the german translations DLL is no longer needed, so it's really just the one executable now. :-) --------------------- 3.0.6827 (10.09.2018) --------------------- Mac version: - NEW: First Mac version using GTK instead of WinForms looking much better and running far more stable. --------------------- 2.1.6820 (03.09.2018) --------------------- - FIXED: "Play in Spotify" feature now works again. It broke because Spotify removed the SpotifyWebHelper from their app. Remote control of the Spotify app is no longer possible, but tracks can be played through the webplayer instead. - FIXED: MiniPlayer in the "Analyze" tab page: crash when switching to another playlist while playing a track. - NEW: button to open the context menu on the playlist tree (most users probably don't know about the handy context menu). - MISC: lots of internal refactoring to create a shared code base for the upcoming improved Mac version. --------------------- 2.1.6804 (18.08.2018) --------------------- Mac version: - NEW: flat look of buttons, grids and trees - FIXED: Episode no. could not be parsed to an integer. The column is now of type 'string' (for some reason the earlier fix didn't make it into the Mac version). - FIXED: folder icons didn't show in the playlist tree. - FIXED: selecting another XML library file (or just clicking "Analyze" one more) didn't work properly. - FIXED: Check if file exists before playing (fixed conversion to linux style local paths). --------------------- 2.1.6797 (11.08.2018) --------------------- - FIXED: Important bugfix for the Mac version. NOW it should work! --------------------- 2.1.6794 (08.08.2018) --------------------- - NEW: First Mac version, still beta though. - FIXED: Comparing the user's email-address with the one in the keyfile is now case insensitive. --------------------- 2.1.6757 (02.07.2018) --------------------- - NEW: Captions of numeric columns are now right aligned. - NEW: Improved default column widths for numeric and boolean columns of playlist tracks. - NEW: Added two more columns to the track grid: Equalizer, Loved - NEW: Higher resolution program icon - FIXED: Error message if an episode no. could not be parsed to an integer. The column is now of type 'string'. - FIXED: XML library parsing: empty default playlists (like 'Audiobooks') are now parsed correctly. --------------------- 2.1.6731 (06.06.2018) --------------------- - NEW: Improved search algorithm: When comparing durations and still finding multiple matches, no longer is just the first of these results selected but the one with the shortest delta. - NEW: Added some more columns to the track grid: Music Video, Protected, Clean, TV Show, Series, Season No., Episode No., Episode Order, Content Rating - FIXED: Possible crash introduced by the option to retry previously skipped tracks. - FIXED: After unregistering, the current session still continued as registered. - FIXED: Crash caused by UNC paths. - FIXED: MiniPlayer: german translation if a file could not be found. --------------------- 2.1.6714 (20.05.2018) --------------------- - NEW: Improved search algorithm: - artists beginning with a "the" are found and recognised even if the "the" is missing in the iTunes library. - additions in album names following the characters '-', '(', '[' and '{' are being ignored when comparing. - NEW: Manual search dialog: possibility to map aliases for artists and albums. - NEW: Manual search dialog: the maximum search results is no longer limited to 20 and can now be set. - NEW: Option to retry previously skipped tracks. Sometimes Spotify adds albums and artists that have been missing. - NEW: Improvements in the manage dialogs: - Focus is set to the filter field when opening the dialog. - Enter key sets the focus to the grid after filtering. - Press F3 to set the focus back to the filter field. - NEW: Manual search dialog: info text with some hints, if a track cannot be found. - NEW: If the iTunes library cannot be found automatically, a link to my webpage about the needed iTunes settings will appear. - FIXED: Manual search dialog layout: set the column widths to fill out the grid. - FIXED: Searching now takes the user's Spotify market into account (thanks to Jane B. for testing this out on the NZ market). - FIXED: Comparing when finding more than 1 result is no longer limited to 20 results. - FIXED: Missing OK and Cancel buttons in manage dialogs. - OTHER: Thanks to Nathan F. for his generous support! --------------------- 2.0.6669 (06.04.2018) --------------------- - NEW: Search results are now remembered, which gives an enormous performance boost when exporting once more. User action can also be remembered (or not, just as you like) and the remembered ones can be managed through corresponding menu items: - Manage previous search results: search results can be deleted or re-mapped using the search dialog. - Manage artists to skip: artists to skip can be deleted or edited. - Manage albums to skip: albums to skip can be deleted or edited. - NEW: Spotify export mode: "Create new playlists" or "Append new tracks to playlists of the same name" (with greetings to Jane B. who requested this excellent feature). - NEW: MiniPlayer: added position slider - NEW: MiniPlayer: added keyboard shortcuts: space --> play/pause; arrow left --> rewind; arrow right --> fast forward - NEW: Search window: added the iTunes track's track number - NEW: Showing the current track count next to the progressbar while exporting - NEW: Possibility to auto save the export log to a folder --------------------- 1.0.6631 (26.02.2018) --------------------- - FIXED: Only 100 tracks where added to a playlist for that's the maximum the Spotify API allows in one call. Now using more calls if necessary (thanks again to Jordan F. to bring this to my attention). --------------------- 1.0.6629 (24.02.2018) --------------------- - FIXED: The Spotify access token times out after 1 hour. This is now checked and the token is refreshed if required (thanks to Jordan F. to bring this to my attention). - NEW: Added checkable menuitem "? / Check for update on startup" --------------------- 1.0.6627 (22.02.2018) --------------------- - FIXED: Analysing could fail when encountering very large files (like movies). Changed size column type to Int64 instead of Int32. - FIXED: MiniPlayer in search dialog wouldn't stop when playing a track in Spotify if the local track was playing from a previous instance of the search dialog. --------------------- 1.0.6598 (24.01.2018) --------------------- - FIXED: Optimised the Spotify logon as not to block the browser's window. --------------------- 1.0.6590 (16.01.2018) --------------------- - NEW: Added german translation. - NEW: Added the ?-menu containing the following commands: - Check for update - Feedback - Visit Website --------------------- 1.0.6589 (15.01.2018) --------------------- - First public release.