SkimID3 ver. 1.10 documentation

Česká verze

Short description

SkimID3.EXE is Win32 console utility which reads metainformation from sound files in formats MP3, Ogg, WMA, ASF, WAV. Information is written on standard output in the format AttributeName=Attribute value. Output format changes to SET AttributeName=Attribute value when parameter /S (alias /SET) is used. Complete list of attributes is in the table below.

License

This program is freeware and may be used and redistributed without any fee by anybody. For the latest version see vit$oft freeware web page. Bugs may be reported by email.

Installation

SkimID3 needs no installation. Just put the executable to any directory in your PATH.

Syntax

Inspected filename is given as command line parameter and must be enclosed in double quotes if it contains spaces. Wildcard characters ? * are not allowed in the filename.

When a parameter /D or /DC is given instead of file name, SkimID3 creates HTML documentation file SkimID3.HTM (English) or SkimID3C.HTM (Czech) in the current directory.

Parameter /S (or /Set) tells SkimID3 to prefix each output line with the command SET. This allows to set metainformation into environment variables in W9x batches.

Parameter /W (or /Wait) makes SkimID3 to wait until a key Enter is pressed. This prevents the console window from quickly disapearing when SkimID3 is invoked from Explorer or from Start/Run dialog.

Output format

Each piece of metainformation is output on a new line. Attribute name is immediately followed with equal sign, value of attribute is not embedded in quotes even if it contains white spaces. This format is convenient for setting into environment variables, see examples below.

Attribute values may contain characters which are unacceptable in SET command, SkimID3 replaces such "dangerous" characters " % & < > ^ | with undescore _. National non-ASCII characters are converted to OEM encoding using the codepage of current user.

Errorlevel

0 ... information retrieved successfully

4 ... unsupported file format

8 ... file was not found

12 ... otherwise

Sound file attributes

Encoding properties

Sound file format, which is recognized from internal structure rather than from filename extension, is presented as attribute FORM=.

Attribute CHAN= shows the number of channels in sound file. Typical cases of 1 or 2 channels are replaced with identifiers Mono or Stereo. MP3 stereo files may also be encoded as Joint or Dual.

Both attributes SECS= and MINS= display the same duration. SECS= is better computable, MINS= is better readable.

VERS=, RATE and SAMP= inform about digitalization parameters.

Standardized content descriptors

Sound files may contain additional information about "software content" such as song title, singer name etc. Unlike encoding attributes, this metainformation is not always necessarily present and its form depends on sound file format:

SkimID3 uses ID3v2 names to unify the output of attributes with the same meaning: TALB= for the album name, TIT2= for song title, TPE1= for the artist name, TCON= for music genre, TRCK= for the track number, TYER= for the year of release, TCOP= for WMA copyright information and COMM= for the comment (description).

Other attributes

If sound file contains any other attribute, it is displayed as is, for instance WM/Composer=.

If the MP3 file contains both ID3v1 and ID3v2 attributes with the same meaning, ID3v2 is prefered.

As the last resort, some atrtibutes may be taken from filesystem: If the file does not contain Title, Album, Year attribute, TIT2= is set to file name without extension, TALB= is set to directory name and TYER= is set according to file date.

Alphabetical list of SkimID3 attributes

Tag Format MP3Format OggFormat WMA/ASFFormat WAV
CHAN=Number of channels or Mono/Stereo/Joint/Dual
COMM=CommentDescriptionDescription
CPRT=Copyrighted Yes/No
FORM=MP3OggWMA WAV
MINS=Duration in minutes:seconds
ORIG=Original media Yes/No
RATE=Average bitrate in bps
SAMP=Sampling frequency in Hz
SECS=Duration in seconds
TALB=AlbumAlbum
TCON=GenreIDGenreWM/Genre
TCOP=Copyright
TIT2=TitleTitleWM/Title
TPE1=ArtistArtistWM/AlbumArtist
TRCK=TrackTrackNumberWM/TrackNumber
TYER=YearDateWM/Year
VERS=MPEGxLAYERyVorbis version NrWAV encoding format Nr

Examples

Interactive usage

Open the Console Window (DOS Prompt), change to the directory with sound files and write SkimID3 followed with the sound file name. Example:

C:\>SkimID3 %SystemRoot%\Media\tada.wav
FORM=WAV
VERS=1
CHAN=Stereo
SAMP=22050
RATE=705600
SECS=1
MINS=0:01
TIT2=tada
TALB=Media
TYER=2001

Following registry entries will add a new item called SkimID3 to the Explorer context menu. Copy and paste it to a file SkimID3.REG and import with REGEDIT SkimID3.REG. Then when you right-click a sound file in Explorer, you'll be able to inspect its properties with the new option SkimID3.

REGEDIT4

[HKEY_CLASSES_ROOT\SoundFile]
[HKEY_CLASSES_ROOT\SoundFile\shell]
[HKEY_CLASSES_ROOT\SoundFile\shell\Play]
@="&Play"
[HKEY_CLASSES_ROOT\SoundFile\shell\Play\command]
@="MPlay32 /Play /Close \"%L\""
[HKEY_CLASSES_ROOT\SoundFile\shell\SkimID3]
@="Skim&ID3"
[HKEY_CLASSES_ROOT\SoundFile\shell\SkimID3\command]
@="SkimID3 /Wait \"%L\""
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.mp3]
"ProgId"="SoundFile"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.wma]
"ProgId"="SoundFile"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ogg]
"ProgId"="SoundFile"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.wav]
"ProgId"="SoundFile"

Script usage

Although SkimID3 can be used interactively, its main destination are batch scripts. With the /Set parameter, the output can be redirected to a temporary batch file and the batch file immediately called. This puts the metainformation into environment variables.

SkimID3 /Set "C:\MUSIC\Rock\The Free Story\Heavy Load.mp3" >BATCH.BAT
CALL BATCH.BAT
ECHO ID3 tags are now in environment variables:
SET

In NT-based Windows there is an easier way how to put the info into variables. Following examples are targeted to Win2K/XP:

FOR /F "tokens=*" %%* IN ('SkimID3 "Smile Of The Beyond.mp3"') DO SET %%*
ECHO ID3 tags are now in environment variables:
SET

Example 1: Create a playlist from all Beatles songs

SkimID3 is called for each MP3 file in the current directory and its subdirectories as returned from DIR /S /B *.MP3. The output is redirected to the FIND command which searches for the desired word "Beatles" and, if found, the filename is appended to the playlist. Ogg and WMA sound files are treated exactly the same way.

@ECHO OFF
FOR /F "tokens=*" %%* IN ('DIR /S /B *.MP3') DO SkimID3 "%%*"|FIND "Beatles"&&ECHO %%*>>Beatles.m3u
FOR /F "tokens=*" %%* IN ('DIR /S /B *.Ogg') DO SkimID3 "%%*"|FIND "Beatles"&&ECHO %%*>>Beatles.m3u
FOR /F "tokens=*" %%* IN ('DIR /S /B *.WMA') DO SkimID3 "%%*"|FIND "Beatles"&&ECHO %%*>>Beatles.m3u

Example 2: Sift out short songs

This script will inspect duration of MP3 files in "C:\Music\Mix" directory and move all songs shorter than 60 seconds to "C:\Music\Trash" directory.

@ECHO OFF
MD "C:\Music\Trash"
FOR /F "tokens=*" %%* IN ('DIR /S /B "C:\Music\Mix\*.MP3"') DO CALL :JOB "%%*"
GOTO :EOF
:JOB
 FOR /F "tokens=*" %%* IN ('SkimID3 /S %1') DO %%*
 ECHO Duration of %1 is %MINS%
 IF %SECS% LEQ 60 MOVE %1 "C:\Music\Trash" & ECHO Moved to Trash.
 GOTO :EOF

Example 3: Talking Player

Being bored with local radio stations I wrote this batch and scheduled it to wake me up every morning. It randomly selects songs from my computer, calls SkimID3 to get info about the music and anounces each song with synthetic voice. A fine software ReadPlease2003 from www.readplease.com is employed as a narrator. The limited freeware version is sufficient for our purpose. After installation, ReadPlease2003 associates with file extenstion .rpps and the following batch submits anouncements using the command START file.rpps. Then the processing is paused with SLEEP utility until narrator chatters everything out.

 @ECHO OFF & TITLE Talking MP3 player
  IF "%CMDEXTVERSION%"=="2" GOTO :CmdOK
  ECHO This script is intended for WindowsXP/2000 only.
  GOTO :EOF
:CmdOK
  IF EXIST %TEMP%\PLAYLIST.M3U GOTO :UseOldList
  ECHO As this is the first time talking player is running,
  ECHO please wait until a total MP3 playlist is built.
  FOR %%d IN (C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO (
   FSUTIL fsinfo drivetype %%d:|FIND "disk"&&DIR /B /S %%d:\*.MP3 %%d:\*.WMA >>%TEMP%\PLAYLIST.M3U
  )
:UseOldList
  ECHO Hi.>%TEMP%\INTRO.rpps & START %TEMP%\INTRO.rpps
  SLEEP 2 &:: This will start ReadPlease2003.exe if properly installed.
  ECHO This is %COMPUTERNAME% talking player.>>%TEMP%\INTRO.rpps
  START %TEMP%\INTRO.rpps
  SLEEP 6 &:: Give it some time to announce the intro.
  FOR /F "tokens=3" %%* IN ('FIND /C /V "" %TEMP%\PLAYLIST.M3U') DO SET TOTAL_SONGS=%%*
  ECHO Talking player has found %TOTAL_SONGS% songs
  ECHO on %COMPUTERNAME% computer to choose from.
  IF %TOTAL_SONGS% EQU 0 GOTO :EOF
  :: Here we set how many songs will play in one session.
  SET REMAINING_SONGS=10
:PlayASong - randomly draw one line from playlist.
  SET /A NUM=%RANDOM% %% %TOTAL_SONGS%
  SET FULLNAME=&:: Now read the line Nr. %NUM% from playlist:
  FOR /F "tokens=* skip=%NUM%" %%* IN (%TEMP%\PLAYLIST.M3U) DO SET FULLNAME="%%*"&GOTO :Chosen
:Chosen
  ECHO Chosen song Nr.%NUM%: %FULLNAME%
  SET TCON=&SET TYER=&SET TIT2=&SET TPE1=&SET TALB=
  FOR /F "tokens=*" %%* IN ('SkimID3 %FULLNAME%') DO SET %%*
  TITLE %FULLNAME%
 (ECHO:
  IF NOT "%TCON%"=="" ECHO Now we are going to play some %TCON% music
  IF NOT "%TYER%"=="" ECHO from the year %TYER%.
  IF NOT "%TIT2%"=="" ECHO We will play a song called - "%TIT2%"
  IF NOT "%TPE1%"=="" ECHO - by "%TPE1%"
  IF NOT "%TALB%"=="" ECHO - from the album - "%TALB%".
 )>%TEMP%\PROLOG.rpps
  START %TEMP%\PROLOG.rpps & SLEEP 14
  :: Old version 5 of MediaPlayer is preferred because it is
  :: well behaved and shutdowns itself when the song is over.
  MPLAY32 /Play /Close %FULLNAME%
 (ECHO:
  IF NOT "%TIT2%"=="" ECHO You were listening to the song called - "%TIT2%"
  IF NOT "%TPE1%"=="" ECHO - by "%TPE1%"
  IF NOT "%TALB%"=="" ECHO - from the album - "%TALB%".
 )>%TEMP%\EPILOG.rpps
  START %TEMP%\EPILOG.rpps & SLEEP 6
  SET /A REMAINING_SONGS=%REMAINING_SONGS% - 1
  IF %REMAINING_SONGS% GTR 0 GOTO :PlayASong
  TITLE Talking MP3 player
  ECHO Talking player is now over. Good bye. >%TEMP%\OUTRO.rpps
  START %TEMP%\OUTRO.rpps & SLEEP 8 & TSKILL "ReadPlease2003"