1
2mp3riot User Manual
3
4Dec 29, 2004
5
6
7-----------------------------------------------------------------------------
8
9If you want to test a program, then run it on a sample data set!
10Do not thing, that anything will work correctly!
11
12-----------------------------------------------------------------------------
13
14CONTENTS
15
16About This Program
17Usage
18Requirements
19Installation
20Problems under Windows and Dos
21Examples
22Changing html layout
23Html templates
24Release History
25Contacting the Author
26ToDo
27
28-----------------------------------------------------------------------------
29
30About This Program
31
32mp3riot is a command line utility written in perl to generate html files by
33searching recoursivly through directories.
34
35With the program some additional files are delivered:
36  - Copyright: the gnu public licence
37  - utf.dat: a file containing utf code to correct links
38  - example.unix: an example config file for unix
39  - example.win: an example config file for windows
40  - repl.dat: an example file for replacements (for windows users)
41  - Info.pm: the perl module MP3::Info is written by Chris Nandor
42  - MANUAL: this file
43  - mp3table.sql: file containing the sql skeletton
44  - group.dat: an exsample file for grouping
45
46Bugs: Doubtless many. Feel free to contact the author, but remember:
47      I do not promise anything.
48      f2html@linuxsecure.de
49
50Disclaimer: - I do not support Perl, html, or any OS
51            - I do not promise that this program does anything
52            - this program may distroy all your data
53            - I cannot promise that this program will not distroy
54              all human civilization
55
56-----------------------------------------------------------------------------
57
58Usage
59
60	perl mp3riot [options]
61
62	-h, --help                  Show this screen and exit
63	-k, --mkconf                Use an assistant to write a config file
64        -o, --os       <value>      Default "unix", otherwise windows. Possible values are:
65				    win, unix
66	-Q, --sortby   <value>      Default is "NAME" (the filename). You can sort
67				    the fillist by the following criteria:
68				    URLNAME, SHOWNAME, DIR, NAME, TITLE, ARTIST,
69				    ALBUM, YEAR, COMMENT, GENRE, TRACKNUM, SIZE,
70        			    MODTIME, VBR, BITRATE, FREQUENCY, MINUTES,
71				    SECONDS, FIRSTCHAR
72	-n, --doublicates           Check for doublicates of files by their
73	                            filename
74	-D, --md5doublicates	    Check for doublicates of files by their
75				    MD5 sum
76        -V, --seekvalues <n,+-n,n>  Three values that have to be seperated by ",". This
77				    is an useful option for --md5doublicates.
78				    The first one is the offset in bytes, the second is
79				    the number of bytes to seek (and the direction), and
80				    the last value tells the program where to start from (1 means to
81				    start from the begining of a file, 2 means to start
82				    from the end of a file. So, a combination of 1000,-1128,2
83				    tells the programm to start 1128 bytes before the file ends
84				    (id3v1 tag is 128 bytes long!) and use
85				    1000 bytes for calculation of md5 sums.
86        -b, --dbfile   <file>       Write database to a file for searching it
87        -m, --m3u      <file>       Write a m3u playlist file. Directory and filename or
88				    "GROUPPATH" for writing m3u files for groups.
89        -X, --xml      <file>       Write a xml playlist file. Directory and filename or
90				    "GROUPPATH" for writing xml files for groups.
91        -L, --pls      <file>       Write a pls playlist file. Directory and filename or
92				    "GROUPPATH" for writing pls files for groups.
93	-W, --b4s      <file>	    Write a b4s playlist file. Directory and filename or
94				    "GROUPPATH" for writing b4s files for groups.
95        -t, --html     <file>       Write a html file. Directory and filename or
96				    "GROUPPATH" for writing m3u files for groups.
97        -a, --http     <name>       Define the http address for url
98        -r, --remove                Remove id3tags (do you know what you are doing?)
99        -i, --mp3info               Use mp3/ogg info for html output
100        -e, --ext                   Remove file extensions in html output
101        -f, --filesize              Use filesize for html output
102        -c, --check    <ext>        Select files by their extension(s) (e.g. mp3).
103				    For every extension use a seperate flag!
104        -z, --skip     <number>     Skip n elements of mount/directories/names
105        -p, --conf     <file>       Use a config file
106        -w, --utf8     <file>       File with UTF-8 code for replacements in links
107        -q, --nocs                  Do sorting not case sensitive
108        -j, --statfile <file>       Write statistics to file
109        -d, --dir      <directory>  Define the (multiple) directory(ies) the
110                                    mp3s are stored in. For every directory use a
111				    seperate flag!
112	-g, --sql      <file>       Filename to store sql table in (only for mp3 and ogg!)
113        -y, --replace  <file>       Name of replacement file; in the file use
114                                    <string_1>=<string_2> to transform <string_1>
115                                    into <string_2>; special characters like a
116                                    backslash have to be preceeded by a
117                                    backslash "\\" (used for directories)
118        -s, --seperate <path>       Write seperate html files for every
119                                    character
120	-R, --rename                Renames mp3 and ogg file using their id3tag.
121				    The use of rename_template in the configfile
122				    is optional. If rename_template is not used,
123				    the program tries to create a filename like:
124				    ARTIST - ALBUM - TRACKNUMBER - TITLE by using
125				    the id3tag. It assumes, that the filenames have
126				    a similar format and tries to guess, whether the
127				    id3tag has enough information to create a better
128				    filename. Old and new filenames are stored in
129				    RENAME.bak
130	-B, --renameback	    Renames files back using the file RENAME.bak
131	-T, --templates             Html templates are used. They have to be defined
132                                    in the conmfig file using the commands html_head,
133				    html_change, html_body, html_footer, html_sep_head.
134				    See the README for avalable templates!
135	-G, --groupfile <file>      Filename for grouping information:
136	                            <groupname1>=<TYPE>=<string1>,<string2>,...
137				    Prossible types are: NAME, DIR, TITLE, ARTIST,
138				    ALBUM, YEAR, COMMENT, GENRE, TRACKNUM, SIZE, MODTIME,
139				    VBR, BITRATE, FREQUENCY, MM, SS, EQUAL, FIRSTCHAR
140	-P, --grouppath <path>      The path, where to write the html, m3u, xml, b4s, and pls
141				    files for groups
142        -O, --older     <number>    Only files are selected, having a modification time
143				    higher than the specified days
144	-Y, --younger   <number>    Only files are selected, having a modification time
145				    less than the specified days
146	-I, --id3tag                Use the id3 tag to get infos
147	-S, --random    <number>    Percentage of file to select randomly (e.g. 50 to select
148				    50% of files/every second file)
149
150        Additionally, in the config file it is possible to use the commands:
151        exec=           <param>     Execute system command. This command can be used multiple
152				    times
153
154	rename_template=<string>    string with templates for renaming files by their id3tag
155				    (to be used together with --rename)
156
157	The following rename templates are available:
158	**TITLE**, **ARTIST**, **ALBUM**, **YEAR**, **COMMENT**, **GENRE**. **TRACKNUM**
159
160	html_head=      <string>     Html code for the head
161	html_change=    <string>     Html code if the first character between two file names
162	                             change
163	html_body=      <string>     Html code for each filename
164	html_footer=    <string>     Html code for the foot.
165	html_sep_head=  <string>     Html code for the head seperate html files by first character
166
167	The following html templates are available:
168	**SUMOFFILES**, **SUMOFMEGS**, **DATE**, **URLNAME**, **SHOWNAME**, **DIR**, **NAME**,
169	**TITLE**, **ARTIST**, **ALBUM**, **YEAR**, **COMMENT**, **GENRE**, **TRACKNUM**, **SIZE**,
170	**MODTIME**, **VBR**, **BITRATE**, **FREQUENCY**, **MINUTES**, **SECONDS**, **HTMLINDEX**,
171	**FIRSTCHAR**
172
173-----------------------------------------------------------------------------
174
175Requirements
176
177
178mp3riot runs under all systems where perl is installed. The program was
179tested und Windows 2000 and Linux.
180
181You can download perl from http://www.perl.org
182
183
184Furthermore the skript needs two perl modules. (1) getopt that is normally
185part of every perl distributuion, and (2) Mp3Info. You can download Mp3Info
186from http://search.cpan.org. But a version is also delivered with f2html.pl.
187Under Unix systems like linux you can use the installation skripts. Or it
188can be copied into a folder like "/usr/lib/perl5/site_perl/5.8.1/MP3".
189Under Windows the perl module "Info.pm" has to be copied to the perl
190libary directory: "path were perl is installed"\lib\. There you have to
191create a directory called MP3. Into this directory you have to copy the
192file Info.pm.
193
194
195-----------------------------------------------------------------------------
196
197Installation
198
199mp3riot does not need to be installed. Just copy it to a directory and
200execute it from this directory, or copy to a directory and set the
201PATH variable.
202
203
204-----------------------------------------------------------------------------
205
206Problems under Windows and Dos
207
208The shell under Windows is limited to 256 characters. So sometimes it is not
209possible to define all option wanted. Therefor I inplemented the option to
210use a config file, in that all parameters can be written.
211
212
213-----------------------------------------------------------------------------
214
215Examples
216
217If you want to create a custom config file, then execute
218
219  perl mp3riot -k
220
221If you want to use a configfile, just type
222
223  perl mp3riot -p file.conf
224
225where file.conf is your configfile.
226
227With the command line
228
229  perl mp3riot -d /home/nikolei/download1 -d /home/nikolei/download2
230                 -o unix -t /home/nikolei/content.html
231
232the script searches recursively through the two directories defined by
233"-d", builds a file list, sorts this filelist alphabetically by the filename,
234not by the name of the directory they are stored in, and writes the list to
235a html file defined by "-t". The options "-b"  and "-m" can be used
236additionally or instead of "-t" to write a database file, that can be
237used by the script mp3search.pl, or to create a playlist.
238
239With the command line
240
241  perl mp3riot -d /home/nikolei/download1 -d /home/nikolei/download2
242                 -o unix -s /home/nikolei
243
244the script does nearly the same as before. The difference is, that a
245seperate html file for every different first character of the file names
246is written into the directory defined by "-s". For example, the following
247files could be created:
248
249  /home/nikolei/1.html
250  /home/nikolei/a.html
251  /home/nikolei/b.html
252  /home/nikolei/t.html
253
254where "1.html" contains a list of all files beginning with a "1",
255"a" contains all files beginning with an "a" (for example aa.dat,
256ab.dat, ac.dat ...), and so on.
257
258
259With the command line
260
261  perl mp3riot -d /home/nikolei/download1 -o unix -c mp3 -c MP3
262                 -t /home/nikolei/content.html
263
264the script writes out a html file, but uses not all files it has found, but
265only files that have the suffix "mp3" or "MP3".
266
267With the command line
268
269  perl mp3riot -d /home/nikolei/download1 -o unix -i -f -e
270                 -t /home/nikolei/content.html
271
272the script writes out a html file. For this html file it uses additional
273information, if the file is a mp3 file (the "-i" option), i.e. the length
274of the track, the bitrate, the frequency, and if it is variable encoded.
275Defining "-f" option, the html file contains the size of each file, and
276given the "-e" option the file suffix is deleted in the html file.
277
278Using additionally the "-I" flags enables the use of the id3tag.
279
280  perl mp3riot -d /home/nikolei/download1 -o unix -i -f -e -I
281                 -t /home/nikolei/content.html
282
283The id3tag information is used for sql output and can be used for
284html output with templates.
285
286
287With the command line
288
289  perl mp3riot -d /home/nikolei/download1 -w /home/nikolei/utf8.dat
290                 -o unix -t /home/nikolei/content.html
291
292the script writes out a html file, and corrects special characters
293by changing them to their utf-8 code. Simply define a file where the utf-8 code
294is stored in by using option "-w". The file containing the utf-8 code for
295replacements must have the following form:
296
297  � %C0
298  � %E0
299  � %C1
300
301Thuch a substitution might be necessary, because you cannot download files
302containing special characters in their file name. Using such a utf-8 file the
303name of a link will be replaced so that a file is downloadable. For example:
304
305  <a href="�namal�.mp3">�namal�.mp3</a>
306
307becomes
308
309  <a href="%C0namal%E0.mp3">�namal�.mp3</a>
310
311With the command line
312
313  perl mp3riot -d /home/nikolei/download1 -y /home/nikolei/repl.dat
314                 -o unix -t /home/nikolei/content.html
315
316the script writes out a html file, and corrects special patterns in the
317link, if option "-y" is used. The patterns and their substitution have to be
318stored in a file. The option can be used for path name substitution. Windows
319user have to be aware of using two backslashes instead of one! For example,
320the file repl.dat contains the following replacement table:
321
322  c:\\music\\good=/mp3c
323  c:\\music\\bad=/mp3d
324
325Then the pathname for a file stored in the directory c:\music\good will be
326corrected to /mp3c. This option is usefull if you want to setup a webserver
327for your files. Note that both strings are seperated by ------>. There are no
328spaces before or after any string!
329
330With the command line
331
332  perl mp3riot -d /home/nikolei/download1 -a http://www.yourdomain.net
333                 -o unix -t /home/nikolei/content.html
334
335the sript writes out a html file and uses a http address for the links.
336It might be necessary do use this option together with option "-z"!
337
338With the command line
339
340  perl mp3riot -d /home/nikolei/download1 -z 2
341                 -o unix -t /home/nikolei/content.html
342
343the sript writes out a html file, and skips the first 2 directories when
344writing the link. For exmaple
345
346  <a href="/home/nikolei/download1/name.mp3">name.mp3</a>
347
348becomes
349
350  <a href="/download1/name.mp3">name.mp3</a>
351
352This option is usedful if you have stored your file in subdirectory of
353the path where your homepage is stored in and if you want to put the files
354for download into the net. It might also be useful for samba/windows shares etc.
355
356Given the option -q in the commandline, the program does not work case
357sensitive any more. For example, it groups lower case and upper case
358characters of the same type together. So "a" and "A" are the same.
359
360The command line
361
362  perl mp3riot -d /home/nikolei/download1 -q
363                 -o unix -t /home/nikolei/content.html
364                 -j /home/nikolei/statistics.html
365
366forces the program to do the sorting ertc. not case sensitive (-q option)
367and to write a statistics html file to /home/nikolei/statistics.html. The
368other things are done on the same way as for the command line before
369
370You can sort the collected file not only by their filename (default), but you can
371use mp3- or tag-infos as a sorting criteria. For example:
372
373  perl mp3riot -d /home/nikolei/download1 --sortby DIR
374                 -o unix -t /home/nikolei/content.html
375                 -j /home/nikolei/statistics.html
376
377sort all files by the name of the directory they are stored in. The are other possible
378criteria like URLNAME, SHOWNAME, DIR, NAME, TITLE, ARTIST, ALBUM, YEAR, COMMENT, GENRE, TRACKNUM, SIZE,
379MODTIME, VBR, BITRATE, FREQUENCY, MINUTES, SECONDS, FIRSTCHAR.
380
381
382To write a sql data file just type
383
384  perl mp3riot -d /home/nikolei/download -o unix
385               -g /home/nikolei/sqldata.sql
386
387Only files that end with "mp3" or "MP3" make their way into the database file!
388The sql data consists of the following mp3 file information: file name, song title,
389artist, album, year, comment, genre, directory, filezize, modification time,
390vbr, bitrate, frequency, minutes, and seconds.
391
392If you want to check for dublicates of you files you can add the dublicates option
393(-n) to you command and the filenames that exist more than one time are
394listed on stdout.
395
396  perl mp3riot -d /home/nikolei/downlod1 -o unix -n
397                 -g /home/nikolei/sqldata.sql
398
399
400You can try to find dublicate files based on their content.
401
402The statement
403
404  perl mp3riot -d /home/nikolei/download -o unix -D
405		-V 1000,-1128-2
406
407tells mp3riot to search for dublicate files in /home/nikolei/download using md5sums.
408The calculation of md5sums is restricted to a small part of the file. Here, the program
409uses only 1000 bytes. The 1000 bytes are located 1128 bytes starting from the end of the file (2).
410So the last 128 bytes (size of an idv1 tag) are not used.
411
412
413The command line
414
415  perl mp3riot -d /home/nikolei/download1 -r -o unix
416
417simply removes every id3tag it finds.
418
419
420The command line
421
422  perl mp3riot -d /home/nikolei/download1 -o unix -m /home/nikolei/mp3.m3u -S 20
423
424creates a m3u playlist containing a random sample of 20% of all files of the
425folder /home/nikolei/download1.
426
427
428The command line
429
430  perl mp3riot -d /home/nikolei/download1 -o unix -X /home/nikolei/mp3.xml
431
432creates a xml playlist.
433
434
435The command line
436
437  perl mp3riot -d /home/nikolei/download1 -o unix -L /home/nikolei/mp3.pls
438
439creates a pls playlist.
440
441
442The command line
443
444  perl mp3riot -d /home/nikolei/download1 -R -o unix
445
446renames all files containing an id3tag (nomally mp3 and ogg files) by the conent of
447the tag in the form:
448
449  ARTIST - ALBUM - TRACKNUMBER - TITLE.mp3
450
451The information about what files have been renamed and how can be found in the
452file "RENAME.bak" in the mp3riot-directory. This file is used when you want to rename
453your files back, so that they get their original name. This option is  only useful for
454for renaming new files. It is not good to run it on files that have already a good
455naming shema or that already have been renamed.
456
457This can be done using the command line
458
459  perl mp3riot -d /home/nikolei/download1 -B -o unix
460
461
462In the config file you can use a template to rename files using the id3tag. you need the
463commands:
464
465rename
466rename_template=<string>
467
468<string can be any string and can be filled with the following templates:
469**TITLE**, **ARTIST**, **ALBUM**, **YEAR**, **COMMENT**, **GENRE**. **TRACKNUM**
470
471So one good choice for rename_template would be:
472
473rename_template=**ARTIST** - **ALBUM** - **TRACKNUM** - **TITLE**
474
475
476It has to be noted, that the options can be used together. For example
477
478  perl mp3riot -d /home/nikolei/download1 -d /home/nikolei/download2
479                 -o unix -q -g -i -l -f -e -R -n -z 3
480		 -y /home/nikolei/repl.dat
481		 -g /home/nikolei/mp3.sql -j /home/nikolei/stat.html
482                 -w /home/nikolei/utf.dat -c MP3 -c mp3
483                 -b /home/nikolei/content.db -m /home/nikolei/content.m3u
484                 -t /home/nikolei/content.html -a http://mydomain.net/music
485
486Because it is too much to write if you want to update the generated files
487more frequently, you can write everything into a config file. In the config
488file you can use the same option, but they have to be written in a slighly
489different way:
490
491  -d /home/nikolei/download1
492
493becomes
494
495  d=/home/nikolei/download1
496
497  or
498
499  dir=/home/nikolei/download1
500
501and so on. But be aware about that one or more spaces (e.g. at the end of the
502line) do also belong to the filename. So when you get an error message like
503"cannot open directory xxx" then it may be due to your rights reading this
504directory or because you used spaces in the definition of the directory.
505
506An additional option is available if you are using a config file:
507"x=". with this option, that you can use several times, it is possibles to
508make system calls. For example, if you want to copy the html file to an
509other directory, then just type:
510
511  x=copy /home/nikolei/content.html /home/nikolei/public_html/content.tml
512
513It might be also useful to write a seperate script (under dos a so called
514batch file). This file could execute the script mp3riot several times
515using different config files. This can be useful if you want to handle some
516directories in a different way.
517
518Or you can use the batch option to updaten or create you aql database:
519
520  x=mysql mp3 < sqldata.sql
521
522
523Fortunately, everybody is free to modify the html code within the script
524to adjust the output.
525
526
527If you want to use your own html code, then you can do this using the
528tamplates option. Because you have to fill some variables, it is best to
529use a confiug file for it. See the Html templates section for further
530details.
531
532You can select file not only by their extension, but also by their
533modification time. Yon can select files that are a specified number of day
534older ("-O") and/or younger ("-Y") than the current date. For example:
535
536  perl mp3riot -d /home/nikolei/download1 -q
537                 -o unix -t /home/nikolei/content.html
538		 -O 10
539		 -Y 20
540
541With this options, you can select files, that are older than 10 and younger
542than 20 days.
543
544Another useful option is grouping. For example, if you have some files
545beginning with the same string, and you want to build a seperate
546html file for them, you can do this by specifiing the in a groupfile.
547The syntax within the groupfile is:
548
549  <groupname1>=<TYPE>=<string1>,<string2>,...
550  <groupname2>=<TYPE>=<string1>,<string2>,...
551  end so on.
552
553<groupname1> is the name of the group 1. <TYPE> is the type of group.
554And <string1> is the first string in the group to search for.
555Possible values for type are:
556
557  NAME      : the name of the file
558  FIRSTCHAR : the first character of the filename
559  DIR       : the directory, where the file is stored in
560  TITLE     : the title of the song (using id3tag)
561  ARTIST    : the artist of the song (using id3tag)
562  ALBUM     : the album of the song (using id3tag)
563  YEAR      : the year of the song (using id3tag)
564  COMMENT   : the comment of the song (using id3tag)
565  GENRE     : the genre of the song (using id3tag)
566  SIZE      : the size of the file
567  MODTIME   : the modification time of the file (in non-leap seconds since January 1st, 1970 UTC)
568  VBR       : is 1, if the song is encodet with variable bitrate
569  BITRATE   : the bitrate of the song
570  FREQUENCY : the frequency of the song
571  MM        : song lentgh in minutes
572  SS        : song length in seconds
573  EQUAL     : special type, used to build groups automatically based on characteristis
574
575Fortunately, every group can have a different <TYPE>.
576
577For example, to put all songs from Red Hot Chili Peppers into one file,
578and the ones from New Model Army into another, create a group file
579like this:
580
581  Red Hot Chili Peppers=NAME=Red Hot Chili Peppers,Red_Hot_Chili_Peppers
582  New Model Army=NAME=New Model Army,New_Model_Army
583
584EQUAL is a special <TYPE>. It functions like an aggrigator. The left and
585the right statement (<groupname> and <string>) have to be <TYPES> (e.g. NAME,
586DIR, ...). Both should be the same, So that:
587
588 DIR=EQUAL=DIR
589
590will group together all file, that are stored in the same directory. The output
591file will then be named after the name of DIR.
592
593
594On the commandline, you can specify the groupfile using the "-G" option.
595Additionally, a path has to be specified, where to store the html files
596for the defined groups. This can ba done using the "-P" option.
597The names of the html files for the groups are then <groupname>.html.
598All other files, that do not match a group, are written into the
599normal file.
600
601  perl mp3riot -d /home/nikolei/download1 -q
602                 -o unix -t /home/nikolei/therest.html
603		 -G /home/nikolei/groupfile
604		 -p /home/nikolei
605
606The type EQUAL can be used to make a seperate html file for every different characteristic. For
607example, you can build a seperate html file for any single (atomic sub-) directory, that exists,
608by defining:
609
610DIR=EQUAL=DIR
611
612The html files are stored in the specified directory. To make html file for any genre, year or whatever,
613is straightforward.
614
615GENRE=EQUAL=GENRE
616
617or
618
619YEAR=EQUAL=YEAR
620
621All regular types can be used.
622
623
624-----------------------------------------------------------------------------
625
626Changing html layout
627
628If you want to change the layout of the htmloutput, you have to go directly
629into the code (although it is planned to make changing the htmlcode more
630flexible by using templates). The functions that contain html are:
631
632Writestatfile: here you can change the layout of the statistics file.
633
634Getmp3info: in this function layout is defined when using the command line
635            parameter "mp3info"
636
637Getogginfo: in this function layout is defined when using the command line
638            parameter "mp3info"
639
640Date: here the layout of the actual date is defined.
641
642Writehtml: here some layout of the html output can be changed.
643
644Htmlheader: here you can change the header for "Writehtml".
645
646Htmlfooter: here you can change the footer for "Writehtml".
647
648Htmlchange: here the html code is defined when the first character from
649            on file to the other changes.
650
651Htmlbody: here the htmlcode for writing each file is defined.
652
653Writesephtml: here seperate html files for every different first character
654              is written out.
655
656Sephtmlheader: here the header for "Writesephtml" is defined.
657
658
659
660-----------------------------------------------------------------------------
661
662Html templates
663
664Since version 1.0 it is possible to use html templates. Templates have to
665be activated usinf the "-T" oder "--templates" flag. Additionally, in the
666configuration file, variables with html code and templates have to be filled.
667
668There are four varibales to can fill with your own html code. These are:
669
670  html_head	: The header of an html file
671  html_sep_head : The header of a html file for seperated files by fist character
672  html_body	: the body, or simply, every song, file or record
673  html_change	: if the first character between two filenames change
674
675Templates are identified via keywords. Every keyword start with two asterics and
676also ends with two asterics. Please note, that not all templates are available
677for all variables! Implemeted templates are:
678
679  **SUMOFFILES** : Sum of files listed in html file
680  **SUMOFMEGS**  : Sum of megabytes of files listed in html file
681  **DATE**	 : Date of creation of html file
682  **URLNAME**	 : URL name of file (name within the <a href=...>-tag)
683  **SHOWNAME**   : The name that is shown  (name between the tag <a></a>
684  **DIR**	 : Directory where the file is located
685  **NAME**	 : Original name of the file
686  **TITLE**	 : Tile of the song (using id3-tag)
687  **ARTIST**	 : Artist of the song (using id3-tag)
688  **ALBUM**	 : Album of the song (using id3-tag)
689  **YEAR**	 : Year the album was released (using id3-tag)
690  **COMMENT**	 : Commentstring of the song (using id3-tag)
691  **GENRE**	 : Genre of the song (using id3-tag)
692  **SIZE**	 : Fize of the file in kilobytes
693  **MODTIME**	 : Modification time of the file in the fromat <year>-<month>-<day>
694  **VBR**	 : Indicator whether variable bitrate is used or not, if it is an
695 		   mp3 or ogg vorbis file
696  **BITRATE**	 : Bitrate, if it is an mp3 or ogg vorbis file
697  **FREQUENCY**  : Frequency of the file, if it is an mp3 or ogg vorbis file
698  **MINUTES**	 : Minutes, the song lasts, if it is an mp3 or ogg vorbis file
699  **SECONDS**	 : Seconds, the song lasts, if it is an mp3 or ogg vorbis file
700  **HTMLINDEX**  : Prints a linked index of fist chararacters for html output
701  **FIRSTCHAR**  : The first character of the filename
702
703For example, in order to get exactly the same result for html output as
704the program gernerates by default, you can define the following varibales:
705
706  html_head=<html><body>**HTMLINDEX**<br>
707  html_change=<P><A HREF="#top">back to top</A></P><P><A NAME="**FIRSTCHAR**">**FIRSTCHAR**</A></P>
708  html_body=<BR><A HREF="**URLNAME**">**SHOWNAME**</A> **SIZE** kb **MINUTES**' **SECONDS**''
709  html_footer=<BR><P><A HREF="#top">back to top</a></P><P>Sum of files is **SUMOFFILES**.<br>Sum of megabytes is **SUMOFMEGS**.<br>Generated by mp3riot on **DATE**, (c)2000-2003 Nikolei Steinhage</P></body></html>
710  html_sep_head=<HTML><BODY><P><B></B>**FIRSTCHAR**</P>
711
712
713-----------------------------------------------------------------------------
714
715Release History
716
717
718  f2html.pl 0.1-20001127
719        Changes:
720         - Initial release
721
722  f2html.pl 0.2-20010117
723        Changes:
724         - The manual has been updated.
725         - The option -c has been updated. Now this option can be used more
726           than only one time. So one is able to select file by different
727           extensions.
728
729  f2html.pl 0.3-20010628
730        Changes:
731         - Some checks and corrections for pathnames
732         - Only existing characters are written out at the top of a html
733           file
734         - Rewrite of sum of files and sizes. Important for writing
735           seperate html files for every character
736         - The option -q has been implemented and allows for doing the
737           procedures in a non case sensitive way
738         - The option -j has been implemented. A html file with statistics
739           can be written out.
740
741  f2html.pl 0.4-20011127
742        Changes:
743	 - Now f2html comes with a new version of Info.pm
744	   from MP3-Info-0.91 by Chris Nandor
745	 - Minor Bugfixes
746	 - New option to create sql database
747	 - New option to create a config file
748
749  f2html.pl 0.5-20020626
750	Changes:
751	 - Fixed problem with sql data output when files contain the
752	   charakter "'"
753	 - Name of option "hex" changed to "utf8"
754	 - Implemeted progress bar for prepating html files
755	 - More information about what the program is doing
756
757  f2html.pl 0.6-20020718
758        Changes:
759	 - New method (experimental) for faster sorting.
760	   Useful for indexing huge number of files or mp3 files
761	   with additional information.
762	 - New option for checking for dublicates of filenames
763	 - Now f2html.pl comes with a new version of Info.pm
764	   from MP3-Info-1.01 by Chris Nandor
765
766  f2html.pl 0.7-20021016
767        Changes:
768	 - bug for the option "check" in config file and configuration wizard fixed
769         - bug for the check of the mp3 extension when mp3info was enabled fixed
770         - bug of sum of megs in html output fixed
771	 - bug in mp3table.sql fixed
772         - basic ogg vorbis support implemented (thanks to Jens Burkal)
773
774  f2html.pl 0.8-20021105
775        Changes:
776	 - some changes in the documentation
777	 - new option to rename files using their id3tag
778	 - new option to rename files back
779	 - some code fixes
780
781  f2html.pl 0.9-20030313
782        Changes:
783         - Fixed a commandline parameter bug where the parameters
784	   were handled non case sensitive. Now there are handled case sensitive
785	   As a result the functions RENAME and RENAMEBACK did not work
786	   when called with the short command line argument.
787	 - Fixed a commandline parameter bug that occured with Perl 5.8.0 and
788	   Getopt::Long 2.32. The "-s" flag in line 1 of the perl script
789	   causes the program to count the command line parameters in
790	   an usual way, so that command line parameters got disturbed and did
791	   not work any more.
792
793  f2html.pl 1.0-20030319
794        Changes:
795	 - Fixed some smaller bugs
796	 - Removed option for fast sorting (not necessary any more)
797	 - Rebuild the internal data structure completely
798	 - Implemented selection of files by their modification time
799	   (younger and/or older than days from now)
800	 - Implemented grouping of files by string matching between
801	   group defninitions by various types
802	 - Implemented variable html-code definitions and templates
803	 - Changed definition for string replacement
804	 - f2html.pl now comes with a new version of Info.pm from
805	   MP3-Info-1.02 by Chris Nandor
806	 - The use of the id3tag for sql and html output is now optional
807	 - Manpage is not supported any more.
808
809  mp3riot 1.1-20030728
810	Changes:
811	 - Renamed f2html.pl into mp3riot
812         - Fixed output of playlist in M3U format, so that the M3U file
813	   is now containing full information
814	 - Fixed bug for retreaving the TITLE of an id3tag
815	 - Added output of playlist in XML format
816	 - Added output of playlist in PLS format
817	 - Added random fileselection for random playlists
818	 - Added the tracknumber for sql output
819	 - Added **TRACKNUM** (tracknumber) and as a template variable
820	   for html output
821	 - Added TRACKNUM (tracknumber) as a variable for groupings
822	 - Added tracknumber and comment for db output
823	 - Fixed bug in renaming function when special characters are
824	   present in the id3tag
825	 - Added rename_template to do renaming of files using their id3tag
826	   in a flexible way
827	 - Fixed a bug in renameback
828
829  mp3riot 1.2-20040928
830	Changes:
831	 - Fixed bug in sql output
832	 - Flexible search for doublicate files using md5 sums
833	 - search for doublicates by filenames seperated from search function
834	 - fixed bug in xml output
835         - filesize in html output is now rouded
836	 - replaced progress bar by counter in percentage
837	 - added counter for collected files
838	 - fixed bug in index in html output
839         - fixed bug in html output for grouping
840	 - extended grouping function by new type "EQUAL"
841         - bugfix in pls output
842
843  mp3riot 1.3-20041220
844	Changes:
845	 - extended grouping fuction for all playlistfiles
846	 - renaming of special characters for filenames og groups
847	 - support of b4s playlistformat
848	 - sorting of filelist by various criterias of id3tag, mp3 and
849	   file information (e.g. ARTIST, BITRATE etc.)
850	 - extended output of doublicate function by diretory names
851	 - added FIRSTCHAR as a value for grouping
852	 - updated manual
853
854-----------------------------------------------------------------------------
855
856Contacting The Author
857
858You you have found bugs, need help, or have some ideas for further
859development of the program, feel free to mail me
860
861  mp3riot@linxsecure.de
862
863-----------------------------------------------------------------------------
864
865Todo
866
867There are still a lot of things to do. But first of all I have to write a
868better manual with a lot of examples in it. To me, this seems very necessary,
869bacause some users may encounter problems using this program. Some feature
870like sql-interface, advanced sorting and grouping have to be implemented.
871PHP interface has to be written. Change all command line examples to config file examples.
872
873
874
875
876