Hi Kanyimbe, I am working on a plugin that can generate tiddlers with the filenames from files in a directory. A list is made of tiddlers that exist's but the file is missing. It is partly based on the code from Eric Schulman's plugin http://www.tiddlytools.com/#ShowLocalDirectory. It is not a working plugin yet but you might try the code below by simply pasting it in a tiddler, you need the inlinejavascript plugin from Tiddlytools and be aware of google line breaks. Opening and closing the tiddler starts the process, be CAREFUL there are no safeguards build in, make sure you have a backup in case something goes wrong. The docs are expected to be in a sub-directory with the name docs. Reading the metadata from files is something that I have been thinking of and this should be possible from TW but it takes some major coding.
Goodluck, Okido <script> { // store.deleteTiddler('test.pdf'); // store.deleteTiddler('test_1.pdf'); var out = []; var tagslist = 'newdocs docs'; // tags that are added to tiddler var path = 'docs'; // directory name var user_name = 'Yourname'; var tot = 0; window.getCurrentFolder=function() { var h=document.location.href; return getLocalPath(decodeURIComponent(h.substr(0,h.lastIndexOf("/")+1))); } window.getParentFolder=function(cwd) { var lastchar=cwd.substr(cwd.length-1,1); if (lastchar=="/" || lastchar=="\\") cwd=cwd.substr(0,cwd.length-1); var pos=cwd.lastIndexOf("/"); if (pos==-1) pos=cwd.lastIndexOf("\ \"); return pos!=-1?cwd.substr(0,pos+1):null; } window.getFileList=function(cwd) { // returns array of file info (path,name,size,isFolder,url,modified) var files=[]; if (config.browser.isIE) { cwd=cwd.replace(/\//g,"\\"); var fso = new ActiveXObject("Scripting.FileSystemObject"); if(!fso.FolderExists(cwd)) return []; var dir=fso.GetFolder(cwd); for(var f=new Enumerator(dir.SubFolders); !f.atEnd(); f.moveNext()) files.push({ path:f.item().path, name:f.item().name, size:f.item().size, url:"file:///"+f.item().path.replace(/\\/g,"/"), isFolder:fso.FolderExists(f.item().path), modified:new Date(f.item().DateLastModified).formatString("YYYY. 0MM.0DD 0hh:0mm:0ss")}); for(var f=new Enumerator(dir.Files); !f.atEnd(); f.moveNext()) files.push({ path:f.item().path, name:f.item().name, size:f.item().size, url:"file:///"+f.item().path.replace(/\\/g,"/"), isFolder:fso.FolderExists(f.item().path), modified:new Date(f.item().DateLastModified).formatString("YYYY. 0MM.0DD 0hh:0mm:0ss")}); } else { // FF if(!window.Components) return; try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); } catch(e) { alert(e.description?e.description:e.toString()); return null; } var file=Components.classes["@mozilla.org/file/local; 1"].createInstance(Components.interfaces.nsILocalFile); try { file.initWithPath(cwd); } catch(e) { return []; } if (!file.exists() || !file.isDirectory()) { return []; } var folder=file.directoryEntries; while (folder.hasMoreElements()) { var f=folder.getNext().QueryInterface(Components.interfaces.nsILocalFile); if (f instanceof Components.interfaces.nsILocalFile) files.push({path:f.path, name:f.leafName, size:f.fileSize, isFolder:f.isDirectory(), url:"file:///"+f.path.replace(/\\/ g,"/"), modified:new Date(f.lastModifiedTime).formatString("YYYY.0MM.0DD 0hh:0mm:0ss")}); } } return files; } listresults = function() { out.push('!Linker Report'); out.push('Path used: ' + cwd ); out.push('Number of files in path: ' + files.length); out.push('Tag added: ' + tagslist ); out.push('Username: ' + user_name ); out.push('!!Added tiddlers'); } date_conv = function(date) { // convert file date to TW date format date = date.replace(' ','.'); date = date.split('.'); return new Date(date[0],date[1]-1,date[2]); // date of creation } write_tiddler = function(title,date) { out.push(tot++ + ' ' + '[[' + title + ']]' ); var newTitle = line[1]; // tiddler title var newBody = '[[' + title + '|docs/' + title + ']]'; // text in the tiddler var dt = date_conv(date); // convert date toTW formaat var newTags = tagslist; // ' newdocs docs' store.saveTiddler(newTitle, newTitle, newBody, user_name, dt, newTags); // displayMessage('New document tiddlers created'); // story.displayTiddler('top',newTitle); saveChanges(); } missing_file = function(title) { out.push('file missing'); } // Main loop var cwd = getCurrentFolder() + path ; //sub folder were the docs are located var files = getFileList(cwd); listresults(); // print the results of loading files var line=[]; // check if the tiddler exists and write if not for (var i=0; i<files.length; i++) { var line=([files[i].path,files[i].name,files[i].url,files[i].size,files[i].modified]); var tid = store.tiddlerExists(line[1])?"Y": write_tiddler(files[i].name,files[i].modified); } exist_file = function(title) { exist = 'false'; for( y = 0 ; y < files.length ; y++ ) { if ( files[y].name == title ) { exist = 'true'; } } return exist; } // non exsisting files out.push('!!Tiddlers tagged but no file'); var tids=store.getTaggedTiddlers('docs'); for( i = 0 ; i < tids.length ; i++ ) { if ( exist_file(tids[i].title) == 'false') { out.push('[['+ tids[i].title + ']]'); } } return out.join('\n'); } </script> On 4 Aug, 08:45, Kanyimbe <kanyi...@gmail.com> wrote: > Thanks for that. I'm also looking at > libextractorhttp://www.gnu.org/software/libextractor/ > > On Jul 29, 6:50 am, PMario <pmari...@gmail.com> wrote: > > > hi, > > exiftool may be of interest. > > >http://www.sno.phy.queensu.ca/~phil/exiftool/ > > > -m -- You received this message because you are subscribed to the Google Groups "TiddlyWiki" group. To post to this group, send email to tiddlyw...@googlegroups.com. To unsubscribe from this group, send email to tiddlywiki+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/tiddlywiki?hl=en.