Dokumentace programu SkimID3 ver. 1.10

English version

Stručný popis

SkimID3.EXE je konsolová utilita pro MS Windows, která zobrazuje metainformace (atributy) ze zvukových souborů ve formátech MP3, Ogg, WMA, ASF, WAV. Informace jsou vypisovány na standardní výstup ve tvaru NázevAtributu=Obsah atributu. Při použití parametru /S (alias /SET) se výstupní tvar změní na SET NázevAtributu=Obsah atributu. Seznam všech atributů je v níže uvedené tabulce.

Licence

Tento program je freeware a smí být bezplatně používán a šířen kýmkoli. Poslední verze hledejte na webu vit$oft freeware. Případná upozornění na chyby můžete posílat emailem.

Instalace

Program se nijak neinstaluje, pouze zkopírujte SkimID3.EXE do některého adresáře v PATH.

Syntaxe

Název vyšetřovaného souboru se zadává jako parametr příkazové řádky. Pokud obsahuje mezery, musí být uveden v uvozovkách. Zástupné znaky ? * nelze použít.

Po zadání parametru /DC nebo /D se vytvoří v aktuálním adresáři soubor s touto dokumentací SkimID3C.HTM (česky) nebo SkimID3.HTM (anglicky).

Parametr /S (neboli /Set) způsobí, že před každý atribut bude přidán povel SET, což usnadní nastavování těchto dat do systémových proměnných v prostředí Windows9x.

Přidání parameteru /W (neboli /Wait) způsobí, že SkimID3 po vypsání informace počká na stisk klávesy Enter. Při spouštění SkimID3 z Průzkumníka nebo dialogu Start/Spustit pak nedojde k uzavření konsoly dříve, než jsme stačili zobrazené informace vzít na vědomí.

Výstupní formát

Každá položka je vypsána na novém řádku. Jméno atributu je následováno rovnítkem, za kterým je vypsán obsah položky bez uvozovek. V sekci Příklady je uvedeno, jak dostat položky do proměnných prostředí a využít je v dávkových souborech.

Atributy mohou obsahovat znaky, které nejsou syntakticky přípustné v povelu SET. Tyto "nebezpečné" znaky " % & < > ^ | jsou proto nahrazovány podtržítkem _. Znaky obsahující diakritiku jsou převedeny na kódování OEM podle národního prostředí přihlášeného uživatele, tj. obvykle do PC Latin2.

Návratová hodnota (errorlevel)

0 ... informace byly zobrazeny

4 ... neznámý formát souboru

8 ... soubor nebyl nalezen

12 ... ostatní případy

Přehled atributů

Atributy kódování

Formát zvukového souboru (MP3, Ogg, WMA, WAV) se nerozpoznává z přípony, ale z vnitřní struktury souboru, a je obsahem atributu FORM=.

Atribut CHAN= ukazuje počet samostatných zvukových kanálů v souboru. Místo obvyklých hodnot 1 nebo 2 se vypisují slovní identifikátory Mono nebo Stereo. Stereofonní MP3 soubory mohou být také kódovány jako Joint nebo Dual.

Atributy SECS= a MINS= zobrazují tutéž veličinu: trvání zvukového souboru. SECS= je příhodnější pro následné výpočty, formát MINS= je zase lépe čitelný.

Atributy VERS=, RATE a SAMP= popisují kvalitu digitalizace zvuku.

Standardizované atributy hudebního obsahu

Zvukové soubory mohou obsahovat přídavné informace o "softwarovém obsahu", jako název skladby, jméno interpreta apod. Na rozdíl od kódovacích atributů však nejsou tato data automaticky uložena ve zvukovém formátu, ledaže byla uživatelem explicitně zadána. Rozsah těchto atributů je omezen použitým zvukovým formátem:

SkimID3 využívá názvy atributů ID3 verze 2 pro sjednocení nejčastěji uváděných položek s obdobným významem: TALB= pro název alba (LP nebo CD), TIT2= pro název skladby, TPE1= pro jméno umělce (interpreta), TCON= pro hudební žánr, TRCK= pro pořadové číslo skladby v rámci alba, TYER= pro rok vydání, TCOP= pro informace o autorských právech a COMM= pro komentář.

Ostatní atributy

Pokud zvukový soubor obsahuje dodatečné atributy mimo výše uvedených, jsou doslovně vypsány, kupříkladu WM/Composer=.

Obsahuje-li MP3 soubor ekvivalentní atributy v ID3 formátech obou verzí 1 i 2, je preferován obsah atributu verze 2.

Jako poslední možnost mohou být některé atributy získány z vlastností souboru: není-li v souboru definován název skladby, alba či rok vydání, nastaví se TIT2= podle jména souboru bez přípony, TALB= podle jména nadřazeného adresáře a TYER= podle data vytvoření souboru.

Abecedně řazený seznam atributů

AtributFormát MP3Formát OggFormát WMA/ASFFormát WAV
CHAN=Počet kanálů nebo Mono/Stereo/Joint/Dual
COMM=CommentDescriptionDescription
CPRT=Copyrighted Yes/No
FORM=MP3OggWMAWAV
MINS=Trvání skladby ve formátu minuty:sekundy
ORIG=Original media Yes/No
RATE=Střední datový tok v bitech/s
SAMP=Vzorkovací kmitočet v Hz
SECS=Trvání skladby v sekundách
TALB=AlbumAlbum
TCON=GenreIDGenreWM/Genre
TCOP=Copyright
TIT2=TitleTitleWM/Title
TPE1=ArtistArtistWM/AlbumArtist
TRCK=TrackTrackNumberWM/TrackNumber
TYER=YearDateWM/Year
VERS=MPEGxLAYERyVerze enkodéru VorbisTypové číslo kódování WAV

Příklady

Interaktivní použití

Otevřte Příkazový řádek (DOS Prompt), přejděte do adresáře se zvukovými soubory a zadejte SkimID3 následované názvem souboru, např.:

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

Spouštění SkimID3 lze zařadit do kontextové nabídky Průzkumníka. Uložte následující text do souboru SkimID3.REG a importujte jej do registru Windows povelem REGEDIT SkimID3.REG. Pokud nyní klepnete pravým tlačítkem myši na zvukovém souboru, měla by přibýt nová nabídka SkimID3 pro rychlé zobrazení jeho atributů.

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"

Použití ve skriptech

SkimID3 je určen především do dávkových souborů. Jeho výstup lze přesměrovat do souboru a v případě uvedení parametru /Set takto vytvořený dávkový soubor ihned spustit a přenést tak metainformace do systémových (environment) proměnných.

SkimID3 /Set "C:\MUSIC\Rock\The Free Story\Heavy Load.mp3" >BATCH.BAT
CALL BATCH.BAT
ECHO Systémové proměnné byly nastaveny:
SET

V MS Windows řady NT lze nastavovat systémové proměnné ještě elegantněji. Následující příklady jsou určeny pro WindowsNT/2K/XP:

FOR /F "tokens=*" %%* IN ('SkimID3 "Smile Of The Beyond.mp3"') DO SET %%*
ECHO Systémové proměnné byly nastaveny:
SET

Příklad 1: Vytvoření playlistu ze všech skladeb Beatles

Povel DIR /S /B *.MP3 postupně vypisuje názvy všech souborů MP3 v aktuálním a podřízených adresářích. Na každý soubor je zavolán SkimID3 a jeho výstup je přesměrován do utility FIND. Pokud je výsledek pozitivní, tj. FIND našel v metainformacích slovo "Beatles", název souboru bude připsán do playlistu. Pak jsou obdobně zpracovány ještě soubory Ogg a WMA.

@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

Příklad 2: Vymýtit příliš krátké skladby

Následující ukázka vyšetřuje trvání MP3 skladeb v adresáři "C:\Music\Mix" a soubory kratší než 60 sekund přemístí do adresáře "C:\Music\Trash".

@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 Skladba %1 trvá %MINS%
 IF %SECS% LEQ 60 MOVE %1 "C:\Music\Trash" & ECHO Přesunuta do složky Trash.
 GOTO :EOF

Příklad 3: Mluvící přehrávač

Následující dávkový soubor funguje jako náhrada hudebního rádia: náhodně vybírá skladby uložené v počítači, z ID3 tagů zjistí informace o souboru a syntetickým hlasem ohlašuje, kdo bude hrát a zpívat. Jako řečový syntetizátor je použit kvalitní software ReadPlease2003 volně dostupný na www.readplease.com. Zcela vyhoví jeho bezplatná volně šířitelná verze, bohužel ale umí vyslovovat pouze anglický text. Při instalaci se ReadPlease2003 asociuje se souborovou příponou .rpps, takže pro přečtení textového souboru stačí povel START file.rpps následovaný několikasekundovou pauzou pomocí utility SLEEP.

 @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"