Script should be installed as package, using the package manager at the Spider Monkey Panel Configuration window. Old method is still supported anyway.
REQUIRES SMP 1.6.1 (mod version attached has some improvements by marc23)
See full changelog here.
0.13.0 - 2023-02-28
Added
- Importing JSON: allows to import any available playlist metadata from UI-only playlists, .fpl, .xsp, .pls and .srtm files (which is only saved in the JSON file). In such case, the playlist file (with same filename and name) must already reside in the tracked folder to be matched at the importing step and overwritten with the metadata found.
- Importing JSON: allows to import the folder structure saved in the JSON file.
- Importing JSON: allows to selectively choose which formats will be imported. i.e. files, AutoPlaylists and Smart Playlists, UI-only playlists, folders, ...
- AutoPlaylists: it's now possible to directly import all AutoPlaylists from native foobar2000 (v1.6 and V2.0+) to the manager using 'Import AutoPlaylists from UI...'. It will read the config files at the profile folder and try to parse the playlists found there (retrieving the query, name and sorting). This should automate the process of importing AutoPlaylists the first time the manager is installed, instead of going one by one.
- Search: new search mode against tracks' metadata. Internally loads all tracks from every playlists and looks for the search input within specific tags (by default ALBUM ARTIST, ALBUM, TITLE and DATE). It may produce some lag while searching if there are a lot of playlists, so disable it if not needed. The tracks are cached, so consecutive searches are faster (or performing it some seconds after startup); but it greatly increases startup time when using search is maintained at startup (since cache has not been built). In such cases, make sure to have the setting 'Reset search on startup' enabled.
- Search: new search mode against playlists' metadata. Retrieves track's metadata from the playlist file (available on .m3u8, .m3u, .xspf and .pls formats) and tries to match ARTIST or TITLE. This mode is much faster than looking for the track's tags (see above).
- Search: new search mode using queries. If the query outputs at least a track from a playlist, is considered a match. Caching is used (see above).
- Search: using drag n' drop on search box when query search mode is enabled will create a query to show only playlists containing such tracks by title and artist.
- Search: using drag n' drop on search box when tags search mode is enabled will show only playlists containing tracks matching title and artist.
- Search: the different drag n' drop search modes can now be set by priority. i.e. If query and path search are both enabled, query search may be set as as higher priority than path search, so it will always use queries if possible. In case query search is disabled, path search would be used instead.
- XSP: Smart Playlists are now automatically refreshed whenever a playlist source changes (not in any other case, use AutoPlaylists for that). i.e. if a Smart Playlist has a query like "#PLAYLIST# IS A", and "A" playlist changes, the Smart Playlist is automatically refreshed now (tracks added/removed). If the playlist is not loaded, only metadata is updated (like duration or size). This behavior can be disabled at settings.
- Backup: added more backup procedures when editing playlists. Original file is restored in case of errors.
- Statistics: new 'size' data mode for statistics, which shows statistics according to playlist's size (num of tracks) grouped by 25. Ex. Empty, >0, >25, >50, ... Clicking on any data point will filter the panel, as usual, with playlists with such condition.
- Statistics: data source can now be set to All playlists, Playlist files, AutoPlaylists, UI-only playlists or Selected playlists (by name).
- Configuration: added integrity checks to global user settings files, found at '[FOOBAR PROFILE FOLDER]\js_data\presets\global[...].json'. In particular queries are now check to ensure they are valid and will throw a popup at init otherwise. Other settings are check to ensure they contain valid values too.
- Configuration: expanded user configurable file at '[FOOBAR PROFILE FOLDER]\js_data\presets\global\globSettings.json' with a new setting to output to console profiling logs at script init. They work globally. Disabled by default.
- Folders: added menu entries to create [child] playlists from current selection or active playlists at the folder contextual menu. Request 71
- Folders: playlists can now be created within folders using drag n' drop (pressing ALT or ALT + CONTROL as usual). Request 71
- UI: added drag n' drop actions to the quick help popup (shift click on help button).
- UI: added settings for UI-only bound playlists deletion behavior when deleting a playlist file: always ask, delete both (file and UI-only playlist) or delete only playlist file. Request 76
Changed
- Importing JSON: importing logic has been rewritten to be more robust. If an existing playlist has the same name than one imported, a popup will ask to overwrite or omit it. In case extensions differ, will show an error (since they are probably not the same playlist). Overwriting a playlist involves replacing the old metadata with the new one, which in the case of AutoPlaylists means the query is replaced (plus other data), but for other playlists formats, things like tags, categories, etc. are also transferred. Items will also be compared before overwriting, so in case there is no changes (filtering on-init properties like folders being opened or not), they will skipped.
- Importing JSON: suggested JSON file path is now automatically retrieved from clipboard (instead of being empty).
- Search: added validity checks to input to avoid crashes or errors.
- AutoPlaylists: added checks to sorting inputs to ensure they are valid expressions.
- AutoPlaylists: AutoPlaylists created via native foobar2000, instead of the manager, are now flagged as 'AutoPlaylist (UI)' when opening their contextual menu at the manager, as an indication of playlist being an UI-only playlist. Some menu entries also show a warning about cloning needed to fully integrate them.
- AutoPlaylists: cloning an AutoPlaylist created via native foobar2000, instead of the manager, also opens the AutoPlaylists properties now to easily copy the query and sort patterns.
- XSP: added checks to sorting inputs to ensure they are valid expressions.
- XSP: Smart Playlists are now locked when loading them, similar to AutoPlaylists behavior. If there is no sorting, then tracks can be reorder, otherwise sorting is also locked.
- XSP: improved caching in multiple playlist actions.
- XSPF: improved caching in multiple playlist actions.
- XSPF: .xspf playlists now follow the complete specification, allowing multiple locations per track. In case one is not found, the next one is used. Previously only one location per track was allowed. Content resolution via tags has not changed since that was already implemented.
- Folders: drag n' drop now allows to move items to any specific position within a folder, not just to the end, on manual sorting.
- Folders: improved filtering in some cases with nested folders or showing only specific playlists within a folder.
- UI: 'Move to folder...' submenu now shows an indicator when there are no other folders to move to.
- UI: Added a tip at all input popups for sorting, to specify when 'SORT BY' and similar statements must be used.
- UI: optimized repainting to use less resources on statistics mode.
- UI: changed tooltip for multiple selection to only show the available actions which work on the entire selection.
- Shortcuts: global shortcut to search (F9) uses now the new search methods added for tracks.
- Shortcuts: Shift + F9 now displays the report with selected tracks (previously it was only used when pressing F9 if no compatible search methods was enabled to look for tracks).
- Shortcuts: all global shortcuts related to playlists (F1 - F6) now work recursively on multiple selection and folders (without level limits). Exceptions: F2-Rename (since renaming on batch is not allowed), and DEL-Remove playlist (deleting in batch can only be done via menus and multiple selection to avoid accidental deletions of multiple items).
- Shortcuts: global shortcut are now shown on the related menu entries and/or buttons. For ex. the menu entry to create a new playlist now displays the shortcut F7 if global shortcuts are enabled.
- Clone: wrong warning about not found tracks when using relative paths in some cases.
- Clone: when cloning playlists within a folder (via menus or shortcuts), the new items will be created now at the same folder level (not at the root of the list).
- Playlist formats: added some checks when parsing corrupted playlists to avoid crashes (and instead omit the line).
- ListenBrainz: input when using playlist importing by MBID is now checked to ensure it's a valid UUID (before attempting the web retrieval).
- Startup processing has been changed to not run any secondary process while caching the library (for ex. AutoPlaylist size updating, etc.); these steps will be run sequentially after library caching has been done. Using multiple panels, one of them will cache the library and the rest run the other steps if possible.
- Configuration: changed the remove duplicates bias to prefer tracks with higher play-counts and positive feedback tag (love/hate).
- Helpers: updated helpers.
- Console: improved log file formatting on windows text editors which parse new lines only with CR+LF instead of LF.
- Code cleanup.
Removed
- UI: internal logging when checking .xsp playlists.
Fixed
- UI: single click actions not working in some cases. Issue 74
- UI: multiple selection was lost in some cases after executing actions if UI-only playlists were tracked.
- UI: extra separator on 'Restore...' playlists submenu in some cases.
- UI: AutoPlaylists contextual menu missing 'Load playlist' entry on lite mode.
- UI: playlists missing 'Delete' entry on lite mode.
- UI: fixed misspelling of 'bound' in multiple places.
- UI: renaming a playlist/folder changed the position when using manual sorting, sending the item to the end of the list (instead of keeping the original position).
- Drag and Drop: source playlist's size was not properly updated after using drag n' drop on move tracks actions. It was increasing the size instead of decreasing it.
- Search: search history not applying the term when clicking.
- Folders: playlist deletion within folders did not update the UI properly in some cases. Issue 72
- Folders: nested folders not working in some cases or producing crashes. Issue 73
- Folders: internal drag n' drop not working properly on sorting methods different than manual one. i.e. to move items into/out of a folder.
- Search: crash on multiple settings menu entries due to a typo on variable.
- ListenBrainz: crash when importing an existing playlist in some cases.
- Exporting Playlists: crash when clicking on a point -to filter- while using folders data.
- Exporting Playlists: error while exporting an AutoPlaylist with sorting.
- Exporting Playlists: crash while reporting malformed .xsp playlist.
- XSP: wrong cache handling for .xsp playlist when rewriting the queries.
- XSP: UI-only playlists were not working as playlist sources.
- XSPF: playlist was rewritten when some tracks were not found (by link, content resolver and path) after loading it.
- XSPF: identifier tag was not working properly at the content resolution step (usually used for MUSICBRAINZ_TRACKID).
- XSPF: .xspf playlists not loading properly when content resolution was used in some cases.
- XSPF: malformed track paths using relative paths in some cases.
- AutoPlaylists: crash when changing AutoPlaylists sort TF expression if the value was not changed.
- Links: multiple fixes to YouTube web links handling.
- Remove duplicates: advanced RegEx title matching option not being applied in some cases.
- Colors: crash if a color was missing from an older version, after updating, if the settings menu was opened. Issue 70
- Shortcuts: 'Single click' header submenu, to set the single click actions on header, was duplicated.
- Lite mode: fixed some minor errors when switching to/from lite mode (after installation process only).
- Rare crash on mouse L. button up if a menu from other panel was displayed over the manager panel, the action affected a playlist and the click fell on the list.
- Minor fixes.
