Tuesday, August 18, 2009 at 7:35 PM.
photoFanSuite.archiver
on archiver () { <<Changes <<3/12/08; 12:45:04 PM by DW <<You can't move files across volumes on the Mac, so if that fails, try to copy and delete. <<If user.photoFan.prefs.archive.flDateNestedFolders is true, then archive into date-nested folders. (Defaults false.) <<12/2/07; 9:58:59 PM by DW <<Only create a log item if we deleted or moved something. <<12/2/07; 8:40:34 AM by DW <<Ported from flickrRivr. Run this once an hour to make sure there aren't too many pictures in the screen saver folder. if user.photoFan.prefs.archive.enabled { local (max = user.photoFan.prefs.archive.maxPics, startticks = clock.ticks ()); local (ctdeleted = 0, ctmoved = 0, ctfoldersdeleted = 0); <<max = 100 //for testing if file.filesinfolder (user.photoFan.prefs.screenSaverFolder, infinity) > max { local (filetable); bundle { //build the sorted filetable local (f); new (tabletype, @filetable); fileloop (f in user.photoFan.prefs.screenSaverFolder, infinity) { if not (file.filefrompath (f) == ".DS_Store") { try {filetable.[f - user.photoFan.prefs.screenSaverFolder] = file.created (f)}}}; local (oldtarget = target.set (@filetable)); table.sortby ("Value"); target.set (oldtarget)}; <<scratchpad.filetable = filetable <<edit (@scratchpad.filetable) bundle { //delete or move the obsolete files local (diff = file.filesinfolder (user.photoFan.prefs.screenSaverFolder, infinity) - max, fsource, i, fdest); for i = 1 to diff { fsource = user.photoFan.prefs.screenSaverFolder + nameof (filetable [i]); if user.photoFan.prefs.archive.flCopyToArchiveFolder { fdest = user.photoFan.prefs.archive.folder + nameof (filetable [i]); if user.photoFan.prefs.archive.flDateNestedFolders { local (day, month, year, hour, minute, second, pc = file.getpathchar ()); date.get (file.created (fsource), @day, @month, @year, @hour, @minute, @second); month = string.padwithzeros (month, 2); day = string.padwithzeros (day, 2); fdest = file.folderfrompath (fdest) + year + pc + month + pc + day + pc + file.filefrompath (fdest)}; file.surefilepath (fdest); try { file.move (fsource, file.folderfrompath (fdest))} else { <<msg (fdest) file.copy (fsource, fdest); file.delete (fsource)}; ctmoved++} else { file.delete (fsource); ctdeleted++}; bundle { //delete folder if empty local (oldfolder = file.folderfrompath (fsource)); if file.filesinfolder (oldfolder, infinity) == 0 { file.delete (oldfolder); ctfoldersdeleted++}}}}}; bundle { //do the log if (ctdeleted != 0) or (ctmoved != 0) or (ctfoldersdeleted != 0) { local (s = ctdeleted + " files deleted, " + ctmoved + " files moved, and " + ctfoldersdeleted + " folders deleted."); photoFanSuite.addToLog ("Archive", s, startticks)}}}}; bundle { //test code archiver ()}
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.