PREFACE:
========

PSPVerify is an application written entirely in perl. As PSPVerify would require a Perl Runtime Environment and some additional modules it comes in an Bundle that is self extracting. This is PSPVerify.exe and it is a rather large pack, althought the real code/application/script is only ~0,5MB.
As Perl uses a garbage collection system it will gobble a huge amount of your Computers RAM, usualy it runs around 50-70MB but if you have a very large amount of free space it will use even more, that is how it is, if you cannot live with that situation you have to use something else.
The last thing to mention is that the Graphical User Interface (GUI) is not a native Windows one, this means it may look different and sometimes feels different. It also may appear that the application is not responding, while doing certain task, mainly blocking HTTP calls. That is also something that cannot be changed, expect that during certain conditions the Window will not respond for a few seconds.
But it never crashed, it has no know problems, it has a lot of funny features, it is my personal playground, almost everything (that can be done with a computer) is possible and rather easy in perl. PSPVerify's name comes btw from the fact, that it has a "light" GUI but very professional tools included!
Last, althought PSPVerify is mainly designed to run totaly unattended, that means its main aim is to leave it alone for some weeks and come back and everything is still fine, you can do a lot of things manualy do, but you may notice "strange settings" that often serve the goal of automation.


PSPVerify Installation:
====================
Extract the .exe over the existing .exe while PSPVerify is shut off. The correct path is usualy: $mircdir\PhotoServe\Programs

PSPVerify Read.me and History File:
=================================

V1.02.xx
--------
CHANGED (00):  Important!! The remote control interface ("Checker_RC.txt") was changed!!!
               now the keywords are separated by "tab" not space. no matter if the dokumentation tells otherwise, so change your 
			   existing remote control scripts!
			   example: old "hunt<space>SNCD<space>r<space>C:\no_space_possible" 
			            new "hunt<tab>SNCD<tab>r<tab>c:\now spaces are possible"
CHANGED (00):  the remote control interface for burning ISO Images was changed:
               format is one line in the remote control file:
    			   burn<tab><regularexpression to match the trigger><tab>r<tab>createnum=<amount of images to create><tab>path=<path where images are placed><tab>maximum=<max number of images><tab>exclude=<regular expression>
			   
               Example:   I have created a .bat file with 1 command inside:
			
                  echo >P:\Programme\mirc\PhotoServe\Settings\Checker_RC.txt burn	DVD\d	r	createnum=3	path=Z:\Burn_IMAGES	maximum=100
			  
               This will make PSPVerify create 3 Disc images of Ready-TO-Burn collections that are DVDxx triggers (no CDxx) 
               If I put this batch file into the task planner to be run at 3am I will find every morning 3 ISO files in Z:\Burn_IMAGES.
               Note that the Target Path may NOW CONTAIN SPACES.

V1.01.xx
--------
PSPVerify Released.
Added (00): support for the new CSV Repository System (aka Mirror2)
Changed (01): better automated csv upload handling.
Added (01): faster writing of trigger config.
Added (02): Updates from CSV Repositories are always handled. Even if the local csv is considered better. That means a Final CSV can be replaced by a Ongoing
            CSV from the remote Repository. This can be deactivated (in Settings) but it is recommended to leave this setting alone.
             it does only affect the latest changes (the ones that are received after installation of V1.01.02) only the csvs 
             that are uploaded from today on are updated. it is not about synchronizing with the very old stuff that was updated years ago 
             on the repositories. 
            this feature is about beeing able to get a (final) back to (ongoing) -  only when someone uploads a csv 
             the only problem could be that you reset the "last-updated" counter for the csv repositories - or add a new one (with a new name)
            then you would probably get the last 2000 entries compared 
            an turned off 'C' flag (auto update CSVs) in PSPVerify should not update a csv - no matter what the other option is set to. 
Changed (03): Min time for checking for updates reduced to '0.1' (that is 6 minutes) - as the update does not waste any bandwith if nothing is new.
Added (04): Blocking Bittorrent Leeches for triggers, selectable from the menu is 0.5 to 7 days. For that time no Bittorrent Leech is started automatically.
            The block can be removed with 'UnBlock' at any time. To be used for bad leeches that are constantly restarted because the tracker reports a 
            wrong count of seeds or if the remote csv is found to be bad. Automated compare compares only by size and name of files not crc.
Added (05): Old/Unused entries from the triggers are removed during a triggerupdate.
Changed (07): Major Change of the way PSPVerify writes and reads INI/TRG files, now it runs in sync with mirc read and writes, this can possibly lead to 
              blocking calls (freezing up) while mirc locks files (and freezes).. However this new way of handling the writing should ensure that no data is
              lost during asynchron write accesses.
Fixed (09): A Nasty bug causing 'HASH' entries in the Ghostfile is fixed now. All bad entries are removed automatically.
Added (11): 'Hide Burned' Button added
Added (11): ACM 2.0 - New ACM Organizer - See the HOWTO at the end of this README.
Fixed (11): Movecollections cleans remaining empty folders up.
Added (12): Torrents to be removed are identified by names in uTorrent (over the WebUI)  too! This will remove all torrents with the same name, even if the old 
             .torrent file cannot be accessed (any more) - which has lead in the past to double torrents in the client.
Fixed (13): The Options/Settings windows are scrollable.
Added (14): after every Check (not the Readonly) that has 0 missing files,  all files are deleted in "removed" folders : _Wrong_crc and _Wrong_size .
Added (15): "removed" folders : _Wrong_crc and _Wrong_size  folders are also deleted when a collections completes (even with read only check)
Added (17): partial PS leeched file status are displayed in the Report. 
Added (19): priority and leech block calculation has been adapted to the new Part Leech System of PS 
Added (20): Bad_CRC files are moved to the PSTEMP dir and not to the Removed Folder
Added (20): nerocmdoverride setting to specify the nerocmd.exe directly instead of looking for it in the Nero folder.
            example: add the line to PhotoServe\Settings\PSPVerify_Config.ini 
                     nerocmdoverride=C:\Program Files\Common Files\Nero\Lib\NeroCmd.exe
                     do this while PSPVerify is not running.
Added (21): the debug window shows information about the nero process when trying to burn
Added (22): the nerocmd is found for Nero8 automatically. However Nero8 seems to have a bug and burn does not YET work. (see the switch 2 'Addeds' later)
            FIX:    http://www.nero.com/enu/downloads-sdk.html (its free) 
                    download the sdk and replace the nerocmd with the nerocmd inside the SDK
Added (22): protectburnedcollectionwith  param added. This is hidden because it will freeze PSPVerify for the full rar process totally.
            that's why you should not use it, then you cannot complain. This option will RAR up the full collection folder and put 1GB rar
            files to the DVD instead of the files themselves.
            example: protectburnedcollectionwith=C:\Programme\WinRar\WinRar.exe
Added (22): switch to disable the usage of the param file for burning. instead all params from the param file are put in the command line.
            use this switch to make Nero8 work, but use it at your own risk since the command line size is limited and params can be 
            truncated. This risk is high if you burn many small collections with many paths and csv names to be put in the command line,
            burning a DVD sized Collection will work in almost all cases.
Added (22): a new remote command to write ISO Images. Intended use is to write every night a few of the Disc Images to be burnt.

Added (23): The compression of Collections is calculated and not 'guessed'. Thus eliminates the need to compress the Collection
            and simply store it with maximal recovery records.
Changed(24) : Minor change to display the Versions of NERO on start.
Fixed (25) : Bad option `-text' at ....
Fixed (26) : Minor problems all around ..  
Added (27) : 2 new config settings - a Trigger can be turned to auto-update (temp or permanent) if the stats value of a collection
             is above a set limit (Settings -> Misc Options -> Default Trigger States)
Added (28) : AutoCheck will stop checking (after it finishes the current Collection) if user moves the mouse (IDLE < 100)!
Added (29) : Hunting into a leeched Collections causes an interruption of the leech -> requeue -> releech  (required PS4.9b34 or above)
Changed (29) : Hunt program code rewritten 
Added (30) : The reports show the absolute numbers of parts as well for partial downloads
Changed (31) : reports lists files "unsigned" decimal 
Fixed (35):  When moving collections and there was not enough space on the target drive the collection would be left turned OFF
Added (36):  When creating csvs:
              * problems like double spaces will be correct in the filesystem.
              * there is a switch to correct smaller uglinesses in file paths (like a space in front of a coma)
              * there is a swtich to extract all files in a found zip file before creating the csv (so that the csv contains the 
                 zip content instead of the zip file. The zip file is extracted and deleted, so dont use this setting if you build csvs with zip files)
Added (37):  Primary Support for burn-tool ImgBurn from www.imgburn.com
             ImgBurn is a freeware tool that supports a lot of command line switches and is now used in PSPV.
             Nero should still be working (i hope) . But it is untested .
Added (37):  2 new limits in the BurnDialog:
               * you can now limit the amout a disc is filled to prevent it from being offered in the dialog
                  (a level of 85% while set to 4480MB will not create any DVD that is not at least filled 85%)
               * you can also limit the total amount of discs that are offered in the dialog 
                  (if set to 8 and even if you selected 100DVDs to burn, will only create the first 8 (best filled discs))
Changed(37): The way the automated burn (image create) works now has been changed. 
             echo >P:\Programme\mirc\PhotoServe\Settings\Checker_RC.txt burn CD\d+ r 3/9 D:\Burn_IMAGES
             creates 3 discs (of the current setting in the burn dialog) up to a maximum of 9 discs in that folder
             you can mix any CD or DVD or even the Pic-Only and Vid-Only Discs
             the 2 new limits apply also to the auto creating 
Fixed(38):   Works with Nero again 
Added(45):   http ignore when a server is down
Added(46):   new Collection Tool "Attach Backup Drive Directory"
             since you can have a backup Harddisk full of collections you would take hours or days to restore them.
			 to make it quick you can use this feature to restore your collections in one command.
             this does the following:
				*) search 1 directory you specify for collection folders (all in flat dir structure, this means no group subfolder or anything)
				   example: you specify F:\Backup Dir\ -> this will find F:\Backup Dir\SNCD1, F:\Backup Dir\SNCD2, F:\Backup Dir\SNCD3, ... 
				*) if the directory name matches EITHER a trigger OR a csvname OR a collection name it will attach the folder to that collection
				   ONLY IF the collection has no valid path. this means if the collection is turned off or not, the path of the collection MAY NOT EXIST!!
				*) turn on the collection (if it was turned off)
				*) download the latest CSV ! it does this - if possible - ALWAYS! if it cant find a csv it will be a problem you have to solve
				*) check all freshly attached collections to make sure the count is correct. Since there is no cache this can take a long time.
Added(47):   added "eject after burn" switch for ImageBurn 
Added(48):   a new option in "Config -> Settings -> Default Trigger States" : "turn on autoupdate when last trigger (of a series) completed"
             this feature checks for SETUP and INCOMPLETE collections, and if there are 0 collection with autoupdate on it will turn on the first found
			 trigger. Please not that this does not mean it will turn on the next trigger after the completed (and this is a smart feature).
			 Example. Triggers series "abcd" -> you have setup 
				abcd1 with 123/123 files autoupdate 0
				abcd2 with 120/120 files autoupdate 1
				abcd3 with 0/12 files autoupdate 0
				abcd4 with 0/13 files autoupdate 0
				abcd5 with 130/130 files autoupdate 1
				abcd6 with 150/150 files autoupdate 1
				abcd7 with 123/124 files autoupdate 0
			 this will turn on abcd3 ! because it is the first trigger that is incomplete ! 
			 if abcd3 OR abcd4 OR abcd7 are set to autoupdate nothing would happen.
			 since abcd3 is turned on now, nothing happens until the last of all autoupdate triggers (in this case abcd3) is completed.
Added(49):   automated way to upload samples to csv sites that support this.
             You have to configure your csv_reps.ini file (see your prefered website for details) to have c10 and c9 fields.
			 Then select several triggers (that are online and have files) and press CTRL+SHIFT+F8  to start the automated upload process.
Added(51):   New switch for "turn on autoupdate when last autoupdate trig of series completed" to limit this function to FINAL and REBURN csv
Added(52):   If both settings "turn on autoupdate when a collection gets a csv that is final/pre-final" and
             "turn on autoupdate when last autoupdate trig of series completed" are turned on, PSPV will not setup a new csv as 
             AUTOUPDATE unless there is another trigger in that collection series already set to AutoUpdate
Changed(53): OFFLINE collections are skipped in AutoUpdate count for collection series.
Added (54) : As a test - you can disable the cache for Creating CSV - lets see if this helps with crc problems that someone is experiencing ;)
             (settings -> Misc Options -> CSV Create Options -> no cache)
Added (55) : Statsbot values are now interpreted as per byte values. The value will change when a new csv comes in. The value shown is for the csvsize
             so it will not change when you leech. Also the sort by value will sort on the per byte basis, because otherwise a low valued DVD will always be in 
			 front  of a low valued CD even if the DVD is much more worthless. 
Fixed (56) : A very nasty bug, where the crc calculation for creating csv was completly destroyed. (Introduced in .54)
Fixed (56) : bug disabling the Sort by Value Function .. sorry this took so long to find.  Do "Stats Refresh" to get rid of the insane values.
Added (56) : new switch to disable the per byte basis for the statsvalues. All collection are assumed a fixed size (that means the values are much higher for CD collections, but
             on a value per bytes (on the disc) basis it is more correct)
Added (58) : AutoHD Backup can be limited to collections with final csvs.
Added (59) : Extra Info is now added when getting a csv from a channel.			
Added (60) : A little ASCII Graph in the report, if Transfer Stats are Available.
Fixed (61) : Bug that showed random stats for triggers in reports
Fixed (62) : Small bug that caused the hostbase to be not properly detected for http requests
Added (63) : Another cool feature when creating self-maintained csvs. Selecting "Align Files" from the "self-maintained" Menu will do this:
             *) check the size of the selected Trigger files (in the collection folder) 
			 *) move oversized files (sorted by alphanum, so use date-styled dirs) to the next trigger 
			 *) create a new dir for the next slot (the slot has exists)
			 *) set the full slot to Pre-Final
			 *) start a csv-create process for all "touched" slots 
Fixed (64) : Bug with Align Files where the sorting of the dirs did not work	
Added (65) : Menu item for 'Self-Maintained' to quickly change the state of a CSV (Rename CSV) without any further activity.
Fixed (66) : Reports dont show empty transfer statistics.
Added (67) : Added a few more Windows-Ways-To-Find-Applications-For-Typeextentions ! Good work to have an Operating System have ~30 different methods !!
Fixed (67) : ACM Bug when selecting target drives  space rules
Fixed (67) : Download of Stats from 'strange' urls 
Changed(69): Improved internal search algorithm in Trigger Files => Better performance for all Operations
Fixed (69) : Fixed a minor bug in the 'Align Files' function
Added (70) : Added an ignore file pattern field for files inside archives. Files in Archives matching will not count and 
             archives with only these pattern will get deleted. <10k are deleted directly others are deleted to Recycle bin (if enabled in PSPV)
             a good pattern is '(\.txt|thumbs?\.db)$' which will ignore all '*.txt, thumb.db and thumbs.db' files ;-) 
Added (71) : Added  'Correct Changed Drive Letters' in Menu  'Collection Tools' :
                 the commands checks ALL online collections for existing report, csvfile and the collection path.
                 If one item is missing it looks on all existing drives if the path/file exists there and 
                 changes the setting if a positive test is done.
                 This is very useful when a drive letter is changed, since all paths are just the same but only
                 the drive letter is different.
Fixed (72) : A bug where the Align Files function does not work if there is only 1 further trigger, which was ignored.             
Added (73) : FTP Upload works now where available
Added (74) : Support for Torrents to be redownloaded from the tracker after upload, if the Tracker added some extra config.
Added (75) : The files for created torrents are now sorted by date! This will help to create a new torrent with all files in the same
             order as any previously created torrent would have been sorted.  Which will give a new torrent that can be 100% from the 
             previous torrent. Unless the dates are wrong...? 
             (This will however not help when a older file is replaced, 
             and because you can never know which file might be replaced in the future this can never be done.)
Added (76) : PSPV supports Autoconfig from BT Trackers (there is a button in Settings -> Bittorrent -> Autoconfig
Changed(79): FTP Upload has now a timeout of 60seconds 
Added (79) : When checking a BT Leech Locked collection to find out if its complete, PSPVerify will resize all files that are too large and check the crc again.
             This is a workaround of a bug in uTorrent where uTorrent creates a few extra bytes sometimes.
Changed(80): Many tweaks of values 
Added (80) : New option for burning UDF in Burn Dialog for ImgBurn.
Added (81) : CSV and CSV path are split to two columns.
Added (81) : Added two new export menu entries. You can now export the viewport content (that is everything displayed) 
             to the clipboard. You can export all displayed lines or just the selected lines.
             The entries in a line are separated by TABs and the Lines are separated by newlines.
             This content can be pasted to any known Table Calculation Tool.
Added (81):  A second parameter can be supplied when starting PSPV (where the first is Mirc-Dir, which is the base dir)
             the second param will override the Triggers Location Path. This allows to run a second instance of PSPVerify 
             in a different location, while it still uses the same Trigger config as the other instance. Since PSPVerify 
             uses a file-lock technique it is safe to change settings in multiple instances and the files will not be harmed.
             This is usefull to run some jobs like burning Discs in 1 extra PSPVerify instance while the other one 
             keeps running unblocked.
             NOTE: some settings are stored in the ghostfile and those are unique to each running instance.
             NOTE: you can't use this to run several leeches in multiple Networks in PhotoServe
             EXAMPLE: run 2 PSPVs (1 will use all defaults in C:\Mirc, while the other 1 will use its own path and 
                                   the same triggers)
             > PSPVerify.exe C:\Mirc 
             > PSPVerify.exe C:\Another-Mirc C:\Mirc\Photoserve\Triggers
Added (82):  when using utorrent there is no longer a read-only check to find out if a BT leech is complete. Instead the 
             WebUI interface is queried, and only if seeding is returned for the torrent, the read-only check is performed.
Fixed (83):  0 bytes files are no longer included in the torrent.              
Fixed (84):  no archives are deleted when they are larger than 10k (as password protected archives are falsly detected as empty) 
Added (84):  Added an option to clean up the "removed" Files folder, you can set how often to check and how old the files have to be
Added (85):  you can create your own entries in the Collection Tools ->  Tools Urls  Menu .
             adding a line to the [config] section of the PSPVerify_Config.ini will add an entry to the menu, the format is
             toolurl.<name>=<uri>,<description>,<mode>
             The <name> appears nowhere but has to be unique. <description> is shown in the menu, and <uri> is 
             the url to be opened in your browser.
             Example (put the line below into your PSPVerify_Config.ini, somewhere into the [config] section.)
             toolurl.pspv=http://pspv.dyndns.org/,The PSPVerify Homepage
             !! NOTE :  you may only edit the PSPVerify_Config.ini while PSPVerify is NOT RUNNING !!
             NOTE: Currently supported modes are (you can "OR" them):
              0 = leave the url alone like it is
              1 = add incomplete triggers to the url (in this format: trig=trigger1,trigger2,trigger3
              2 = add incomplete series to the url (in this format: series=series1,series2,series3)
              4 = add setup series to the url (in this format: series=series1,series2,series3)
Added (86):  the crc32 calculation is now "thread safe" - maybe this fixes all crc problems people had in the past
Added (87):  the AutoCheck (if enabled) does additionaly a quick "count of files" every 10 days for all
             online and complete collections. a count of files takes a few seconds and it will basically just
             check if the dir is missing any files. 
             this check is only done when you are idle and it will stop when you move your mouse.. dont worry! DO NOT FREAK!
Added (87):  When PSPV is interrupted during moving a collection it will resume the move the next time it starts.
Added (87):  Copy Collection has a switch to copy the csv. The target is the same location as the csv is, just on the Backup Drive.
Added (88):  PSPV AutoCheck checks online collections with a FAIL (or other) status. Because only offline collection should have a status of OFF
             everything else is some kind of "problem" and should be checked.
Added (88):  new switch in Settings : "Protect with WinRar" (needs a restart).
             If it works PSPVerify will display a log entry during startup: "All collections will be compressed before burn with ..."
             Burned collections can be protected with WinRar (which has to be installed). Instead of burning the 
             collection folder PSPVerify will create a rar with as many recovery records that fit on the CD/DVD. A recovery record can 
             be used when a block on the CD/DVD becomes inaccessable. That way you can fully restore a collection from a CD/DVD 
             even if you cannot read some of the data on that disc. (To recover a broken rar file you have to select "REPAIR RAR"
             in WINRAR Application. It will "repair" the rar to a new location and you can extract all files from the restored rar
             or  you can reburn the restored rar to another DISC)
Added (88):  Some new reports details
Added (88):  Added "Hide Incomplete" Quickfilter Button     
Updated(89): Import Settings 
Added(89)  : Support for uTorrents token auth system for the remote control over the webui 
Added (90) : Collections are started depending on the internal priority. Highest Priority(=Lowest Value) first. 
             Autohunt is run (at the same time) for all possible collections to speed up the process. 
Added (90) : Creating New Csvs got some new settings like instead of ignore and leave the file, it would delete certain matching
             files. like "thumbs\.db|desktop\.ini"
			 Another option added can rename certain file types (extentions) to others. like "f4v mp4" would rename *.f4v files to *.mp4
Added (91):  Made torrent create function more stable.
Added (91):  security fix for LinkLister usage.
Fixed (92):  Problem where HD Backup ID was unset for self-maintained collections, even when the csv was not changed is fixed.
             
V1.00.xx
--------
Added: new column, that show meta data from csv files
Added: new option to include data in the csv files as meta information (added as an comment for the first file)
Fixed: bug in the unify_csv_name() function
Fixed: bug in the "badly setup collection" filter.
Added: option in TrackerProfile Setup to ignore unseeded torrents. (requires at least 1 seeder to be started)
Fixed: bug in the detection of correct default path. 
Added: when ACM encounters an existing directory on a location where it wants to rename a dir, it moves the existing dir to the global group trashfolder (usualy mirc download path)
Added: support for utorrent.exe - after selecting utorrent.exe as the default application in the settings, the required settings are auto-configured.
Added: option to auto hunt before a BT leech is started (automatically)
Added: option to set a maximum of BT seeds. once the limit is reached the longest running seed is removed (IF and only IF the client has a removal method setup, eg. Azureus: XML over HTTP)
Added: more error messages on failures during check of collections
Changed: Downloaded torrents get a name including the filecount, so the name will be unique to prevent problems with clients.
Added: the original collection folder is restored after the BT lock is removed
Fixed: hunt for csv should now detect the currently used csv and not replace it with itself
Fixed: autohunt (if configured) after a manual csv change 
Added: a TTL for hunting csv files. the csv has to reach this age before it is finaly removed.
Added: auto-hunt for csv can extract archives (zip,rar) that are named like a csv. e.g xxx_1234.rar yyyy_567.zip 
Added: option in trackers profile to set a channel where the current csv of an uploaded collection (to a tracker) is announce, using PhotoServe.
Added: special feature to translate collection names, this makes it possible to have totaly self-created collection folders:
       to use it you have to set the collection naming rule to *\<Collection Name>. then set 1 entry in the special translation file (edited from the Settings)
       eg. "FLCCD(\d+)<TAB>My custom flower and Cars Collection $$$"  .. this will render the collection "FLCCD12" to replace the name in the default location algorithm 
       to this new name "My custom flower and Cars Collection 012".
       NOTE: the length of $$$ is variable if the number is larger it will be 0 padded if the number is larger it will not be truncated.
       NOTE: you MUST have a (\d+) in the matching pattern, this is the number, if there is no number it will not do anything. this means FLCCD<tab> is NOT enough.   
       NOTE: take care that this only matches one collection series, if you match more you get the same name for different collections, this can have VERY bad results,
       NOTE: just be warned that this is a *VERY* special function, and only experts should use it :-) Have Fun
Added: Self-Maintained collections are now correctly triggering the changed csv event, so that a old (replaced) csv is stored in the removed ZIP file.
Added: for Self-Maintained collections the OnComplete event is called, that will trigger the create&upload torrent IF they match the triggername.
Changed: The Settings Page is scrollable for smaller screen resolutions.
Fixed: using of csvnames with () is possible if they are set in the triggerfile.
Added: by default all files that are removed are sent to the Windows Recycle bin, this can either be disabled in the Settings or if the System defaults to delete files instead of moving to Recycle bin, they are deleted right away.
Added: Some default values are set when PSPVerify is started without them set. This is to prevent damage for newbies that dont read the docs first.
Added: Change/Remove/Setup of CD labels in Setup of Triggers.
Added: new feature - The Bundle-r  
       This feature allows people, eg. that run a ftp server, to offer the latest new files of collections to be bundled in archives (currently zips) 
       there is an option in tools to do it manualy, and its possible to turn it on, so that every time a collections is checked complete, either by leeching, by autohunting, or by creating a new csv, 
       a bundle is done. 
       it is further possible to limit a bundle dir to a certain amount of size, so that older files are automatically removed, when new ones are added.
       It can either be set to create bundles for all or just a few collections (with a collection filter). 
       everything is configureable in: Config -> Settings -> Directory Options 
Added: when manualy setting up a bunch of collections (all marked and rightclick->Setup) the checks and auto-hunts are done after all are configured.
Added: option to seed when needed.
Added: option to include Valid files in the reports. Config -> Settings -> Misc Options -> Performance Settings
Added: optional downloader in the BT Seed/Leech dialog. url can be enter (if needed with user/pass, for easier access it can be picked from one of the defined profiles),
       and the url is then downloaded to a file and inserted in the file-selector. 
Added: some more report infos.
Change: the bundle has now a exclude filter setting - that overrides the include filter setting
Added: some more keybindings:   
       (F2) View Report of selected collections 
       (F3) View CSV of selected collections 
       (F4) Check selected collections
       (F5) Refresh the view
       (F6) Autohunt into selected collections
Changed: on file upload to e-t, when the file is already identical on the server, nothing is done.
Added: Collection Filter does not need the "trigger=" keyword. everything entered and not a reserved keyword is turned to "trigger=text" if "text" was entered.
Added: new remote control keyword 'createanduploadcsv' that will ONLY upload those CSVs that have been created without problems.
Added: Triggers ending with "CD\d+" and larger than 700MB will be marked as problem CSV too.
Change: lost triggerfiles are re-integrated if the original file is not present. also from missing files on startup. 
Added: better support for removing torrents from utorrent client.
Added: log entry when writing a missing csv file. 
Added: new feature to scan Torrent client (Azureus & uTorrent) for inactive torrents and remove them. This is to have more seeding-help slots open.
Fixed: illegal chars from Trigger names removed in the missing-csv filename.
Added: new option 'Automatically remove unneeded torrents from client' in the Bittorrent Settings, that will check the torrents in the
       client application before the tracker profiles indexes are scanned to make room for better seeds
Added: Bundle-r created bundles can be announced to a Mirc Channel with PS.
Added(.60) : Config setting to not show the "all available collections" pre-defined filter.
Changed(.60) : Unset collections are not marked with "ongoing" paranthesis.
Added(.61) : a progress bar for checking crc32 on large (>500k) files. Gives a better performance of the GUI.
Added(.62) : help menu leading to docs website added.
Added(.63) : some more keybindings:   
       (F12) Check read-only selected collections
Added(.63) : New Menu entry to download triggerpacks and install them. You can pick what you want to install first.
Changed (.67): BT active is not removed on a changed csv if the crc stays the same, e.g a name change. 
Changed (.68): Renaming of csv to "correct name" not done when "C" flag is off.
Added (.69): New Export function to export collection, collectionname, csv (+ data), and counts to a tab separated string in the clipboard (can be used to paste to Xcell or TextEditors)
Changed (.70): Cache system improved.
Changed (.70): torrents created with more than 15000 files dont get the private flag set. this is as torrents with that many files cannot be handled by all trackers. only possible way is to use DHT with huge torrents.
Changed (.70): New selection bar system. orange=> too few bytes, red=>too many bytes, green => ok
Added (.71): Old torrent files are purged from the set torrent directory. The files are searched recursivly and only files containing '.torrent' are handled. (note that this includes .torrent.bak as well as 'my.saved.torrent.list.doc')
Added (.71): Default State for "Update CSV from Channel" can be set as a global setting. It can be cleared or set individualy.
Changed (.71): Automated Update of CSV from Channel disabled once the Collection has a csv Final or above.
Added (.71): Unset Collections (without a csv) are - if "Update CSV from Channel" is turned ON - searched IF the last collection of the same series has at least a pre-final csv.
             Note: This only works for Triggers ending with CD or DVD and a number.
Fixed (.72): the cache is no longer lost when doing a hunt.
Added (.73): New pre-defined Filter "Send History"
Added (.74): display of new tools urls - taken from the filterfile option "csvuploadurl: http://<site.url>,<text/name>,<type>"
Added (.75): support for uTorrent 1.6.1 beta .. this possibly breaks support for prior versions... :-/
Added (.75): when moving collections the collection is turned off and released from all sends (in mirc) first...
Fixed (.76): gethtml() timeout is now reset after the initial connect from 10 sec to 120 sec.
Changed (.76): crc cache is compared to the expected (valid crc) and recalculated if a "wrong crc" is in the cache 
Changed (.77): modification to write the verified bytecount additionaly to the trigger config
Added (.78): new "rule" for deleting files. files can be moved to a directory or deleted directly or moved to recycle bin (default).
             Note: there is no check for full drives! also there is yet no option to empty the dir, both has to be checked manualy!
Fixed (.79): Collection Groups excluded from ACM are now properly excluding options: 'Enforce collection locations match collection groups and names' and 'Keep CSVs in correct Dirs'
Added (.79a): Automated Collection Purge System. This is part of the ACM tool. 
             Here are the Facts: (it is not recommended to use this feature unless you are very experienced with PSPVerify)
             Collections that are purgeable for ACM must be - burned, final csv, 30 days old, complete, not leeched, not locked
             Collections are sorted, 5 possible values are taken into account: 1) Stats-Val 2) Last Send Age 3) Number of Sends 4) Last leech Age 5)Coll size
                a typical balance value could be: -0.5;2.5;-0.05 -> Last send Age is 5 times more powerfull than Stats-Value and Number of Sends is worth a 10th part of Stats Value
             These values can be balanced by a string, separting fields by a ';' negative Numbers mean to purge collections with higher numbers before the lower numbers
             To activate this feature "Keep Free bytes (together) on ALL ACM maint. drives (MB)" has to be set. Example: 100000 will keep 99.6GB free on ALL drives.
               It is assumed, that the ACM will move the remaining collections to the drives to balance the free size on each disc.
               Suggested value for "keep free bytes" is 'number of drives' * 'free bytes for ACM on each drive' * 1.5 
             Favourite Collections can be set excluded. Exclusion String example: ABC|EFG|HIJ  will exclude matching triggers ABC or EFG or HIJ 
             Collections on Drives not maintained by ACM are excluded.
             Groups excluded by ACM are excluded.
             If there is nothing left to purge nothing will be purged.
             Files are NOT moved to the recycle bin.
             There is a view that has the exact same list as ACM Purge will use to sort the purge. This list can be used to balance the fields or to manualy purge the least needed collections.
Added (.79a): New color 'act2' added to the color profile. Locked (eg. Bittorrent) collections get 'act2' others 'act' 
Changed (.79a): different date display for dates within +/- 7 days displayed as differences to "now". Can be turned off by adding showonlyfulldate=1 to the PSPVerify_Config.ini (while PSPVerify is not running)
Modified(.79a): comments in remote control are now shown in the log with the remote command
Added: (.79a): Temporary folders are purged when a collections is completed. (eg. PSTemp)
Added: (.79b): 'expertmode' tools added hidden. (features to
                 protect collection to read-only (all the time) - such collections get a 'R' in the state  -  and
                 add collections 'as complete' and pre-checked, no check is ever performed - such collections get a 'Q' in the state until they are checked for real.)
Added: (.79b): Timeout value to be set while burning images (value is remembered). After this time the image creating process is restarted, as sometimes nero hangs for no known reason.
                 The value is in minutes: eg. "15" will kill the nero task after 15*60 seconds !
Changed: (.79b): BT-Seed-Lock is removed after 6 hours earliest (if no activity) it was 3 hours.
Added (.79c): Collection Tool to change drive letters. 
Added (.80): Missing-Files-CSV Filler Tool. Select Collection to be Hunted in "RightClickMenu" -> Files -> Fill Miss CSV. Or Press CTRL+F and switch to Filler.
Added (.80): BT-Seed-Lock remove time is now selectable from a dropdown box.
Added (.81): Menu entry : "Refresh Stats" to immediately refresh the stats from the URL(s).
Changed (.81): Filled Requests Bundles include now the names (separted by '+') of all collections that have been marked when clicking "Fill Miss CSV". 
               The dirs or csv that actualy have been hunted are not respected. They have to be changed manualy!
Changed (.82): Illegal File Chars modified  ^ and # are now allowed in file paths.. only double spaces are removed so far.
Added (.83): Menu "Change -> Clear Auto-Auto Setup List" - this will clear the whole list. (delete the config file). NOTE: not just the selected trigger is removed from the list. 
Added (.83): Triggerlistmagic 
Added (.85): Menu "Files -> Create Temp CSV" creates a temporary csv for a collection. All files from the original csv are kept where they were and new files found
             are added to the csv. This also works for incomplete csvs.
Fixed (.86): no more move errors when hunting from a disc 
Added (.86): checking a collection auto renames all files AND dirs to the same state as in the csv.
Added (.87): a powerfull tool called Collection Recycler. This is used for collections going to a DVD. instead of manualy checking all old cds and removing them
             this tool will hunt all required files from the old cds and move them to the new dvds. 
             Precondition: new dvds csvs have to be installed - old cds still have to be installed and online.
             format for the control string is <newtriggermatch>:<oldtriggermatch>:<min number for old match> 
             the oldtriggermatch must have a (\d+) to detect the numbers for the <min number for old match>  to work.
             although its complicated you can get a correct control string from an operator eventually.
Added (.87): a checkbox to suppress the autohunt on the setup of a collection. 
Added (.88): dead leech torrents are removed after 24h without a connected seed. Restart is still possible if the torrent is listed on the tracker. Then another 24h have to pass.
Added (.89): collections with count 0 files are excluded from all acm moving stuff (to get free space) 
Added (.90): a check for free space on the drive mirc is installed. if the space runs below 50MB (hardcoded) Pro will give a message and EXIT!! 
             (This protection was added cause i lost for the 3rd time most of my config files because the drive was full.)
Added (.92): Added files from a temp csv are properly added to the log (which makes bundling possible). 
Added (.94): Permanent log in the Reports will show the crc of a csv on changed csv events.
Fixed (.94): Jump to group works now reliable
Changed (.95): The "BackTracking" of new csvs (of the option "Check for new CSVs") works now without wasting bandwidth. Also wrong/bad entries are ignored.

V0.80
-----
Added: ACM option to move BURNED collections to certain drives, filling them up. Only Limit applied is the "Never ACM move to drives where free space is below" limit.
Added: Collection Tool: "Display free bytes on all drives"
Added: new option for BT Leeches. 'AutoUpdateSetting not required' will start leeches for all collections missing files, regardless if it set to AutoUpdate
Added: new config option for tracker profiles.'AutoCreate Triggers matching' is a ; separated list of reg-expressions, that will start a "create torrent event" (same as selecting and clicking Create a torrent) 
       including the auto-upload and auto-client start (IF and only if the tracker-configuration is set to do that). This event will happen if the collection was checked to final. 
Added: a lockfile is placed next to a locked Bittorrent Dir (when locked or unlocked) so filesystem shows locked dirs. <path>_BitTorrent_Locked.txt is the location.

V0.79
-----
Fixed: generating a trz generates \r\n instead of \n.
Fixed: Update of CSV does not accidently overwrite csvs with same name. 
       Also the old Csv (even with same name) is properly backuped to the ZIP file in 'OldCSV' folder.
Added: The automated update of csv from the leech channel is implemented. NOTE: no check is done for burned collections,
       but unburned final csvs will still be checked until turned off or burned. Also note the interval of a check is started once every 24h,
       and expanded to 14 days, if there was no new csv found in the channel.
Changed: The leech data for the View is now quickly loaded (but not processed until idle time is reached)
Added: Orphan Directory Finder/Cleaner now attaches automatically lost collections to the right named directories (only if the collection has no active path and the path is found orphan)
Fixed: Improved performance in the Disc Verifier.
Fixed: Found files on hunt are not removed if the copy failed.
Added: "Tag of Status with CSV Status" option. (in Settings -> Display)
Added: new remote command "makemissingcsv" - to create a missing csv 
Added: folder config for missing csvs (empty path will still be the default that is "psdownload"\MissingCSVs
Fixed: Cleaning of empty dirs after purging is done.
Fixed: Duplicate Files that were found during a hunt are deleted properly.
Added: new keyword "delonlydirs" to the advanced autohunt config
Added: option to move all found csvs to the first csv-hunt directory.
Added: Tools menu: announce csc, which will announce the csv and collection status in the leech channel and network.
Added: option to auto-announce newly created csv files.
Added: settings option to specify a pattern to announce different csvs as privatly or el-toro available.
Added: option to turn the archive-cache off, hunting will be slower but works more reliable with multi-part archives.
Added: "hidden feature" key shift-f12 to reset a wrong count for a "burned" _AND_ "offline" collection. only the count is reset. not the verified (of course)
Added: new pre-defined filter: Bad Setup, shows all collections with missing csv _and/or_ missing path
Added: while reading a csv multiple spaces are translated to one single space (the csv is NOT modified), but the collection is double-space free.
       included is an option in Settings to disable this! This does not work for self created csvs.

V0.78
-----
Added: collection in view counter
Added: Mass change of drive letter in "File->Collection Folder Move" Dialog.
Fixed: Unset cleans "status" and "lastdl"
changed: Disc Verifier sets the count to csvcount if verified a collection on disc.
Fixed: cleanup of complete collections works properly from the hunt dialog.
Fixed: acm not renaming collection folders that are either root drives or cd drives.
Added: checkbutton for hiding OFFlined collections.
Added: new checkbutton for adding the burnedcollectionpath tag in the acm to the end.
Added: new placing rule for CSV and REP -> '<Root Dir>\<GroupSubfolder>\<GroupShortName>'
Added: system to detect new csvs from the channel messages
Added: the new "csv update from channel message" processing
Changed: While setting up collection the "select" csv button opens in the default dir if existing.
Changed: Improved Dialog at "Group Setup"
Added: pressing CTRL-+ adds 1 new trigger succeeding the selected triggers.
Added: dialog for adding new triggers to non-3rdparty and non-official groups.

V0.77
-----
Added: Idle mode - auto actions will only take place after 45 sec (default) idling, to prevent unwanted start of automated routines during manual working.
Added: Dupe Reporter for selected Collection csvs.
Added: new column (23) to show the triggers default leech channel 
Added: default leech channel setting possible for each individual trigger (in Setup) 
Added: CSV Update in Channel Flag (not yet working - just the GUI)
Added: Autodetection system for Triggerupdates - autoreloads updated Triggers to support a fully automated trigger update in the future.
Fixed: Upload To Mirror now automatically handles the error (on the triggerconfiguration of the Mirror) and displays the correct message in the log.
       Also a better debug info is written to the debug log - in case something else is still not ok.
Added: Auto fix supports now duplicated setup triggers handling - same path for is detected correctly.
Added: Debug info improved and memory usage minimized.
Added: Priority Level Override. Will override the default smart-level setting and put a fixed value for a regex wildcard match. Can be used to priorize a whole Series of Collections differently.

V0.76
-----
Added: Selfmaintained Predefined Filter
Fixed: Missing reports are now properly re-created (in the default location) when checking a collection
Changed: Selected Triggername(s) copy to clipboard changed to <CTRL+T> 
Added: User Filter: BURNED: BURNED or BURNED=yes will show only burned collections. BURNED=no only shows no burned.
Added: Sort by Status
Added: Custom Filter storage and maintainance. By default a set of Drive filters are set, those can be deleted and/or modified. Press the E (like Edit) next to the Clear Button 
       Some examples: "Ready to Burn" could be this: 'CSV=fr BURNED=no STATUS=comp'
                      "Burned on drives D and E"  like this: 'BURNED DRIVE=de'
                      "Incompletes with final or reburned csv" like this: 'STATUS=inco CSV=fr'
Added: User Filter: OK_PATH and OK_CSV that pass if the PATH and CSV are present (exist)
Added: Filter 'NOT' is possible. example '!DRIVE=de BURNED' (note the !) will show all burned collections that are NOT on drive D or E
Added: New column for BestCSV (which is imported from the StatsMaker-Stats File) | New Filter 'BETTERCSV' matches all triggers where a better BestCSV is found than the actual setup 
Added: Fast CSV Cleanup function, that is automatically charged if a "Complete" Collection is Hunted to. Works with OFFLINE collections as well.
Added: Cleanup of Autohunt folders in Collection Tools menu.
Added: Added option to limit the "history views" [ current: CSV-Change and Leech History ] to xxx number of days. Value can be a fraction e.g 0.5 
Added: CSV Cleanup function cleans, if set, all supported archives from csv files.
Changed: Empty Archive Containers will now be removed directly after the extraction. [ not during the next scan ]
Added: Collection Icon Support: You can have Collection icons for a the Status (Old was: COMPL INCO OFFL...). 
          The icon file is downloaded - if missing - automatically, so no need to get it manualy, but possible!
          Its possible to have a custom set of icons, just replace the pictures (PNG or JPG) in the PSPVerifyCollectionIcons.zip in \PhotoServe\Settings\ 
          for PNG transparency is supported, so the background color will be seen.
Added: Custom Collection Icon set provided by lobos.
Added: 2 new commands for the remote control:  'createcsv' and 'uploadcsv', only works on "self-maintained" collections.

V0.75
-----
Added: ColorSettings file
Changed: RemoteControl File
         File: \Photoserve\Settings\Checker_RC.txt
         Format: multiple lines, each line one command: 
         Commands: triggerreload, exit, check <trigger> <flags>, autohunt <trigger> <flags>
         Flags: i for incomplete, c for complete
         Example: 'autohunt \bSNCD\d\d\b c' >> will auto hunt all SNCD10-xx that are complete
         Example: 'check \bSNCD\d+\b' >> will check all SNCD* (incomplete and complete)

V0.73BETA
---------
Corrected: Some minor performance issues with the GUI
Added: FileFinder

V0.71BETA
---------
Added: New Colums: Sends, Last Send
Added: Customizable Row Ordering 

V0.70BETA
---------
Added: New Columns: CDLabel, Collection Url, Collections Subgroup
Added: Optional display of Network and Leech Target for Leeches (can be changed in Settings)


V0.69BETA
---------
Added: New user display Filter keyword "CSV=". CSV takes a sting as option, if the letter o p f or r is included the collections with  o(ngoing), p(refinal),
       f(inal) or r(eburned) csvs will be shown only. The order is irrelevant. Examples: CSV=f | CSV=opfr | CSV=rfpo | CSV=po | CSV=r ...
Added: Modifyable Columns (not all columns have to be shown, in Config->Settings they can be set to be hidden)
Added: Colored Rows
Added: Two new Colors: Burned Collection and Active Collections (leeched or locked). [ Its possible with little work to make a 
       custom color setting file to make the now hard coded colors customizeable ]
Added: Pressing <CTRL+T> copies the actual selected trigger(s) to the clipboard.

V0.68BETA
---------
Changed: Use of CsvSubfolder;CsvBaseName;CsvType  from et= field changed to 3 independend fields. {  csvgroup=[\s\w\d]+  |   csvname=[\w\d\s]+  |  csvtype=\d   }
         Old Settings still compatible.
Added: Detection of outside changed csvs. If set to unlock a coll it should correctly unlock IF in seed state.


V0.67BETA
---------
Added: Support for BT client closing(Torrent Removal). So far only Azureus is supported in this version. [ get the plugin at
          http://azureus.sourceforge.net/plugin_details.php?plugin=xml_http_if or
          directly this file: http://azureus.sourceforge.net/plugins/xml_http_if_1.0.zip ,
          extract the zip directly to the Azureus Main Folder (eg. C:\Program Files\Azureus)
          and (Re)Start Azureus. 
       Other ways, if possible will be added sometimes.


V0.66BETA
---------
Added new upload field value  %SVo#p#f#r% |  the string (separated by #) is conditional if csv is o(ngoing) p(refinal) f(inal) or r(eburn) | %SV2#1#1#1%

V0.65BETA
---------
Changed: Improved path setting production for reports csv and path setting.

V0.64BETA
---------

*Added: A lot of new Vars for the auto upload feature: The vars will be replaced by the actual value for the uploaded trigger. 
        Format is: pairs of values separated by spaces. first one matched the form's field. the second is the value that is inserted.

Var     |   Value                                                                           | Example
-----------------------------------------------------------------------------------------------------
%F%     | Local Filename of the created Torrent                                             |
\s      | space                                                                             |
\n      | newline
%C%     | the plain csv name (without path)
%CRC%   | the crc of the csv name
%G%     | the groupname the trigger is in
%S%     | the subgroup the trigger is in (if available)
%T%     | the triggers name                                                                 | SNCD1
%U%     | the url of the the triggers content
%Y%     | the category number                                                               | 2
%B%     | the csv basename (without number or state) if not avail. collection name 
%CS%    | states version as number                                                          | 1=ongoing 2=pre-final 3=final 4=re-burn
%CR%    | states revision as number
%CV%    | the states version as string                                                      | (Pre-Final-1), (Re-Burn-4), ..
%URLE%  | the url of the csv at el-toro's website                                           | http://csv.el-t......
%URL.%  | the url to the csv of any repository
%SVo#p#f#r% |  the string (separated by #) in conditional if csv is o(ngoing) p(refinal) f(inal) or r(eburn) | %SV2#1#1#1%

here is a simple example that can be used for BNBT Trackers

                torrent %F% link %URL?%

and this is a bit more complicated example for a more developed webform to fill with a maximum of values

                fil %F% typ %SV2#1#1#1% desc Grp:\s%G%\nSub:\s%S%\nTrg:\s%T%\nUrl:\s%U%\nTyp:\s%Y%\nCSV:\s%C%\nCRC:\s%CRC%\n name %B%\s%CV% url %URLE%


V0.63BETA
---------
* Added: Pre-defined Filter for CSV-Change History. Will show the latest changed CSVs.
* Added: Auto-Upload Feature for Torrents to websites. 


V0.62BETA
---------
* Changed: Lock and Seed keywords 
* Changed: Collection is now autolocked in SEED Mode after BT Leech until manualy removed.
* Added  : Better detection of tracker websites - including auto php/form login support

V0.61BETA
---------
* Added: Option "Autohunt after Manual CSV Change"
* Added: Removed Files from Collections are put into a Group SubFolder


V0.60BETA
---------
* Fixed: HuntBug

V0.59BETA
---------
* Changed: Autoleech policy. CSV Updates don't count. 
* Improved: Stopping of Leeches. added logging and live update of Status.
* Improved: Report is in Windows format now.
* Added: Pre-Defined filter for Advanced Auto Hunt Set Collections

V0.58BETA
---------
* Fixed: Update of TreeView if a previously hidden Collection group is setup with a collection to display the new Group correctly.
* Changed: Autoleech start optimized.
* Added: BitComet Client default option support.

V0.57BETA
---------
* Fixed: ACM Automove Bug - not finding collections on drive.

V0.54BETA
---------
* Added: Extra check for faults in TRM files on TriggerUpdate

V0.53BETA
---------
* Fixed: CSV Hunt not correctly detecting a new found csv
* Added: CSV Hunt will now clean the CSV Hunt Dirs of found but old CSV files
* Added: ACM KeepDir System. It will try to rename all wrong placed directorys to the default directory. If dir is locked it will
         try again the next time. This will also work for OFF collections. It will never change the driveletter.
* Added: Dupe-Distributor. Running that will scan all missing files in other (online) collections and if found it will copy the missing files
* Changed: Old (replaced) CSV Files are now stored inside a zip file.
* Added: Find orphan csv files inside a list of folders. Currently those files are always removed (to the zip file !ORPHAN).
* Added: Find orphan directories inside a list of folders. 
* Added: TriggerUpdate. Use this to keep track of renamed Triggers internal settings and trigger name will be corrected from interim triggers
         to actual trigger configuration
* Added: StayOnTop 

V0.52BETA
---------
* Added: Disk-Verifier HOWTO.
* Added: Disk-Verifier can open/close drives (with Nero) if read-errors are found. 
* Added: Config file (can be edited from the settings) to support "Auto-Setup" settings by pattern matching. This means that
         ALL the Triggers, existing and _future ones_ can be set to Auto-Setup ON. This works for whole groups too. (The pattern are RegEx)
* Added: Support for PS/BT to be locked.
* Fixed: Handling of empty Zips and Rars. If they appear empty and are smaller than 10k they are deleted.

V0.51BETA 
---------

Start of the History file with the first Beta Release.




TODO:
-----
<nothing at the moment>

TEXT ONLY OPTIONS: 
------------------
some of the options can be entered via the gui, cause of my lazyness, so you have to enter them to the config while the tool is shut down.

'override_bittorrent_scantime_minutes'  replaces the default time delay between two scans for bittorrent sites
'protectburnedcollectionwith'  the full path to your winrar.exe - this will result in all of your burned collections to be rared before they are burned
'par2protectburnedcollectionwith'   the full path to your par2.exe command line tool - this will result in all ISO images created being par2 protected in the end.

README (very old)
======

Here is a Features List:

* Automated Checking of Collections
* Automated Downloading of Collection CSV
* Automated Hunting for new Files or new CSVs
* Hunting for needed files in Archives (currently RAR and ZIP)
* Automated Free-Space Management for Harddisks
* Stand Alone Disk Verification System
* Read-only Checking of Collections
* CSV Creation for Self-maintained Collections
* Creation of needs-csv for collections with missing files
* Archive Collections on Disks like DVD, CD  (aka Burning Feature)
* Support for other http based CSV Repositorys (mirrors, special-csv, ..)
* Advanced Auto-Hunt Configuration for each Collection(group)
* Mass Auto-Setup support
* Auto creation of interim-triggers
* Auto Repair of duped Trigger configuration
* Auto Repair of errorous Trigger setup if possible
* Support for Stats Values


HOWTO
=====

This section is to describe how some things work in PSPVerify and How they are supposed to be used. 





*)  STARTING 

First thing you should do, if you maintain any collections on your own find them and go to Setup and mark them as your own.
Setup all collections you dont want to be auto-updated or auto-leeched and turn them to OFF
Set your default leech groups in the Group-Setup.
Go to the Config and Set the default for all collections (that is normaly ON for both)










*) BURNING

The approach to burn a Disk is not to tell PSPVerify what collections should go to what disk. PSPVerify choses the best placement possible automatically.
First you select what collection you want to burn (and chose Burn from the Right-Click Menu). Best chosen in the Filter "Ready-To-Burn", but you can chose any other complete collection.
Second is to group stuff. This means the stuff you want to have (IF POSSIBLE) together on one disk. If groups are too large for one disk they are automatically split up. There is an auto-group feature that groups all Collection in one Trigger group together.
Third chose the size of one Disk click on "Get Ready to Burn"
Then just click on the Disks you get as a Result and chose a Burning Device and click on Burn.

##  Burned Disks are not marked as Burned, they have to be verified or added in PS Control Center.








*) ACM Organizer 

The ACM Organizer was designed to keep the collection organized depending on rules that collections match. 

Simply said the Organizer can be used to fill certain Drives with certain kind of collections. Read this carefully (twice) to be clear what it is doing.
See the examples to understand how to use it.

First warning, the organizer will probably move a lot of collections the first time run or when you modify the settings.
It will always only change the drive letter of a collection, never the path itself. 
Turn off the AUTO ACM first, then try your setting by using the "simulate ACM Organizer" from the "Collection Tools" Menu.

A Report is copied to the clipboard, it can be pasted to any Text Editor or similar Tool.
here is an example row from that report
            /-> the drive letter      /------------/---->  these are the points that were evaluated
            v                         v            v
XXXXXCD1    W	matched=0,3,4	E=1 of 2	L=1 of 2	M=<no match>	O=<no match>	W=1 of 1	Target=W
^                       ^                                                                                     ^
\->the collection name  ^                                       The final result of possible drive letters  <-/
                        \-> the rules that matched
In the above example you can see that although the collection matched rules 0 and 3 the points that was not enough (only 1 of 2) for drives E and L 
but for drive only 1 point was needed and 1 of 1 is better than 1 of 2. so only drive W was evaluated as a valid target.                       


Some facts you need to be aware of:

.) if there is no space on the drives you specify then nothing will be moved.
.) if a rule is set for a drive _ONLY_ collection of that kind will be found on that drive.
.) if a drive runs out of free space (depending on the settings) collections will be moved (if free space is anywhere available) 
   not matter what.
.) specifying a drive in multiple rules works like AND -> example: finals AND burned on drive X => add X in rule "not ongoing" AND X in rule "burned" too
.) specifying multiple drives in one rule works like OR -> example: drives XYZ in rule "burned" will set burned collections on drives X OR Y OR Z
.) rules can have values. if multiple rules match on a collection the _SUM_ of all values will be calculated that match.
.) pre-finals are NOT ONGOING 
.) if there is not enough space for a rule, there will be collections matching that rule on other drives too, but _only_ collections of that rule 
   will be on the drive.
.) The Rule "Zero/Fake/NeverMatch" is a special purpose Rule. It does never match any collection, so all drives specified in this rule will be moved away
   if possible, but on the other hand, if the system runs out of space, collections will be moved to this drive

.) other rules can easily be added, just ask for it.

EXAMPLE 1 
---------
REQ: I want to have all the collections i have backed up on my drives O and W because those are the USB drives i want to remove ... 
CONFIG: Set Rule "Backuped/Burned" to "OW" and set the ACM drives to "all" others.. NOTE that it does not matter if you include OW in the ACM main drives.

EXAMPLE 2
---------
REQ: I want to have the final collections that are NOT YET burned on F and the final collections allready BURNED on drive X
CONFIG: Set Rule "Backuped/Burned" to X, Set Rule "Not Burned" to F, Set the Rule "Final" to XF
EXPLAIN: the organizer will evaluate all collections, and adding points for each final to X and F, but only for the burned collections points are added
         to X and not Burned will add points F. all other collections on these 2 drives will be removed when possible

EXAMPLE 3
---------
REQ: i have 4 drives RSTU and i want all the ongoing collections on R and when they become final i want them to be moved to S then T then U.
CONFIG: Set Rule Ongoing to R, Set Rule "Not Ongoing" to STU, then set the setting 'Move Collections to' to 'Drive with least free bytes'
EXPLAIN: setting the Secondary Placing rule 'Move Collections to' to 'Drive with least free bytes' will fill first the drive R (or any drive) until
         it is full then the next and so on. Setting the Ongoing Rule to R will make sure ongoing collections are moved there BUT ALSO 
         it will make sure that NOT ongoing are moved away there too. By setting the "not ongoing" rule to something, it will additionaly move
         collections to this drives.

EXAMPLE 3a
---------
REQ: i have man drives and i want all the ongoing collections on R and when they become final i want them to be moved somewhere else
CONFIG: Set Rule Ongoing to R
EXPLAIN: Like before in example 3, but this time there is not a rule where the non-finals should be moved.
         the only RULE is that they are not be on drive R (which is calculated by "ongoing" (and only THESE) on R) 











*) DISK VERIFIER

The Disk Verifier is used to validate a Burned Disk. Optionaly (Default) the Disk is set in the PS Configuration as beeing on a CD if the _whole_ Disk was found OK.
All you need to do is insert the Disk (CD,DVD) into a Drive and enter the Drive Letter (and give the Location for the csv on the Disk), then click "Check". The Disk Verifier will look in the csv Dir on the Disk (blank is root folder) for all CSVs that are on the disk. Next it will compare the csv with the PS Settings and show the correct trigger (if the csv match), then it starts to look into the folders on the Disk. It is assumed that each Collection has its own Folder in the root of the Disk. If it found the correct Directory it will validate all the Files that have to be in the collection. 

If it encounters an incorrect file, it will assume that this is a transient failure. Therefor it will wait the amount of seconds until it trys again. If it fails to read the correct crc from the file for "Trys" times, it will be an Error (Bad). If only 1 Bad file is on a Disk all collections will NOT be set as "on CD". If all Collections are Good ALL of them will be set as beeing on the CD.

The default Label, that will be generated if no Label is entered manually, is a Hash Value of the CSV on the Disk. This way, two people having the same csvs&collections on a Disk, regardless how they called the disk (label) or where they put the csvs into, will have the same CD Name set in the PS Settings.

The Open/Close on Problems will additionaly open the Drive and wait the delay and then close it. This is because i sometimes have heat problems with my drive after reading 4 to 5 DVDs with 7 Collections on each. This can be turned off by unchecking the option. (you need Nero installed for this)



*) INSTALLATION OF PERL and all needed modules to run the sources

First you need to install a perl package. Recommanded is ActivePerl, which is a FREE software (everything is free for perl which is needed). The URL to get the package is:

http://www.activeperl.com/Products/ActivePerl/

next you need to install the package. When done with it, you need to install some needed modules for the program to run. To do this go to an cmd.exe prompt (command.exe in win9x/me) and type ppm (which is the Perl Package Manager). A prompt like this will appear:

     ppm>

now check if you have the correct module repository:

     ppm> rep

gives you a list of repositorys you have. Then you need to look for this repository.. type consecutively "rep desc 1" "rep desc 2" until you get an error or this :

     ppm> rep desc 2
      Describing Active Repository 2:
          Name: Autonamed 1
      Location: http://theoryx5.uwinnipeg.ca/cgi-bin/ppmserver?urn:/PPMServer58
          Type: PPMServer 2.0

look if you have this repository!  If you dont have it add it with 

     ppm> rep add theoryx http://theoryx5.uwinnipeg.ca/cgi-bin/ppmserver?urn:/PPMServer58

OPTIONALY you can add this also good repository

       Describing Active Repository 1:
          Name: bribes
       Location: http://www.bribes.org/perl/ppm
          Type: Webpage

to add it

     ppm> rep add bribes http://www.bribes.org/perl/ppm

after that you need to install some new packages and upgrade some old (already installed ones)

     ppm> install Archive-Zip
     ppm> install Win32-Process-Info
     ppm> install Tk-StayOnTop
     ppm> install win32-driveinfo
          install Tk-MK
          install XML-SAX
     ppm> install win32-fileop
     ppm> install http://theoryx5.uwinnipeg.ca/ppms/Crypt-SSLeay.ppd
     ppm> upgrade -install -precious

eventually you are asked for input if there are two better versions available on different Repositorys. Just choose the better one or any.

That's it.

(If still some modules are missing, please inform me of the missing ones so i can update this READ.ME. But you can install them just like this:

if it says could not locate package "Archive::Zip"  then the package name will be Archive-Zip which means  "install Archive-Zip" will get this module.





FAQ
===

Q: What is RegEx?
A: Regular Expressions. There is plenty of info about this in the WWW. But as a quick introduction: "." matches any single char. ".*" matches any char multiple times. ".?" matches any char 0 or 1 times. That is: "ab?c" will match "ac" AND "abc". Dont use "SNCD*" because this will not only match "SNCD" but "SNC" too (because it would match "SNCDDDDDDDD...").