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 <[email protected]> wrote:
> Thanks for that. I'm also looking at
> libextractorhttp://www.gnu.org/software/libextractor/
>
> On Jul 29, 6:50 am, PMario <[email protected]> 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 [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/tiddlywiki?hl=en.