- License
- Requirements
- Goal
- First Time Use
- Usage Basics
- Playlist Strings
- Example Playlist Strings
- Version History
The ID3Browse software, source-code and documentation is distributed under the following Open Source license:
ID3Browse, Copyright (c) 2006, Shane Brinkman-Davis
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
- Neither the name of the Shane Brinkman-Davis nor the names of his
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
This software requires Windows 95 or better. I have tested it
on Win98, Win2000 and WinXP. It should work on Windows 95, ME, and NT, too.
The program needs about 10megs of free memory to run on a library of 15,000 MP3s.
The goal of this software is to automatically generate playlists
organized in directories from any information found in ID3 tags.
The core use of this is to emulate ID3 based browsing for File-System
based MP3 players such as Archos' portable MP3 and AV players.
This could have been done in a very simple way supporting the standard
Album, Artist, Genre, and Song sorting schemes typically hard coded
into Media libraries and MP3 players. However, I wanted to make
a utility that was much more flexible; that allowed you to generate
playlists in directory structures in nearly anyway you can think
of.
To generate some standard ID3-based browsing directories and
playlists, follow the simple quick-start guide below. This will
make an ID3 directory on the root of your hard drive with many directories
and playlists inside it. It will not delete, move, copy or otherwise
modify your MP3s.
Quick Start:
- Copy ID3Browse.exe and the .bat files to your hard drive (or
MP3 player) with all your MP3 files (anywhere on that hard drive
will do)
- Double click on the "Generate Standard ID3 Based Browsing.bat"
file on the hard-drive you copied it to (this only works if the
bat file is on the same drive as all your MP3s).
- Wait a few minutes while the ID3 directories and playlists are
created
- When it is done you will see the message: "ID3Browse -
done!" and some statistics.
- Press a key to close the window - that's it!
The batch file in step 3 above creates 4 standard ways to browse
your MP3s:
- By Artist
- By Album
- By Genre
- By Year
Disconnect your MP3 player and browse the ID3 directory - you should
find it very much like browsing your whole collection by ID3 tags!
Whenever you add MP3s, just re-run this program. If you delete MP3s,
delete the ID3 directory and re-run this program.
Want more? With ID3Browse you can set up just about any
way to browse your MP3s based on ID3 tags. Read on if you want to
learn how.
The Basic Idea
ID3Browse generates M3U files and directories. To do this, it first
makes a list of every MP3 in every ScanDir (root directories you
provide) and their sub-directories. Then, for each MP3 file in that
list, it adds the MP3 to the playlist specified by the PlaylistString.
When all MP3s have been processed, duplicates are removed from every
playlist (each MP3 will appear in each playlist at most once), the
playlists are sorted by track number (or whatever custom sort you
want), and, finally, every playlist is written to disk, creating
all necessary directories as it goes.
You can specify more than one PlaylistString. In the case of multiple
PlaylistStrings, each MP3 is added to the playlist specified by
each PlaylistString. (Aside: The maximum number of playlists that
could possibly be generated is the number of MP3s times the number
of PlaylistStrings.)
A PlaylistString is the path and name of the M3U playlist file
every MP3 will be added to. The only thing special is that PlaylistStrings
may contain certain keywords (words that start with the pipe, '|'
character) which will be replaced with actual information from the
MP3's ID3 tag (or other sources). In this way one PlaylistString
may represent many M3U files. For example, the playlist string "\ID3\Genre\|Genre"
will generate the playlist "\ID3\Genre\Rock.m3u" for an
MP3 with the Genre of Rock in its ID3 tag and "\ID3\Genre\Disco.m3u"
for one with Disco for its genre.
Using ID3Browse
ID3Browse is a command-line tool. You control its various options
with command-line parameters. It is probably easiest to start by
copying one of the sample ".bat" files provided with ID3Browse
and making changes and seeing what they do. Below is a description
of how the command-line parameters work:
Usage: C:\> id3browse
ScanDir(s) [*.id3b ConfigFile(s)] [/options] [/playlist="PlaylistString"]
- ScanDirs, config files, options, and playlists may appear in
any order
- One or more ScanDirs must be provided
- Zero or more Playlists can be provided
- Parts in brackets '[]' are optional (don't actually type the
[]s)
ScanDirs: ID3Browse scans every scan dir for MP3s.
ConfigFiles are text files with the extension .id3b. They simply
contain a list of ID3Browse command-line options, one per line.
Any ID3Browse command-line option - include other ConfigFiles -
can be listed and will be interpreted as if they were typed in on
the command-line.
Boolean Options (off by default):
- /AllowBackslashes - Don't remove backslashes
from FormatVariable values (see Playlist Strings below)
Normally, if there is a Backslash (\) in the string resulting
from a FormatVariable, they are replaced with '!' characters
since otherwise they would create extra sub-directories. However,
if this is what you want, use this setting.
- /CommentPlaylists - Output comments in the
playlist files.
This is most useful to see how your SortStrings are working.
Normally SortStrings are not displayed so you might be confused
why your tracks are being sorted in a certain order. By turning
on the /CommentPlaylists option and viewing your playlists with
a text editor, you can see exactly how ID3Browse is sorting
your playlists. If it isn't sorting them the way you want, you
can set a different /SortBy setting.
- /DriveLetters - enables outputting drive-letters
in playlist entries
- /IgnoreDir - ignores all files in dir or its
subdirs
- /IgnoreID3v1 - ignore ID3 v1 tags
- /IgnoreID3v2 - ignore ID3 v2 tags
- /IgnoreTagless - ignores files with no ID3
tags (or only ignored id3 tags)
- /PreferID3v1 - use ID3 v1 tags over v2 tags
(default is v2 over v1 tags)
If all your v2 tags are up to date, but your v1 tags are a
mess, or visa versa, you may just want to ignore the "not-up-to-date"
tag-set. Alternatively, you may wish to just swap the priority.
By default, all v2 tag values take priority over v1 tag values.
- /ReadOnly - do all the prep-work but don't
actually create any dirs or playlists
This is useful, particularly in combination with the /Verbose
option, to test your ID3Browse options without writing anything
to disk.
- /TagReport - show a tag-report when done
The TagReport is displayed at the end of your ID3Browse run
and it tells you a bit about what is in your MP3 files. It tells
you how many of each type of tag it found as well as what types
of fields (or frames) within those tags that it found.
- /Verbose - show everything ID3Browse is doing
in detail
Settings:
- /MaxPlaylistSize=# - set the maximum number
of files to put in a playlist. Default: no maximum
If a MaxPlaylistSize is set then any playlist that is larger
is broken apart into multiple files. These split playlists
are numbered by adding its number to the end of the M3U's name
(complete with 0-padding when necessary so alphabetical listing
still sorts them correctly).
- /MinPlaylistSize=# - playlists smaller than
Min are not created. Default: 1
- /MiscPlaylistName=string - merge all too-small
playlists into one. Default: (too-small playlists are discarded)
When a playlist has fewer files than MinPlaylistSize, it is
simply not created. Instead of discarding all too-small playlists,
you can merge them into miscellaneous playlists, one per directory.
Just set the /MiscPlaylistName setting when you set your /MinPlaylistSize
to do this.
- /SortBy=format_string - default M3U sort (SortString
may contain any character or FormatVariable). Default: |Artist|Album|04TrackNum
By default, playlists are sorted by Artist, Album and Track
Number. However, you can set up your own custom sort however
you want. The /SortBy format string looks just like a /playlist
string in that you can use characters and FormatVariables. A
SortBy string is generated for every MP3 in every Playlist.
Once the playlist is ready to be written to disc, the list is
sorted alphabetically by the MP3's SortBy strings.
Note: Each /playlist string can override the default /SortBy
format string with its own, unique format by adding a '|SortBy="
clause to the end of the /playlist string.
- /UnknownString=string - string to use for unknown
values. Default: (Unknown)
When a FormatVariable cannot find the requested information
(for example if there is no Artist entry for an MP3 and the
|Artist FormatVariable was used), then the /UnknownString
is used. By default the text "(Unknown)" is inserted.
A playlist string is the Path and Name (without the .m3u extension)
of the playlist to be created. Every MP3 scanned (with an ID3 tag),
is added to the playlist specified by each playlist-string. The
magic happens when you have FormatVariables in your playlist string
that cause different MP3s to be placed into different playlists.
Quick Info:
- A playlist string is indicated by a /playlist="playlist_string"
on the command-line.
- Playlist strings should always be quoted.
- Playlist strings may contain 0 or more FormatVariables (see
below).
- PlaylistStrings may also have an optional "|SortBy="
clause that overrides the default SortBy string specified by the
/SortBy option. Each playlist's tracks are sorted alphabetically
by the track's SortStrings.
- Example: /playlist="ID3\Artist\|Artist\|Album"
- There are many more examples at the end of this file...
Playlist string variables are the key to making ID3Browse useful.
When an MP3 is processed, all the FormatVariables in each PlaylistString
are replaced with their corresponding values out of that mp3's
id3 tag and file information . The result, for each playlist
string, is a specific playlist string - the playlist that MP3 will
be added to.
FormatVariables are formatted as follows:
- |[0][-][MinWidth][.MaxWidth]Keyword
Keywords:
|
Keyword
|
Description |
|
|
Takes the Album ID3 Field |
|
|
Takes the Artist ID3 Field |
- Comment - ShortComment + LongComment
|
Comment is exactly the same as |ShortComment|LongComment -
the long comment right after the short comment. |
- Decade - calculated from the ID3 tag's year
|
Takes the Decade of the Song from the Year ID3 Field |
|
|
Directory0 is the drive the MP3 file was found on. Directory1
is the first directory in the path-string for the MP3 file,
Directory 2 is the second, 3 - the third... Directory9 is the
9th, DirectoryA is the 10th, DirectoryB is the 11th up to DirectoryZ
- the 35th. |
|
|
Takes the Genre ID3 Field. If there are more than one Genre's,
this is the first one (equivalent to MultiGenre0) |
- FilePath
- FileName
- FileExtension
|
You can inserted the individual parts of an MP3's entire
path, name, and extension, using these keywords. The full
drive-letter+path+name+extension string can be regenerated
using the following format string:
- |Dir0:\|FilePath\|FileName.|FileExtension
|
|
|
Takes the Long-Comment part of the ID3 Comment Field |
|
|
MultiGenre0 is the first genre in the ID3 tag, MultiGenre1
the second, MultiGenre9 the 10th, MultiGenreA the 11th, MultiGenreZ
the 36th. |
|
|
Takes the Number of Tracks for the Album from the ID3 Track
Field |
|
|
Generates a random number >=0 and < 1,000,000. This
is most useful to generate randomly sorted playlist by setting
the /SortBy option as follows:
|
|
|
Takes the Short-Comment part of the ID3 Comment Field |
|
|
Takes the Artist ID3 Field and rearrange artist names starting
with "The..." to "Group, The" where appropriate. |
|
|
Takes the Song ID3 Field |
|
|
Takes the Track number part of the Track Number ID3 Field |
|
|
Takes the Year ID3 Field |
- Any 3 character ID3v2.2 FrameID followed by a space
|
If the ID3v2.2 Frame is a text field, this gets the text value
of that frame. If not, and the frame is present, the text "Unsupported
FrameID='FrameID'" is used. |
- Any 4 character ID3v2.3/.4 FrameID
|
If the ID3v2.3 Frame is a text field, this gets the text value
of that frame. If not, and the frame is present, the text "Unsupported
FrameID='FrameID'" is used. |
If a particular MP3 is missing the ID3 Frame requested by the keyword
(or the Directory# or MultiGenre#), the value "(Unknown)"
is used (or whatever string you set with the /UnknownString
option). Files with unknown FormatVariable values can be ignored
(not added to that specific playlist) with the /ignoreunknowns
option.
For each variable, there are options on how it is formatted. The
key things you can control are: the minimum number of characters
it will be, the maximum number of characters, the alignment, and
the character to use when the variable is shorter than the minimum
number of characters (PadChar). The Format options are:
- Leading zero [0]
sets the PadChar='0' and toggles the justification.
- Leading minus [-]
toggles the justification.
- [MinWidth] -
a positive integer - guarantees a least MinWidth characters will
be used.
- [.MaxWidth] -
a positive integer - guarantees no more than MaxWidth characters
will be used
- Defaults: Left justified, MinWidth=0, PadChar=a space, no MaxWidth
- Example: |03.3NumTracks
(right justified, pad
with zeros, must be exactly 3 characters wide)
There are no limitations on the strings in ID3 tags, but the characters
\, /, :, *, ?, <, >, and | are illegal in Windows file names.
In the case of any illegal Windows file-name character, ID3Browse
replace it with an exclamation mark: '!' (if /allowbackslashes is
on, '\' are left alone). Any control character (< ascii value
32) is replaced with a space: ' '. All other characters are left
alone.
The best way to really understand ID3Browse is through a bunch
of examples, so below I have provided many. For every example I
provide the exact /playlist="..." command-line option,
an example generated playlist, and the 'verbose' description of
the playlist string (a wordy, yet precise, computer-generated description).
| /playlist="\ID3\AllSongs" |
|
Make a playlist of all songs. Notice no keywords
are used - this is perfectly fine. It just means every MP3
will be put into this playlist.
Example generated playlist:
\ID3\AllSongs.m3u
Verbose: \ID3\AllSongs
|
| /playlist="\ID3\Artist\|Artist" |
|
In \ID3\Artist, group all songs by Artist.
Example generated playlist:
\ID3\Artist\Underworld.m3u
Verbose: \ID3\Artist\[Keyword=Artist]
|
| /playlist="\ID3\Album\|Album" |
|
In \ID3\Album, group all songs by Album.
Example generated playlist:
\ID3\Album\Beaucoup
Fish.m3u
Verbose: \ID3\Album\[Keyword=Album]
|
| /playlist="ID3\Artist\|Artist\|Album" |
|
In \ID3\Artist, group all Albums by Artist.
Example generated playlist: \ID3\Artist\Underworld\Beaucoup
Fish.m3u
Verbose: \ID3\Artist\[Keyword=Artist]\[Keyword=Album]
|
| /playlist="\ID3\Album\|Artist
- |Album" |
|
In \ID3\Album, group all Albums by Artist, but
instead making subdirs for each artist, just make directories
with the Artist's name followed by the Album. Note this is
exactly the same as the last example but the '\' was replaced
with ' - '.
Example generated playlist:
\ID3\Album\Underworld - Beaucoup
Fish.m3u
Verbose: \ID3\Album\[Keyword=Artist] -
[Keyword=Album]
|
| /playlist="\ID3\Artist\|Artist\!|Artist" |
|
In \ID3\Artist, group all songs by Artist -
placing the playlist inside the Artist's directory with an
exclamation mark (!) before the playlist's name so it will
be listed first alphabetically.
Example generated playlist:
\ID3\Artist\Underworld\!Underworld.m3u
Verbose: \ID3\Artist\[Keyword=Artist]\![Keyword=Artist]
|
| /playlist="\ID3\Genre\|Genre\|Album" |
|
In \ID3\Genre, group every Album by Genre.
Example generated playlist:
\ID3\Genre\Electronica\Beaucoup
Fish.m3u
Verbose: \ID3\Genre\[Keyword=Genre]\[Keyword=Album]
|
| /playlist="\ID3\Artist\|SmartArtist\|Album" |
|
In \ID3\Artist, group every Album by Artist's
"LastName, FirstName" or "GroupTitle, The".
Example generated playlist:
\ID3\Artist\Amos, Tori\Little
Earthquakes.m3u
Verbose: \ID3\Artist\[Keyword=SmartArtist]\[Keyword=Album]
|
| /playlist="\ID3\Year\|Decades\|04Year\|Artist" |
|
In \ID3\Year, group all songs by Decade, Year,
and Artist.
Example generated playlist:
\ID3\Year\90s\1991\Tori Amos.m3u
Verbose: \ID3\Year\[Keyword=Decade]s\[Keyword=Year,
Right-justified, MinWidth=4, PadChar='0']\[Keyword=Artist]
|
| /playlist="\ID3\Album\|.1Album\|Album" |
|
In ID3\Album, group all Albums by their first
letter.
Example generated playlist:
\ID3\Album\L\Little Earthquakes.m3u
Verbose: \ID3\Album\[Keyword=Album, Left-justified,
MaxWidth=1]\[Keyword=Album]
|
| /playlist="\ID3\Comment\|ShortComment,
|LongComment" |
|
In ID3\Comment, group all songs by ShortComment
and LongComment.
Example generated playlist:
\ID3\Comment\(Unknown), 980D670C.m3u
Verbose: \ID3\Comment\[Keyword=ShortComment],
[Keyword=LongComment]
|
| /playlist="\ID3\NumTracks\|02NumTracks
tracks\|Album" |
|
In ID3\NumTracks, group all Albums by track-count.
Format the track-count with two columns, right justified, with
leading 0s.
Example generated playlist:
\ID3\NumTracks\12 tracks\Little
Earthquakes.m3u
Verbose: \ID3\NumTracks\[Keyword=NumTracks,
Right-justified, MinWidth=2, PadChar='0'] tracks\[Keyword=Album]
|
| /playlist="\ID3\Song\|.1Song\|.2Song\|.3Song\|Song" |
|
In ID3\Song, group all songs by first, then
second, then third letters.
Example generated playlist:
\ID3\Song\C\Cr\Cru\Crucify.m3u
Verbose: \ID3\Song\[Keyword=Song, Left-justified,
MaxWidth=1]\[Keyword=Song, Left-justified, MaxWidth=2]\[Keyword=Song,
Left-justified, MaxWidth=3]\[Keyword=Song]
|
| /playlist="\ID3\Pictures\|APIC" |
|
In ID3\Song, group all songs by their embedded pictures
types.
Example generated playlist: \ID3\Pictures\Embedded
Picture - Encoding=image!jpg PictureType=Other.m3u
Verbose: \ID3\APIC\[Keyword=ID3FieldID=APIC]
|
|
/playlist="|Dir0:\|FilePath\AllSongs"
/allowbackslashes
|
|
This one requires the /allowbackslashes option to work
properly. This will put a playlist in every directory with
MP3s that includes every MP3 in that directory (but NOT any
MP3s in its sub directories).
Example generated playlist: f:\music\classical\Bach,
Johann Sebastian\AllSongs.m3u
Verbose: [Keyword=Dir-0]:\[Keyword=FilePath]\AllSongs
|
|
/playlist="|Dir0:\AllSongs"
/playlist="|Dir0:\|Dir1\AllSongs"
/playlist="|Dir0:\|Dir1\|Dir2\AllSongs"
/playlist="|Dir0:\|Dir1\|Dir2\|Dir3\AllSongs"
/playlist="|Dir0:\|Dir1\|Dir2\|Dir3\|Dir4\AllSongs"
/playlist="|Dir0:\|Dir1\|Dir2\|Dir3\|Dir4\|Dir5\AllSongs"
/allowbackslashes
/ignoreunknowns
|
|
This configuration is somewhat like the last one, but is
pretty handy. It requires both the /allowbackslashes and /ignoreunknowns
options. All these settings together put a playlist in every
directory of every MP3 in that directory and all its sub directories
(assumes no more than 5 directory levels - you can extend
this up to 35 by adding 6,7, 8,... a,b,c...z "Dir#"s).
Example generated playlist: f:\music\classical\Bach,
Johann Sebastian\AllSongs.m3u
Verbose: [Keyword=Dir-0]:\AllSongs
Verbose: [Keyword=Dir-0]:\[Keyword=Dir1]\AllSongs
Verbose: [Keyword=Dir-0]:\[Keyword=Dir1]\[Keyword=Dir2]\AllSongs
Verbose: [Keyword=Dir-0]:\[Keyword=Dir1]\[Keyword=Dir2]\[Keyword=Dir3]\AllSongs
Verbose: [Keyword=Dir-0]:\[Keyword=Dir1]\[Keyword=Dir2]\[Keyword=Dir3]\[Keyword=Dir4]\AllSongs
Verbose: [Keyword=Dir-0]:\[Keyword=Dir1]\[Keyword=Dir2]\[Keyword=Dir3]\[Keyword=Dir4]\[Keyword=Dir5]\AllSongs
|
/playlist="\ID3\Genre\|MultiGenre0"
/playlist="\ID3\Genre\|MultiGenre1"
/playlist="\ID3\Genre\|MultiGenre2"
/playlist="\ID3\Genre\|MultiGenre3"
/playlist="\ID3\Genre\|MultiGenre4"
/ignoreunknowns |
|
If you have more than one Genre per song, use this instead
of the simpler Genre example above. These settings will put
each MP3 into a playlist for each Genre it is in. (assumes
no more than 5 genres per song - you can extend this up to
36 by adding 5,6,7,... a,b,c...z "MultiGenre#"s)
Example generated playlist: \ID3\Genre\Electronica.m3u
Verbose: \ID3\[Keyword=MultiGenre-0]
Verbose: \ID3\[Keyword=MultiGenre-1]
Verbose: \ID3\[Keyword=MultiGenre-2]
Verbose: \ID3\[Keyword=MultiGenre-3]
Verbose: \ID3\[Keyword=MultiGenre-4]
|
| /playlist="\ID3\AllTracks|SortBy=|Artist|Album|03TrackNum" |
|
If you want a playlist of all your tracks sorted by Artist,
Album then TrackNumber, just use this option.
Example generated playlist: \ID3\AllTracks.m3u
Verbose: \ID3\AllTracks
(SortBy: [Keyword=Artist][Keyword=Album][Keyword=TrackNum,
Right-justified, MinWidth=3, PadChar='0'])
|
| /SortBy="|06RandomNumber" |
|
If you want all generated tracks to be randomized,
just add this option to your ID3Browse command-line or .id3b
file. Note that you could randomize just specific playlists
generated by specific /playlist strings by adding "|SortBy=|06RandomNumber"
to the end of the playlist string instead of using the /SortBy
option which sets the sort for all playlist strings (except
the ones that specifically override it with their own |SortBy
clauses).
|
| Version |
Key Changes |
| v3.1 |
BugFix:
- More fixes to ensure File name and path case are preserved
|
| v3.0 |
First Open-Source release.
New:
- File name and path case is preserved
- Lots of code re-org and cleanup for open-source release
- Switched from the Watcom compiler to Microsoft Visual C++ v6.0. The EXE is smaller, faster, and more memory efficient.
|
| v2.4 |
New:
- Added option: /IgnoreTagless - ignores files with no
ID3 tags (or only ignored id3 tags)
- Added setting: /IgnoreDir - ignores all files in dir or
its subdirs
- Added option: /DriveLetters which enables outputting drive-letters
in playlist entries
BugFix:
- If you input an invalid path for a scan dir, the current
directory on that drive would be used instead. Now it exits
with an error.
BugFix (changed behavior):
- Files with no tags, OR only ignored tags, would not get
added to any playlist. There are now useful FormatVariables
that do not depend on tags, so it may be desirable to generate
playlists based on files which are tagless (or with only
ignored tags). By default, files with no tags (or with only
ignored tags) will still generate playlists with "(Unknown)"
values for their ID3 fields. To return to the previous default
behavior, just use the new option: /ignoretagless.
|
| v2.3 |
Added new keywords:
- FilePath - the initial backslash plus all directories
and their slashes
- FileName - the file name minus the extension
- FileExtension - the file extension
- RandomNumber - generates a random number between 0 and
999,999 (inclusive)
Added sort options:
- By adding "|SortBy=" and then another FormatString
to the primary PlaylistString you can cause that entry to
be sorted by the SortBy format string. By default, without
the SortBy clause, files are sorted by their full path and
name (the default is settable by the /SortString option).
Added command-line options:
- /CommentPlaylists - output comments in the playlist files
- /IgnoreID3v1 - ignore ID3 v1 tags
- /IgnoreID3v2 - ignore ID3 v2 tags
- /PreferID3v1 - use ID3 v1 tags over v2 tags (default is
v2 over v1 tags)
- /UnknownString=string - alternate string to use for unknown
values
Default: (Unknown)
- /SortString=format_string - default M3U sort (SortString
may contain any character or FormatVariable)
Default: |Dir0:\|FilePath|FileName.|FileExtension
Fixed bug with large frames in ID3v2.3 tags (was fine for
ID3v2-2 and ID3v2-4)
|
| v2.2 |
Fixed duplicate removal bug. (duplicate MP3s in each M3U
are now correctly removed)
/ignoreunknowns option added
Added Dir# keywords
Added MultiGenre# keywords
Added ConfigFiles support (since ID3Browse command-lines are
getting painfully long).
Changed how multiple-genres are handled - no longer
automatic - must use MultiGenre
Changed SmartArtist to ONLY change "The Artist"
to "Artist, The". ("Last, First"
re-arranging was only right 1/2 the time)
|
| v2.1b2 |
Added the /maxplaylistsize option
Fixed bug with trailing spaces in directory names
|
| v2.1b |
Added command-line option: /allowbackslashes
Added automatic support for multiple Genres (in ID2v3+ tags)
|
| v2.0 (final) |
Removed the restriction on what ID3v2 Tags you can
use as keywords - Non text tags have the text values: "Unsupported
FrameID='XXXX'" or "FrameID 'XXXX' not present".
Added a little special support for the APIC ID3v2 tag (embedded
pictures) - breaks them out by encoding type (JPG, GIF, BMP,
etc...) and Picture type. |
| v2.0b1 |
Broke backward compatibility with v1.x command-line
options
New, much more flexible, FormatString mechanism: playlist
string
/readonly /verbose /tagreport options added
Can now have more than one ScanDir
Improved reporting and to-screen output.
Extended characters, such as umlauts, are now preserved.
|
| v1.3b |
Fixed bug when Track name and Album name were the
same |
| v1.2 |
Improved robustness with illegal tags
Added ID3 v2.2 tag support
Added more detailed reporting
Added more detailed Errors
Added Read-Only mode (scan MP3s, report, but do nothing)
Modified the meaning of the ':' format option for Numbers |
| v1.1 |
Added SmartArtist, NumTracks, and TrackNum keywords
Fixed directory scan bug that would sometimes add Dupes |
| v1.0 |
Initial release |
|