Export/Create Playlists
Version 4.1.1
- MediaMonkey Add-on -

by Zvezdan Dimitrijević
This add-on works with MediaMonkey v2.x-4.x. It has two operation modes, manual and automatic. In the manual mode it allows batch export of playlist files (M3U/ASX/XSPF) or creating of playlists for each child node of the node selected in the tree panel. This works with almost all nodes, even the Magic Nodes. For example, if you select the Playlists node, you could export playlist files for all playlists stored in the Library. In the automatic mode this add-on periodically saves specified playlist node and/or its sub-nodes from the Playlists branch.

Playlist files/playlists could be saved in a hierarchically organized folders within the specified parent folder, using the same structure as sub-nodes of the selected node, or could be saved in a single folder using a specified string as separator. Playlist files could be saved in ANSI, UTF-8 or Unicode, while M3U files could have simple or extended format. Track paths could be URL encoded and stored absolute or relative to the playlist's path using Windows "\" or Unix "/" folder separator. If the relative path option is turned off, the paths stored in playlist files would be same as they are in the Path field of the database, but could be also replaced with the user-defined replacement, e.g. "c:\Documents and Settings\" could be replaced with "e:\My Music\". Paths that you want to replace could be specified using Regular expressions.

This add-on also allows copying of audio files, export of M3U nodes from My Computer branch (e.g. conversion of M3U files) and export of the selected node or selected tracks only.

If you are interested to comment about this add-on, you could visit its related MediaMonkey forum thread.

You could also take a look on my other add-ons for MediaMonkey.

ExportM3UsForSubNodes-4.0

What is new

v4.1.1 - 2019-11-22

v4.1 - 2016-04-27

v4.0.6 - 2015-10-05

v4.0.5 - 2015-06-22

v4.0.4 - 2013-08-03

v4.0.3 - 2013-07-16

v4.0.2 - 2013-07-10

v4.0.1 - 2013-07-10

v4.0 - 2013-07-07

v3.6.1 - 2012-01-09

v3.6 - 2011-11-21

v3.5.3 - 2011-10-26

v3.5.2 - 2011-06-12

v3.5.1 - 2011-04-22

v3.5 - 2011-04-17

v3.4.1 - 2011-03-17

v3.4 - 2011-01-17

v3.3 - 2010-07-13

v3.2 - 2010-07-02

v3.1 - 2010-06-21

v3.0.1 - 2010-05-23

v3.0 - 2010-05-22

v2.9.3 - 2010-05-20

v2.9.2 - 2010-04-22

v2.9.1 - 2010-04-20

v2.9 - 2010-04-05

v2.8 - 2009-08-25

v2.7.2 - 2009-04-08

v2.7.1 - 2009-04-08

v2.7 - 2009-07-08

v2.6.1 - 2009-04-21

v2.6 - 2009-04-20

v2.5 - 2009-04-20

v2.4 - 2009-04-19

v2.3 - 2009-04-17

v2.2 - 2009-04-16

v2.1 - 2009-02-25

v2.0 - 2009-02-12

v1.4 - 2009-01-24

v1.3 - 2009-01-10

v1.2.1 - 2008-11-29

v1.2 - 2008-11-29

v1.1 - 2008-11-28

v1.0 - 2008-11-27

Installation

Usage

This add-on has three main modes of work: manual and automatic export of playlist files and manual creation of MM playlists. The manual operations could be started from the menu, while the automatic mode is working in the background on a timely basis that is set in the Options dialog box.

The commands of this add-on are located in the Export/Create Playlists sub-menu in the File menu and the context menus of the Media Tree, the main filelist and Now Playing panel.

ExportM3UsForSubNodes-4.0-01

First of all, you need to understand the difference between playlist files and MediaMonkey playlists (or shorter "playlists"): the playlist files are the lists of media files stored in M3U, ASX or XSPF files, while the playlists are the lists of media files stored in the MediaMonkey database and visually represented inside of the Playlists folder of the Media Tree.

The Export/Create Playlists add-on could export list of media files to the playlist file(s) using some of the Export commands from its menu, or it could add list of media files to the MM playlist(s) using the Create Playlists for Child Nodes command from the menu. The Export commands could be seen as an extension to the built-in Send to / M3U/XSPF playlist menu command, while the Create Playlists command could be seen as some kind of extension to the built-in Send to / Playlist menu command.

The commands in the File menu and the context menu of the Media Tree could be applied on the node selected in the Media Tree panel, using them you will get exported/created playlists for the selected node and/or its sub-nodes (depending of your settings in the add-on's Options dialog box). The following commands are available:
  • Export to M3U/ASX/XSPF Playlist... - if you want to export a playlist file with all tracks of the selected node displayed in the tracklist, after that you should specify a destination playlist file on the disk;

  • Export As Playlist File to Selected Folder - if you want to export playlist file with all tracks of the selected node displayed in the tracklist to the same folder with media files (only enabled for nodes within Location and My Computer branches);

  • Export Child Nodes to Playlists Files... - if you want to export a playlist files for some or all sub-nodes of the selected node (depending of the Options settings), after that you should specify a parent destination folder on the disk;

  • Export Child Nodes As Playlist Files to Same Folders - if you want to export playlist files for some or all sub-nodes of the selected node (depending of the Options settings) to the same folders with media files (only enabled for nodes within Location and My Computer branches);

  • Export Child Nodes to Playlist Files & Copy Media Files... - if you want to export playlist files and to copy media files for some or all sub-nodes of the selected node (depending of the Options settings), after that you should specify a parent destination folder on the disk, paths in the playlist files will be for copied media files, instead of all other commands where the playlist files contain paths to the files as they are displayed in the tracklist;

  • Export M3U Playlists from Child Nodes... - if you want to export M3U files from some or all sub-nodes of the selected node (depending of the Options settings), after that you should specify a parent destination folder on the disk (only enabled for nodes within My Computer branch);

  • Export M3U Playlists in Child Nodes to Same Folders - if you want to export M3U files from some or all sub-nodes of the selected node (depending of the Options settings) to the same folders with M3U files, e.g. if you want to save M3U files to ASX or XSPF, or if you want to convert M3U files from the simple format to the extended one or vice versa (only enabled for nodes within My Computer branch, unfortunately MediaMonkey doesn't display ASX and XSPF files as nodes inside of My Computer, so it is not possible to convert from ASX or XSPF format to some another);

  • Create Playlists for Child Nodes - if you want to create playlists that would be stored in the Playlists branch; after that you should specify a parent playlist node.

    If you want to export just selected tracks, choose Export to M3U/ASX/XSPF Playlist... from the context menu of the main tracklist or Now Playing panel.

    The add-on settings are located in the Options dialog which you could get if you: 1) chose the Options command from the File | Export/Create Playlists menu, or 2) select Export/Create Playlists add-on in the Tools | Extensions dialog box and click on the Options button, or 3) select the General | Export/Create Playlists sheet in the Tools | Options dialog box.

    ExportM3UsForSubNodes-4.0-02

    In the first group of controls on that dialog we could specify what we want to export if we choose some command from the menu that exports sub-nodes, e.g. Export Child Nodes to Playlists Files... or any other command that contains "Child Nodes" in its name. If the Selected node option is turned off then only sub-nodes of the selected node would be exported, while if it is turned on the selected node would be exported as well. With the next 3 options we could choose which levels of sub-nodes we want to export: the first level, the last level or all levels.

    Let say, for example, that I have the following tree branch and that I have selected the Rock node: If I have ticked First level of sub-nodes I would get exported only the "Pink Floyd" playlist file. If I have ticked Last level of sub-nodes I would get only "Dark Side of the Moon" and "Wish You Were Here" playlist files. Finally, if I have ticked All levels of sub-nodes I would get "Pink Floyd", "Dark Side of the Moon" and "Wish You Were Here" playlist files. Of course, if I have ticked Selected node then I would get the "Rock" playlist file as well, together with the previously mentioned playlist files.

    With the second group of options we have 3 choices to specify where and how we want to store playlists: to parent folders, to child folders or to a single folder. However, the settings in this group have only effect with the "Child Nodes" commands with the "..." on the end of a name, e.g. Export Child Nodes to Playlists Files..., i.e. the commands that allow us to specify some arbitrary destination folder. Those settings are ignored with the "Child Nodes" commands with the "to Same Folders" text on the end of a name, e.g. Export Child Nodes As Playlist Files to Same Folders, since in that case the playlist files are always stored to the same folders with media files.

    Here is the same example of the "Rock" branch with the previously ticked All levels of sub-nodes option. If I have ticked To parent folders I would get "Pink Floyd" playlist file in the specified destination folder and "Dark Side of the Moon" and "Wish You Were Here" playlist files in the "Pink Floyd" sub-folder of that specified folder. If I have ticked To child folders I would get "Pink Floyd" playlist file in the "Pink Floyd" sub-folder of the specified folder, "Dark Side of the Moon" playlist file in the "Dark Side of the Moon" sub-folder of the "Pink Floyd" folder and "Wish You Were Here" playlist file in the "Wish You Were Here" sub-folder of the "Pink Floyd" folder.

    Finally, If I have ticked To single folder I would get all files in the specified folder, i.e. I would get "Pink Floyd", "Pink Floyd - Dark Side of the Moon" and "Pink Floyd - Wish You Were Here" playlist files in the same folder. With the Separator option we could specify which string of characters we want to use as a separator between nested levels of nodes; by default it is " - " (without the double quotes, of course), as it is in the previous example.

    Those last examples are such that if I have the Selected node option turned off. However, if I turn that option on, I would get one additional, "Rock" sub-folder in the specified folder and inside of it there would be created folders mentioned in the previous two examples with To parent folders and To child folders options. If I choose To single folder with the Selected node option turned on, then I would get "Rock - Pink Floyd", "Rock - Pink Floyd - Dark Side of the Moon" and "Rock - Pink Floyd - Wish You Were Here" playlist files in the specified folder.

    With the third group of options we could specify the format of the exported playlist files: .m3u, .asx or .xspf. If we choose export to the M3U format, with the #EXT option we could further specify the format of the exported .m3u files. If that option is turned off, we would get the so-called Simple M3U format, i.e. .m3u files will have only list of paths to the media files, e.g.:

    c:\My Music\Rock\Pink Floyd\Dark Side of the Moon\01 - Speak to Me; Breathe in the Air.mp3
    c:\My Music\Rock\Pink Floyd\Dark Side of the Moon\02 - On the Run.mp3

    However, if the #EXT option is turned on, we would get the Extended M3U format, with the additional information about each included media file which helps faster display of added/opened playlists in many players, but some another players don't support such extended M3U format:

    #EXTM3U
    #EXTINF:240,Pink Floyd - Speak to Me; Breathe in the Air
    c:\My Music\Rock\Pink Floyd\Dark Side of the Moon\01 - Speak to Me; Breathe in the Air.mp3
    #EXTINF:213,Pink Floyd - On the Run
    c:\My Music\Rock\Pink Floyd\Dark Side of the Moon\02 - On the Run.mp3

    The fourth group of options determines encoding format of the exported playlist files: ANSI, UTF-8 and Unicode (UTF-16). You should choose UTF-8 or Unicode if you have non-ANSI characters in your paths of audio files, e.g. Cyrillic, but you should first check if such files are supported with your media player. If you choose UTF-8 format you could specify if playlist files should have BOM characters. A byte-order mark (BOM) is the invisible Unicode character placed at the begin of the file, it is used as a marker to indicate that text is encoded in UTF-8; you should uncheck this option if you have a player that cannot read files with a BOM. By the way, if you modify some playlist file in UTF-8 format using Notepad, it will save that file with added BOM always.

    ExportM3UsForSubNodes-4.0-03

    The next group of options determines what we want to skip/exclude from the export. We could skip M3U nodes from My Computer branch of the tree, "All" nodes from My Computer, Location and Magic Nodes branches, Autoplaylists from the Playlists branch and nodes/folders with the specified name(s). Names of folders could be specified using regular expressions if that option is turned on, but even if we don't use regular expressions we could specify several names of nodes/folders for skipping using the vertical line "|" as a separator.

    If some named folder is skipped during the export, then all its sub-folders would be skipped as well. The sub-nodes of "All" nodes from the Location branch are skipped by design even if you turn off skipping of "All" nodes. The M3U and "All" nodes from My Computer branch don't have sub-nodes anyway. The Skip export of - M3U nodes option is ignored if we choose Export M3U Playlists from Child Nodes or Export M3U Playlists in Child Nodes to Same Folders commands from the menu. The last (rightmost) level of "All" nodes in My Computer branch could be skipped using the SkipLastAllNodes INI key to get consistent behavior with "All" nodes from Location branch which will be explained later in the Additional INI keys section. Also, the export of sub-nodes of Autoplaylists depends of the SkipAutoPlsSubNodes INI key which will be explained later.

    The exported playlist files and created playlists contain only the media files that are displayed in the tracklist for each corresponding source node. With the Exclude files options we could specify which media files should be additionally omitted from the playlists during the export: unavailable files and/or files with the specified extension(s). The several extensions could be specified using the "|" as a separator, e.g. ogg|aac|mp4.

    ExportM3UsForSubNodes-4.0-04

    The next group of options determines how paths of media files will be stored in playlist files. With the Relative option we could choose if we want paths in playlist files in relative or absolute format. Absolute paths represents full paths to the media files as you could see from the previous examples for the Extended .m3u format. Relative paths represents paths of the media files relative to the path of the playlist file. For example, if I choose export to parent folders, I would get "Dark Side of the Moon" playlist file with relative paths as:
    Dark Side of the Moon\01 - Speak to Me; Breathe in the Air.mp3
    Dark Side of the Moon\02 - On the Run.mp3

    Relative paths could help if you have different paths on the source and destination computers/players (e.g. different absolute paths c:\My Music\Rock\Pink Floyd\Dark Side of the Moon\02 - On the Run.mp3 on the computer and e:\Music\Rock\Pink Floyd\Dark Side of the Moon\02 - On the Run.mp3 on the player would have the same relative path Dark Side of the Moon\02 - On the Run.mp3), but some players don't support them, so you should check first if you could use that option. You should export playlist files to the same drive with media files, otherwise the relative paths cannot be determined and absolute paths would be used instead.

    With the URL (file://) option we could choose another format for paths in playlist files. If I turn that option on, with the previous example I would get:

    file:///c:/My%20Music/Rock/Pink%20Floyd/Dark%20Side%20of%20the%20Moon/01%20-%20Speak%20to%20Me%3B%20Breathe%20in%20the%20Air.mp3
    file:///c:/My%20Music/Rock/Pink%20Floyd/Dark%20Side%20of%20the%20Moon/02%20-%20On%20the%20Run.mp3

    There is small number of players that require playlist files with such paths, so most probably you wouldn't need that option.

    With the Short (8.3) option we could get paths in old DOS format that are required on some players. That option works only with the existing files, so the Exclude unavailable files option should be turned on for it. Also, it is not possible to use URL and Short paths at the same time. If this option is turned on then all folders/filenames will be stored using such short form. For example, with the following full path:
    D:\Music FLAC\Kurt Masur; New York Philharmonic Orchestra\Dvořák; Symphony #9, Slavonic Dances\01 Dvořák_ Symphony #9 In E Minor, O.flac

    we would get:
    D:\MUSICF~1\KURTMA~1\DVOK_S~1\01DVOK~1.FLA

    However, some players like Logitech Media Server (LMS) require short form only for folders/filenames with non-ANSI characters, like this:
    D:\Music FLAC\Kurt Masur; New York Philharmonic Orchestra\DVOK_S~1\01DVOK~1.FLA

    So, in that case to get such paths you should turn on ANSI file format and turn off Short (8.3) paths.

    With the Unix ("/", LF) option we could also specify format for paths in playlist files. If your media player has some Unix variation as Linux for its OS, you should turn that option on. In that case paths of media files would have the "/" separator between folders instead of "\" and the new lines would be represented with the LF character instead of CR+LF as it is in Windows.

    With the Replace and With options we could replace parts of paths with another string in almost same way as we could do it in e.g. Notepad using its Replace option (well, maybe as with EditPad or similar advanced text editor which also supports Regular expressions). Within the Replace text box you could specify string which you want to replace and with the second, With text box you could specify string for replacement. You could also use the "..." buttons to specify paths, but only if you want to replace one folder with some another. For example, "c:\Documents and Settings\My Name\My Music\" could be replaced with "e:\Music\.

    However, with the Use Regular expressions for specifying paths/folders option we could specify very complex patterns for replacement, e.g. we could replace several different paths with the single one at once. For example, the "^.+\\(?=[^\\]+\.[^\.\\]+$)" string is the expression which represents any full path, excluding the filename and the extension. So, using that expression, if you leave the With text box empty, all folders would be removed from paths, saving only filenames and extensions into playlist files, or you could enter "e:\Music\" in the With text box and all folders would be replaced with that single one. Although, you should turn on the Regular expressions only if you know how to use them.

    The Use Regular expressions option has an effect on both Replace - Paths in playlist files and Skip export of - Folders options, i.e. you cannot use the Regular expressions for the first option and not to use them for the second option, and vice versa. Also, the Replace option cannot be used with the Relative paths.

    ExportM3UsForSubNodes-4.0-05

    The next group of remaining controls on the Export/Create Playlist dialog is used only for automatic export of MM playlists to the playlist files. We could choose when playlists should be exported: On startup, On shutdown and/or Every xx minute(s). Then we could choose the playlist which should be automatically exported (altogether with its sub-playlists) using the From dropdown list. Only playlists from the first level in Playlists branch could be directly selected from that list, but some nested playlist could be also specified using "\" as a separator between sub-levels. Within the To text box we should specify the folder where we want to get exported playlist file(s). Its usage is similar to the destination folder specified after chosen some "Child Nodes" command from the menu for the manual export. This also means that almost all previously mentioned options are shared for manual and automatic export including "Export to parent/child/single folder(s)", "Relative paths" and so on.

    With the Create new child folder with a dated name option we could specify if we want automatically exported playlist files in separated folders with dates in their names which would be within the folder specified in the To text box. If the For every auto-export option is turned on, dated folders with playlist files would be created whenever the condition for automatic export is satisfied, e.g. if Every xx minutes is chosen then every specified minutes would be created a new folder. If the Once in a day option is turned on, folders with dates in their names would be created only once in a day.

    Additional INI keys

    There are some keys in the [ExportM3UsForChildNodes] section of the MediaMonkey.ini file for some less used options that are not represented with GUI:
  • ExportOnStartupDelayMs - delay for automatic export on startup, in milliseconds, default value is 1000, i.e. 1 second delay;

  • DontUseSQLForTracklist - the export of nodes from the Library (and collections in MM4) and Magic Nodes is much faster if this option is = 0 (default value) because it doesn't need to wait for the filelist to be refreshed for each exported node; however, if you notice some problems with SQL generated playlists then you could write = 1; the media files referenced in playlist files generated using SQL have fixed (default) order, so you should set this ini key to 1 if you want to get them sorted as they appear in the filelist respecting your manual settings of the file order for corresponding nodes;

  • PathsWithFullMNCaptions - if this key is = 0 (default) then playlists exported from Magic nodes would not have Statistic addition to the node's caption in their names, however if you want that part of caption in the playlist names then you should write = 1;

  • AllNodesMode - this value determines the export of "All" nodes and names of exported playlists:
    -- AllNodesMode = 0 - "All" nodes are exported instead of their parents, i.e. the playlist files would contain paths to files in corresponding nodes and all their sub-nodes (the default behavior of the add-on versions before v4.0);
    -- AllNodesMode = 1 - "All" nodes are exported with parent node names, the result could be very similar to the previous mode;
    -- AllNodesMode = 2 - "All" nodes are exported with "[All]" playlist names, should be avoided with To parent folder option;
    -- AllNodesMode = 3 - "All" nodes are exported as "Parent_Name [All]" playlist names (default mode);

  • SkipLastAllNodes - the rightmost (deepest) disk folders in My Computer branch have displayed "All" sub-nodes, which is different from the disk folders from the Location branch (I think this is a program bug), you should write = 1 if you want skipped those "All" nodes from My Computer (default is = 0);

  • SkipAutoPlsSubNodes - when you choose option to Skip export of - Autoplaylists, if this key is = 1 export would be omitted for their sub-nodes as well, however autoplaylists could have static playlists as sub-nodes so you may want to leave this at = 0 (default);

  • UseLastExportM3UsDir - when you choose some "Child Nodes" command you would get the dialog box for specifying the destination folder, if this option is = 0 (default) you would get displayed folder depending of the selected node/file in the tracklist, however if you write = 1 the last destination folder that you have selected for export would be retrieved from the .ini file;

  • DontShowInfoBoxOnExportEnd - if this is = 0 (default) you would get displayed the message box showing the number of exported playlists and elapsed time on each finished export using some "Child Nodes" command;

  • ClearSameNamePlsMode - when creating playlists, if destination playlists already contain some files: 0 = keep those files, 1 = remove them from playlists, 2 = ask what to do; default value is 2;

  • EventLoggerMode - if you have installed the Event Logger add-on, you could get displayed some additional information about the work of this add-on in the Event Viewer panel; the values could be from = 0 (default, without any information) to = 3 (most displayed information); e.g. the value = 1 will display every exported playlist file and the number of the included (referenced) media files; the negative values from = -1 to = -3 will cause logging of those information to the log file as well.

    The MediaMonkey.ini file is stored in the c:\Documents and Settings\User_Name\Application Data\MediaMonkey folder for MM4 and Win7. You could find the location of the .ini file depending of the version of MediaMonkey and Windows here. If you want to modify any key in it using e.g. Notepad, you should do that with closed MediaMonkey application.

    Requirements

    To be able to use this add-on, you need to have the Media Tree displayed (set in the View menu). Additionally, if you want to export the M3U playlist files, you need to have the My Computer branch visible (set in the Manage Collections dialog box) and you should have turned on the option Show M3U playlists in My Computer nodes on the Library / Appearance page of the Options dialog box from the Tools menu.

    You should not change the nodes in the Media Tree while the add-in is running! In fact, it is highly recommended that you do not use the program until the add-on finishes its work. If it takes to long and you want to abort it, you could choose the Terminate option from the context menu of the progress bar.

    Limitations

    Exported playlists from the Playlists branch are all saved as playlist files with fixed content, even auto-playlists. If you import such playlist files on another computer, you will get only static playlists, even with files that was exported from auto-playlists. So this add-on cannot be used to transfer auto-playlists from one computer to another in their native form. If you want such possibility, you could use Restore/Synchronize Database add-on instead, but it allows export/import only for the whole Playlists branch, while this add-on could export/import just the selected playlist and its sub-playlists.

    Windows has the limitation on the path length of 260 characters; the files with longer path will not be created/copied on export, which applies both to playlist and media files (if you use any "... Copy Media Files" command from the menu). If you want to find out if any file is skipped on export, you could install the Event Logger add-on with the added EventLoggerMode key to the Ini file as it is mentioned in the Additional INI keys section.

    Refreshing of the tracklist works very strange in MediaMonkey 2.x and because of that you need to click on the confirmation dialog after every generated playlist, i.e. for every sub-node. This confirmation dialog is not needed with MM 3.x, and the speed and reliability are much better if you have installed MM 3.1.0.1218 or higher. Nodes within the Playlist branch don't have such limitation, only regular nodes. Also, with the version 4.x of the add-on, almost all nodes from the Library [MM2-3] and collections (Entire Library, Music, ...) [MM4] are exported using SQL without the mentioned limitation.

    You could directly select a playlist for automatic export in the From combo box in the Options box only for playlists on the first level, i.e. a playlist which is a child of the Playlists node. If you want to auto-export a nested playlist, you could do that if you manually enter a full path to that playlist using "\" as a separator between nested levels, e.g. Genres\Rock\Pink Floyd. This also means that you cannot use the "\" character in the playlist names specified in that combo box. However, this limitation has only the playlist specified in the From path for the automatic export - other exported playlists has not that limitation, even the child playlists of that playlist could have "\" in their names. It is even possible to specify the name of some nested playlist without its full path, but only if that name is unique.

    Notice

    This add-on is a false positive reported as a worm by F-Secure. The author of F-Secure promised me that will update its database and put the add-on on white-list, but still didn't. If you go to the www.virustotal.com/en/ site, you will see that it is safe tested by 54 popular anti-virus engines; the only one reporting a worm in it is F-Secure.