github regorxxx/Playlist-Manager-SMP v0.5.0-beta.13
v0.5.0-beta.13 - ListenBrainz integration and UI revamp

latest releases: v1.0.0-beta.8, v1.0.0-beta.7, v1.0.0-beta.6...
3 years ago

DELETE ALL OLD FILES, AT 'xxx-scripts' before installing new ones.

Update all my other scripts too with latest releases.

Too many things have changed and it must be ensured a clean installation is done.

There may be a SMP's bug on installation. See wiki.
REQUIRES SMP 1.6.1

Highlights:

  • Multiple selection of files.
  • Fully configurable buttons UI.
  • Drag n Drop.
  • Fully configurable mouse behavior (on click, keyboard modifiers, etc.)
  • ListenBrainz integration (able to save playlists online or retrieve from server).

[0.5.0-beta.13] - 2023-02-15

Added

  • Configuration: added user configurable files at '[FOOBAR PROFILE FOLDER]\js_data\presets\global' to edit default queries and tags for multiple tools. Usually used internally or on properties panel. Don't forget to reload the panels/restart foobar and restore defaults on all relevant buttons and menus to use the new values. For Playlist Manager, it's only used for the default values of Duplicates Removal feature, so only that sub-menu needs to be restored to defaults (not the entire panel).
  • Drag and Drop: tracks can now be sent to a playlist directly with Drag and Drop, instead of using key shortcuts + mouse. Both move and copy (pressing Control) are allowed. Only tracks within foobar2000 context can be drop, trying to drop any other thing, track from outside or file is not allowed. Pressing 'Alt' on drop will create a new playlist instead of sending it to the selected playlist. To warn about this behavior, no playlist is highlighted while pressing the key (contrary to the usual drag and drop). List can be scrolled up or down by moving the mouse to the arrow buttons while dragging.
  • ListenBrainz: playlist ListenBrainz integration may be added with an user token. Token encryption is allowed with a password.
  • ListenBrainz: new options at L. Click menu, 'Online sync...', to export (create new/update) and import playlists from ListenBrainz. Exporting a playlist requires tracks to have 'MUSICBRAINZ_TRACKID' tags present; there is an additional option to perform MBIDs lookups on exporting when tags are missing.
  • ListenBrainz: new options at L. Click menu, 'Online sync...', to get the URL of the playlist on ListenBrainz or directly open it on web.
  • ListenBrainz: new options at R. Click menu to create a playlist from ListenBrainz importing by MBID.
  • ListenBrainz: playlist importation may be done on any writable format, including '.xspf' format (which is essentially equivalent to '.jspf' format used internally by ListenBrainz). Saving to the latter format, allows content resolution -on load- on any library by artist, title or recording MBID and also store not found items on the playlist file. Using other formats will skip not found items on importing step.
  • ListenBrainz: 'PLAYLIST_MBID' is now saved on playlist's metadata and displayed on tooltips if available. Meant to be used along ListenBrainz integration. Id is resolved to an online playlist at 'https://listenbrainz.org/playlist/(PLAYLIST_MBID)'.
  • XSPF: identifier tag linked to 'MUSICBRAINZ_TRACKID' for content resolution.
  • Tags: new auto-tag named 'bMultMenu' which associates tagged playlists to specific dynamic main menu entries which apply an action to a group of playlists.
  • Tags: new auto-tag 'bSkipMenu' which makes the tagged playlist to be skipped on dynamic menu creation.
  • Dynamic menus: new dynamic main menu entries which apply an action to a group of playlists tagged with 'bMultMenu'. These are meant to be associated to an standard Foobar2000 button (or CMD commands), to easily load or apply generic actions to a group of playlists at once.
  • Dynamic Menus: menu warns about entries needing input via popups and those are skipped on the Online Controller actions.
  • Dynamic menus: new 'Move selection to playlist' dynamic menu.
  • Startup playlist: added new option at integration header menu to set the active playlist at panel startup, allowing to start Foobar2000 automatically with a given playlist. In case it's a playlist present on the manager but not loaded, it's required to set 'bAutoLoad' tag on playlist file to load it automatically on startup too. RegExp may be used too, returning the first match found.
  • Playlist locks: UI lock status is now displayed on playlist tooltips, along the actions locked.
  • UI: filter/sorting buttons are now fully configurable (background, colors, toolbar mode, ...).
  • UI: show an icon related to the current filter state. For ex. the extension filter will show the associated playlist icon.
  • UI: keyboard modifiers on L. Click now also allow 'Clone playlist in UI', 'Lock/unlock playlist file', 'Lock/unlock UI playlist' and 'Multiple selection' actions (along the previous ones).
  • UI: added M. Click actions, configurable the same way than L. Click actions. Set by default to 'Multiple selection'.
  • UI: added L. Click and M. Click actions on header, configurable the same way than the other actions. Set by default to 'Cycle categories' (previous behaviour) and 'Multiple selection (all)' (toggles selection for all playlists of current view).
  • UI: added 'Multiple selection (range)' shortcut action, which emulates the usual Shift + Click action to select a range on files on explorer.
  • UI: multiple playlist selection. Using any other mouse shortcut will apply the action to the entire selection, instead of a single playlist. Opening the playlist menu (L. Click) while using multiple selection, will display a different list of actions to apply to the entire selection.
  • UI: new 'Move selection to playlist' shortcut action, which copies the track to the selected playlist and removes it from the source.
  • UI: new 'Find current selection' menu entry, on R. Click, to find the selected tracks on the tracked playlists. A report is shown with category and playlist name.
  • UI: new filter for playlist with(out) MBID (i.e. to filter playlist synced with ListenBrainz).
  • UI: filter and sorting menu entries are now sorted.
  • Track Auto-tagging: added new JS functions to retrieve properties from playlist: ('JS:' +) playlistName, playlistCategory, playlistTags and playlistMBID.
  • Cache: new option on header's menu to stop library path caching until next startup. This allows to perform path changes to files without constantly having the panel processing the changes, when done, deactivate it to update. This action is shared across all playlist manager panels (i.e. activating it in one, will activate it in the others).
  • Cache: whenever library paths cache is outdated, a warning is shown on the header and playlists' tooltips.
  • Playlists maintenance tools: added tool to check for subsong items (usually files from ISO files, etc.). They are fully supported within by the manager, but it's not guaranteed to work on other software.
  • Playlists maintenance tools: added tool to check for format specific errors (like XSP types not supported, wrong queries, etc.). The errors are shown on the report along the playlist name/path.

Changed

  • Exporting Playlists: entry to copy playlist file will now ask to overwrite it, in case such file already exists, instead of failing.
  • Playlists maintenance tools: playlist consistency tools renamed to playlists maintenance tools.
  • Playlists maintenance tools: list is now filtered with the results found -if any- (in addition the popup showing the report). Makes much easier to work with the problematic playlists, not having to manually search them. Output also honors the current filtering configuration, so in case only M3U playlists are shown, the output will only show results being M3U (the report will list all results though).
  • Quick-search: added new settings for its behavior when a key is pressed multiple times and also to allow cycling between results.
  • XSP: 'playcount' XSP tag now gets translated into '$max(%PLAY_COUNT%,%LASTFM_PLAY_COUNT%)' within foobar when 'foo_enhanced_playcount' is installed. This offers better support for scrobbles.
  • XSP: 'lastplayed' XSP tag now gets translated into '%LAST_PLAYED_ENHANCED%' within foobar when 'foo_enhanced_playcount' is installed. This offers better support for scrobbles.
  • XSP: 'virtualfolder' XSP tag now gets translated into '#PLAYLIST#' within foobar. It simply remaps the tag to behave like 'playlist' XSP tag.
  • XSP: XSP playlists with a non compatible type now show a warning at tooltip, contextual menu and when trying to load/export them. Most other actions are disabled. Currently only 'songs' type is allowed.
  • Track Auto-tagging: reworked entire feature to fine-tune overwriting or value addition behavior, in particular for JS functions. Empty values will now delete the tag, otherwise added to current tag by default. Check documentation for further details.
  • Filter: category playlist filter on header menu now allows directly selecting a single value by pressing shift.
  • Filter: tag playlist filter on header menu now allows directly selecting a single value by pressing shift.
  • Filter: count for tags and category entries for filters on header menu.
  • Cache: reworked path caching, now will process 100 items at the same time until all tracks are done instead of forcing an specific total startup time. Adjusted delays for Foobar 2000 2.0+ tag retrieval. It should lead to faster startups in both cases, specially for small libraries (< 70K tracks).
  • Backup: asynchronous on script unloading (at shutdown for example) and playlist loading.
  • UI: current view position will be maintained in most use-cases now (after updating a playlist, loading new files, manual refresh, ...) if possible.
  • UI: buttons' colors are now set by default according to the inverse of the background color. The same applies when applying presets, or changing the toolbar style.
  • UI: colours presets menu now show a check in case one of them is active.
  • UI: keyboard modifiers on L. Click are now fully configurable using the header menu. See 'UI\Shortcuts...'. Playlist's tooltip will reflect the config too.
  • UI: tooltip now also shows Double L. Click action when 'Show usage info on tooltips' is enabled. The same applies to Single M. Click action. Actions not set are hidden to not clutter the UI.
  • UI: 'Send selection to playlist' renamed to 'Copy selection to playlist'. Reconfigure the shortcut on the menus before using.
  • UI: 'Send selection to playlist' now creates an undo backup point before inserting the new tracks if the playlist is loaded on UI.
  • UI: keyboard modifier on L. Click + Ctrl is now set by default to 'Copy selection to playlist'. Shift + L. Click to 'Load / show playlist'. i.e. they are swapped; this is done to be consistent with drag and drop modifiers, since Ctrl is associated to copy.
  • UI: additional tips on 'edit sort' popup, and invalid sort expressions are now checked.
  • UI: panel is now animated while performing asynchronous tasks on 'Playlist maintenance tools'.
  • UI: panel is now animated while saving a playlist or loading new playlist files, this makes easier to check changes (without looking at the console). Skipped for UI-only playlists.
  • UI: new config to lock the panel and animate it while checking AutoPlaylists on startup.
  • UI: quick-search color is now inverted when no result is found.
  • UI: initial popup and panel text (with empty tracked folder) now points more clearly to set the tracked folder as needed.
  • UI: on first installation, in case another panel has the same tracked folder, a popup is thrown warning about setting another folder for the new panel.
  • UI: loaded playlist indicator has been changed to '>>' which is adjusted better to different DPI settings.
  • Dynamic menus: dynamic menus no longer skip UI-only playlists by default unless they are not shown in the manager. 'Copy and move selection' menu entries are the only ones allowed for these playlists in any case.
  • Dynamic menus: the panel warns about other panels having the same name if the feature is enabled at startup or when enabling it. Panel flashes for some seconds while the popup is shown.
  • XSP: errors loading Smart Playlists are now both output to console and popups, instead of just popups.
  • XSPF: content resolution for identifier tag supports now both raw tags and 'https://musicbrainz.org/recording/('MUSICBRAINZ_TRACKID)' format. This is done for compatibility with JSPF format from ListenBrainz.
  • Tags: auto-tags are now displayed on the tag list (on set tag menu) ready to be used, instead of only displaying the present user set tags.
  • Properties: additional checks to properties to ensure they don't get broken with manual edits.
  • Remove duplicates: all uses of function changed to make use of '$year(%DATE%)' and '$ascii($lower($trim(%TITLE%))' instead of 'DATE' and 'TITLE'. This is a changed ported from Search by Distance, to ensure the most matches possible.
  • Remove duplicates: advanced RegEx title matching option. For example, tracks like these would be considered to be duplicates: 'My track (live)', 'My track (acoustic)', 'My track (2022 remix)', ' My track [take 3]', ... but not those with keywords like 'part', 'pt.', 'act' or Roman numerals.
  • Remove duplicates: advanced RegEx title matching option. Words with "-in'" and a list of verbs ending in "-in" are matched against "-ing" verbs to further refine the search. For ex. "walkin", "walkin'" and "walking" are all considered equivalent.
  • Helpers: updated helpers.
  • Minor performance improvement (usually on subsequent calls) caching all TitleFormat expressions.

Removed

Fixed

  • Relative paths: broken playlists path when playlist folder contained special RegExp chars. Now fixed, they are escaped properly internally.
  • Auto-Saving: playlists were not auto-saved after a path cache reload -if needed- as intended.
  • XSP: crash loading an Smart Playlist which tries to load another playlist with a query when it is not found.
  • XSP: preventive fixes to Smart Playlists having empty rules, without operators or values.
  • XSP: undefined sort order on files.
  • XSP: playlists are no longer rewritten every time sort order is not set.
  • XSP: duplicates were not removed on all use-cases (exporting, cloning, ...) when option was activated.
  • XSPF: crash on some malformed playlists.
  • Dynamic menus: dynamic menus were not being set properly in some cases due to a typo.
  • Dynamic Menus: changed code logic to only create menus once after all init processes instead of multiple times. Should improve loading time by a few ms.
  • Filter: '-inherit-' warning was shown on all tags on filter header menu, even for those not being shown. Cosmetic bug.
  • UI: double clicking on header no longer shows the active/playing playlist while cycles between the categories. Now it checks when double clicking is performed to not fire the single click action too.
  • UI: filter buttons will display 'Multiple...' instead of 'All' when multiple values have been selected via header menu, thus properly displaying the manager is currently being filtered when not cycling tag/categories.
  • UI: panel will not consider a playlist bound to a playlist file when the playlist type does not match (i.e. AutoPlaylists to standard playlists and viceversa) for now playing and loaded indicators.
  • UI: fix text on playlist type filter button. '&' being displayed as '_'.
  • UI: adding new files with new tags did not updated properly the current view, showing by default the new tags too. Similar to past bug with categories.
  • UI: after sending a track to a playlist(s), the UI was being repaint even if no changes were made (for ex. on duplicated track). Implies no change for final user.
  • UI: Tags entries were not properly shown with a check in the upper list of 'Set tag' submenu.
  • UI: fix to quick-searching / show active playlist not jumping to playlist in some cases (also appeared at [0.5.0-beta.8] and before). Method has been rewritten from scratch and now puts the result on the middle of the window whenever it's possible resulting in a more natural behavior.
  • UI: selected and highlighted playlist rectangles did not match in size, neither were properly adjusted to playlist name text in some cases.
  • UI: size not being shown when playlist name was too long. Now the name is sliced to accommodate the available width after the size info is taken into account. Example: "My too long playlist..." is now displayed as "My too long pl... (100)"
  • Auto-Saving: panel will not consider a playlist bound to a playlist file when the playlist type does not match (i.e. AutoPlaylists to standard playlists and vice-versa). Previously, it would ask to change the playlist format, which made no sense since no changes could be applied to those playlists.
  • Track Auto-tagging: crash when applying Tracks AutoTags on init due to typo.
  • Playlist formats: fixed some internal inconsistencies about multiple format files and actions available for them which did not translate into bugs reachable by regular users.
  • Playlist formats: any missing metadata on playlists is now filled with default values on load for compatibility purpose on future updates, which avoid crashes due to missing variables.
  • Online controllers integration: fixed some inconsistencies on ajquery-xxx export files.
  • Online controllers integration: fixed crash when data file was not found.
  • Track Auto-tagging: crash editing track auto-tags.
  • Track Auto-tagging: not being applied on AutoPlaylists / Smart Playlists loading.
  • Track Auto-tagging: JS functions being applied multiple times.
  • Instances manager: crash on instances file deleted while panel is being reloaded.

Don't miss a new Playlist-Manager-SMP release

NewReleases is sending notifications on new releases.