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.

Reply via email to