If you wanted to try card readers, this should be a start for you...
#target bridge
if( BridgeTalk.appName == "bridge" ) {
cardReader = MenuElement.create("command", "Process Card Reader", "at the end of Tools","cardReader");
}
cardReader.onSelect = function () {
var driveList = getCameraInfo();
var win = new Window( 'dialog', '' );
g = win.graphics;
var myBrush = g.newBrush(g.BrushType.SOLID_COLOR, [0.99, 0.99, 0.99, 1]);
g.backgroundColor = myBrush;
win.orientation='stack';
win.p1= win.add("panel", undefined, undefined, {borderStyle:"black"});
win.g1 = win.p1.add('group');
win.g1.orientation = "row";
win.title = win.g1.add('statictext',undefined,'Get Files from Card Reader');
win.title.alignment="fill";
var g = win.title.graphics;
g.font = ScriptUI.newFont("Georgia","BOLDITALIC",22);
win.g5 =win.p1.add('group');
win.g5.orientation = "row";
win.g5.alignment='fill';
win.g5.spacing=10;
win.g5.st1 = win.g5.add('statictext',undefined,'Camera');
win.g5.dd1 = win.g5.add('dropdownlist');
win.g5.st2 = win.g5.add('statictext',undefined,'Serial No:');
win.g5.dd2 = win.g5.add('dropdownlist');
win.g5.st2 = win.g5.add('statictext',undefined,'ID:');
win.g5.dd3 = win.g5.add('dropdownlist');
win.g10 =win.p1.add('group');
win.g10.orientation = "row";
win.g10.alignment='fill';
win.g10.st1 = win.g10.add('statictext',undefined,'Please enter date ddmm');
win.g10.et1 = win.g10.add('edittext',undefined,'');
win.g10.et1.preferredSize=[60,20];
win.g10.et1.onChanging = function() {
if (this.text.match(/[^\-\.\d]/)) {
this.text = this.text.replace(/[^\-\.\d]/g, '');
}
};
win.g5.dd1.onChange=function(){
win.g5.dd2.selection = this.selection.index;
win.g5.dd3.selection = this.selection.index;
}
win.g5.dd2.onChange=function(){
win.g5.dd1.selection = this.selection.index;
win.g5.dd3.selection = this.selection.index;
}
win.g5.dd3.onChange=function(){
win.g5.dd1.selection = this.selection.index;
win.g5.dd2.selection = this.selection.index;
}
win.g15 =win.p1.add('group');
win.g15.orientation = "row";
win.g15.alignment='fill';
win.g15.st1 = win.g15.add('statictext',undefined,'Please select output folder...');
win.g20 =win.p1.add('group');
win.g20.orientation = "row";
win.g20.alignment='fill';
win.g20.et1 = win.g20.add('edittext',undefined,'');
win.g20.et1.preferredSize=[320,20];
win.g20.et1.enabled=false;
win.g20.bu1 = win.g20.add('button',undefined,'Browse');
win.g20.bu1.onClick = function() {
outputFolder = Folder.selectDialog("Please select the source folder",Folder(app.document.presentationPath));
if(outputFolder !=null){
win.g20.et1.text = decodeURI(outputFolder.fsName);
}
}
win.g200 =win.p1.add('group');
win.g200.orientation = "row";
win.g200.alignment='center';
win.g200.bu1 = win.g200.add('button',undefined,'Process');
win.g200.bu1.preferredSize=[190,35];
win.g200.bu2 = win.g200.add('button',undefined,'Cancel');
win.g200.bu2.preferredSize=[190,35];
for(var x in driveList){
win.g5.dd1.add('item',driveList[1]);//Camera Name
win.g5.dd2.add('item',driveList[2]);//Serial Number
win.g5.dd3.add('item',driveList[3]);//ID
}
win.g5.dd1.selection=0;
win.g5.dd2.selection=0;
win.g200.bu1.onClick=function(){
if(driveList.length<1){
alert("There are no drives to process!");
return;
}
if(win.g10.et1.text == ''){
alert("No date has been entered!");
return;
}
var dayMonth = win.g10.et1.text.toString().replace(/^\s+|\s+$/g,'');
if(dayMonth.toString().length != 4){
alert("The day month should be ddmm ");
return;
}
if(dayMonth.toString().match(/^\d{2}/) >31 || dayMonth.toString().match(/^\d{2}/) < 1){
alert("Incorrect day entered");
return;
}
if(dayMonth.toString().match(/\d{2}$/) >12 || dayMonth.toString().match(/\d{2}$/) < 1){
alert("Incorrect month entered");
return;
}
if(win.g20.et1.text == ''){
alert("No output folder has been selected");
return;
}
if(!outputFolder.exists){
alert("The output folder does not exist!");
return;
}
win.close();
var rex = new RegExp(dayMonth,'i');
var folderList= new Array();
for(var f in driveList){
var folderList= new Array();
folderList = FindAllFolders(Folder("/"+driveList[0]+"/DCIM/"), folderList);
var ID = driveList[3];
var fileList = new Array();
for(var k in folderList){
if(decodeURI(folderList.name).match(rex)){
fileList = folderList.getFiles("*.*");
for(var t in fileList){
if(fileList instanceof Folder ) continue;
var thumb = new Thumbnail(File(fileList));
var md = thumb.synchronousMetadata;
var EXT = decodeURI(thumb.spec.name).toLowerCase().match(/[^\.]+$/);
try{
var DateTimeOriginal = md.read("http://ns.adobe.com/exif/1.0/","exif:DateTimeOriginal").toString().match(/.{8}$/).toString().replace(/:/g,'');
}catch(e){alert(e + " " +e.line); return;}
var saveFile = File(outputFolder + "/" + DateTimeOriginal + "_" + ID + "." + EXT);
fileList.copy(saveFile);
}
break;
}
}
}
alert("Process complete");
}
win.show();
}
function getCameraInfo(){
var myDrives=new Array();
myDrives = getWinDriveList();
var cInfo = new Array();
for(var z in myDrives){
var folderList=[];
var ID='';
var IDFile = File("/"+myDrives+"/DCIM/ID.txt")
if(!IDFile.exists){
ID=99;
}else{
IDFile.open('r');
var dat = IDFile.read();
IDFile.close();
ID = dat.match(/\d{2}/);
}
folderList = FindAllFolders(Folder("/"+myDrives+"/DCIM/"), folderList);
var thumb = new Thumbnail(File(Folder(folderList[0].getFiles("*.*")[0])));
var md = thumb.synchronousMetadata;
var model = md.read("http://ns.adobe.com/tiff/1.0/","tiff:Model");
var serial = md.read("http://ns.adobe.com/exif/1.0/aux/","aux:SerialNumber");
cInfo.push([[myDrives],[model],[serial],[ID]]);
}
return cInfo;
}
function getWinDriveList(){
var allHDD = new Array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
var hddExist = new Array();
for(var d in allHDD){
if(Folder("/"+allHDD+"/DCIM/").getFiles("*.*").length > 0) hddExist.push(allHDD);
}
return hddExist;
};
function FindAllFolders( srcFolderStr, destArray) {
var fileFolderArray = Folder( srcFolderStr ).getFiles();
for ( var i = 0; i < fileFolderArray.length; i++ ) {
var fileFoldObj = fileFolderArray;
if ( fileFoldObj instanceof File ) {
} else {
destArray.push( Folder(fileFoldObj) );
FindAllFolders( fileFoldObj.toString(), destArray );
}
}
return destArray;
};