Playlist Manager SMP Versions Save

A playlist manager for foobar2000, using Spider Monkey, to save and load (auto)playlists on demand, synchronizing, ... along many more utilities.

v0.16.1

1 month ago

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)

image

See full changelog here.

0.16.1 - 2024-04-26

Added

  • XSP: new entry at Playlist maintenance tools to check for circular references in all playlists.

Changed

  • XSP: Smart Playlists are now checked for infinite recursion or circular references when they are created, loaded or cached. This avoids situations where Playlist A tries to load Playlist B, which at the same time tries to load Playlist A. Or if it references itself. There is also a new recursion limit of 100 steps; any playlist which tries to look for sources with nesting higher than that will also throw a warning.
  • UI: all list items color settings will be lost, make a backup if needed of property plm_15 and reapply later after updating.

Removed

Fixed

  • UI: tracks duration and size was not properly refreshed in some cases for playlist files.
  • UI: wrong handling of colors when upgrading from old versions. Crash when opening the settings menu.

v0.16.0

1 month ago

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)

image

See full changelog here.

0.16.0 - 2024-04-22

Added

  • Playlists maintenance tools: ported the Playlist revive functionality from Playlist Tools, available now at Playlist maintenance tools, for the active playlist. Pressing Shift + L. Click on the menu entry will select the dead items instead of replacing them. For more complex usage, check the other script.
  • Importing file: feature similar to the one found at Playlist Tools-SMP, lets you find matches on library using a mask against a text list (for ex. ARTIST - TITLE per line). Additionally, not found items may be replaced with YouTube links. It also works directly on a URL as long as the content is only text. There is an array of configurable query filters to tweak how tracks are preferred (for ex. non live tracks first).
  • UI: total track's size is now available as sorting method, tooltip info (next to duration) and display column. Value is calculated at startup for playlist files (and never saved at the playlist file nor cached) or after loading any of them. This calculation is done without an additional performance impact in case playlist caching is already enabled due to specific search settings (for ex. enabling query searching); it may also be forced with a new setting at 'Playlist behavior\Update other Playlists...' submenu. For UI-only playlists, is always calculated at startup independently of any other setting.
  • UI: added tip at quick help popup ('?' button) about tooltip font settings.
  • Configuration: expanded user configurable file at '[FOOBAR PROFILE FOLDER]\js_data\presets\global\globSettings.json' with a new setting for console logging to file. Disabled by default. Now this is a change from the previous behavior, where console was always logged to 'console.log' file at the [FOOBAR PROFILE FOLDER]. It can now be switched, but since it's probably not useful for most users is disabled by default.

Changed

  • XSP: smart playlist are now also refreshed when the playlist sources change by drag n' drop, mouse actions, deleted or restored, in addition to changes when they are loaded in UI (introduced at 0.13.0).
  • Clone: .xsp playlists and Auto Playlists will now make a copy of the loaded playlist (if possible) when cloning as UI playlist, instead of re-calculating the playlist to create the copy. This ensures the clone has the same sorting than the loaded version.
  • UI: changed all builtin tooltips during external drag n' drop to use the native ones (which also span outside the panel).
  • UI: all sorting methods now also sort elements by name in case they have the same priority (for ex. all 0-sized playlists sorted alphabetically instead of randomly).
  • UI: smoother scroll bar movement when using the mouse and dragging the bar.
  • Helpers: most json data files are now saved with Windows EOL for compatibility improvements with Windows text editors.
  • Helpers: updated helpers.

Removed

Fixed

  • UI: sorting not applying properly to folders when sorting by size or duration.
  • UI: wrong offset for first child item within nested folders when the root folder was not shown on the list.
  • Drag and drop: conflict drag n' dropping and pressing Ctrl over the "+" button, unintentionally triggering last edited playlist highlighting at the same time (feature introduced at 0.14.0).
  • UI: drag and drop and other features requiring a playlist selection did not work properly with selections from other panels which were not using a playlist as source. Issue #81
  • Playlist locks: workaround for SMP bug related to playback on locked playlists. It should now work fine, but the 'default action' lock can not be switched anymore. Issue #82

v0.15.0

2 months ago

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)

image

See full changelog here.

0.15.0 - 2023-03-21

Added

  • UI: settings to switch the playlist status icons at the right (loaded/playing now/active). Active playlist icon has been added too.
  • UI: settings to change the standard playlist color and header buttons independently of general text color. Therefore the playlist status icons color can now be changed without affecting the rest by setting the other colors if desired. Beware this update will probably reset all colors customization on existing panel to default values.
  • UI: move to folder submenus now have a 'New folder...' entry to directly create a new folder and move selection to it.

Changed

Removed

Fixed

  • UI: fixed crash due to infinite recursion trying to move a folder into one of its own subfolders. In the case of drag n' drop, the tooltip now warns about it. If there are multiple items selected but at least one of them can be moved to the child subfolder (for ex. when selecting both playlists and folders), then non valid items are skipped.

v0.14.1

2 months ago

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)

image

See full changelog here.

0.14.1 - 2023-03-16

Added

Changed

  • Lite mode: some improvements when switching from/to lite mode to maintain playlist metadata and folder structure. Now it tries to merge old and new data, without overwriting. In any case, it is not recommended to switch modes frequently, since some info may be lost for playlist files (like sorting, which can not be merged).
  • UI: move to folder submenus now have a 'No folder' entry to move them to the root.
  • UI: move to folder menu entry now highlights the folder destination if the folder is closed. This is in addition to current behavior, playlist highlighting when it's opened.
  • UI: panel no longer displays a background message about no playlist files on tracked folder on Lite mode or when playlist loading has been delayed. It now shows a blank list.

Removed

Fixed

  • Configuration: due to internal changes at init loading, folders were being removed in some cases at startup (but not on panel reload). Issue 80
  • Configuration: due to internal changes at init loading, no playlists were shown of first setup on lite mode.
  • Configuration: 'Panel behavior\Loading delays' input not working.
  • UI: filters not applying properly at init in some cases.
  • UI: filter button was highlighted while loading playlists (even if no filter was active). Cosmetic change, it was properly set after playlist loading.
  • UI: sorting errors in some cases when moving items to folders using menus.

v0.14.0

2 months ago

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)

image

See full changelog here.

0.14.0 - 2023-03-15

Added

  • Playlist formats: new menu entries on playlist contextual menu to convert UI-playlists to physical files. Works in single and multiple selection. Request 79
  • UI: new action on list button (+), using Shift + L. Click to send selection to a new playlist.
  • UI: new action on list button (+), using Ctrl+ L. Click to send selection to last modified playlist. Meant to be used with the previous action to first create a new playlist and then keep sending tracks to it. When pressing Ctrl over the button, the list will jump to target playlist and highlight it. Last modified playlist detection skips any playlist including 'library viewer' or 'filter results' in their name, which are modified frequently and would not be the desired target in any case.
  • Configuration: added new settings at 'Panel behavior\Loading delays' submenu to control how the panel delays loading\applying some actions. It may come useful in cases where foobar2000 startup takes a lot of time, for ex. delaying playlist loading 30 secs after startup.
  • Configuration: expanded user configurable file at '[FOOBAR PROFILE FOLDER]\js_data\presets\global\globSettings.json' with a new setting for panel repaint debugging purpose. Disabled by default.
  • Configuration: expanded user configurable file at '[FOOBAR PROFILE FOLDER]\js_data\presets\global\globSettings.json' with a new setting to check OS features on every panel startup. Enabled by default. This has been the default behavior since OS' features check was implemented, but it can now be disabled to improve init performance a bit, specially at foobar2000 startup (since it seems to hang in some cases when running it on slow HDDs or systems).

Changed

  • UI: current position on list is now maintained while resizing the panel (instead of jumping to the top).

Removed

Fixed

  • Playlist formats: creating a playlist file from active playlist when the playlist was an UI-only playlist did not properly convert it in some cases, complaining duplicated names. Request 79

v0.13.0

3 months ago

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)

image

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.

v0.12.1

5 months ago

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)

image

See full changelog here.

0.12.1 - 2023-12-09

Added

Changed

  • Helpers: updated helpers.

Removed

Fixed

  • Helpers: added missing helpers (namethatcolor) which made the script crash on init.
  • Package: update package builder with missing .fpl playlist helper.

v0.12.0

5 months ago

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)

image

See full changelog here.

0.12.0 - 2023-12-08

Added

  • Playlist formats: .fpl format enhanced support. Tracks can now be read by path from .fpl files and playlist size calculated on startup (contrary to previous behavior which required loading of the file).
  • Playlists maintenance tools: added .fpl support, in particular: mixed paths, external items, dead items, duplicates, size mismatch, duration mismatch and format errors.

Changed

  • Playlist formats: optimization of .xsp and .xspf caching.
  • Playlist formats: .fpl playlists update the duration tag whenever duration mismatch maintenance tool is used (no need to load the playlist anymore).
  • Playlists maintenance tools: optimization of all tools.
  • Helpers: updated helpers.

Removed

Fixed

  • Playlists maintenance tools: folders are now skipped (instead of being logged as errors on console).
  • Playlists maintenance tools: multiple fixes to maintenance tools and format compatibility.

v0.11.0

6 months ago

Script should be installed as package, using the package manager at the Spider Monkey Panel Configuration window. Old method is still supported anyway.

There may be a SMP's bug on installation. See wiki. REQUIRES SMP 1.6.1 (mod version attached has some improvements by marc23)

image

See full changelog here.

[0.11.0] - 2023-11-28

Added

  • UI: added setting to disable tooltip on all scripts. Found at '[FOOBAR PROFILE FOLDER]\js_data\presets\global\globSettings.json', by changing 'bTooltip'. By default tooltip is always shown. This setting will never be exposed within foobar, only at this file.

Changed

  • Helpers: updated helpers.
  • Improved error messages about features not working related to OS checks (at startup) with tips and warnings.

Removed

Fixed

  • UI: minor fix to settings button's tooltip.

v0.10.0

6 months ago

Script should be installed as package, using the package manager at the Spider Monkey Panel Configuration window. Old method is still supported anyway.

There may be a SMP's bug on installation. See wiki. REQUIRES SMP 1.6.1 (mod version attached has some improvements by marc23)

image

See full changelog here.

[0.10.0] - 2023-11-24

Added

  • Statistics: click on point to jump to list mode and filter by selected key.
  • Statistics: added buttons to statistics mode. Menus are now opened via buttons, no longer with R. click. There is also a button to directly exit statistics mode.
  • Statistics: added sorting options according to Y axis.
  • Statistics: colors are now forced with a scheme based on selection color and background.
  • UI: transparency input menu entries now have a hint about which value is opaque and which transparent.

Changed

  • Lite mode: config json files are now saved with an UUID on filename, so they can't conflict with playlist managers panels associated to a physical tracking folder anymore.
  • Lite mode: it's now possible to have multiple playlist managers panels in lite mode tracking different AutoPlaylist or with different manual sorting/folder structures.
  • Helpers: updated helpers.
  • Console: reduced max log file size to 1 MB.

Removed

Fixed

  • UI: minor fix to settings button's tooltip.