You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							483 lines
						
					
					
						
							13 KiB
						
					
					
				
			
		
		
	
	
							483 lines
						
					
					
						
							13 KiB
						
					
					
				| debug = {};
 | |
| pTools = {
 | |
|     debug:{
 | |
|         active : true
 | |
|     }
 | |
| };
 | |
| 
 | |
| pTools.debug.log = function ( string )
 | |
| {
 | |
|     if ( pTools.debug.active ){
 | |
|         $.writeln( string );
 | |
|         writeLn( string );
 | |
|     }
 | |
|     return;
 | |
| }
 | |
| function pad ( n , pad ) {
 | |
|     zeros = "";
 | |
|     for ( i = 0 ; i < pad ; i ++ )
 | |
|     {
 | |
|         zeros+="0";
 | |
|     }
 | |
|     n = String(n);
 | |
|     padded = zeros.substr( 0, pad - n.length ) + String(n) ;
 | |
|     return padded
 | |
| }
 | |
| function getItem( item_name, item_type ){
 | |
|     var result = null;
 | |
|     var items = app.project.items;
 | |
|     var names = [];
 | |
|     
 | |
|     for ( i = 1 ; i <= items.length ; i ++ )
 | |
|     {
 | |
|         var item = items[i];
 | |
|         var type = item.typeName;
 | |
|         if ( ( type == item_type ) && ( item.name == item_name ) )
 | |
|         {
 | |
|             result = item;
 | |
|             //$.writeln( item.name );
 | |
|         }
 | |
|     }
 | |
|     return result;
 | |
| }
 | |
| function getFolder( given_name ){
 | |
|     
 | |
|     result = getItem( given_name, "Folder" );
 | |
|     
 | |
|     return result;
 | |
| }
 | |
| function getComp( given_name ){
 | |
|     
 | |
|     result = getItem( given_name, "Composition" );
 | |
|     
 | |
|     return result;
 | |
| }
 | |
| function getSelectedProjectItems (){
 | |
|     var items = [];
 | |
|     var p = app.project;
 | |
|     for ( var i = 1 ; i <= p.numItems ; i ++ ){
 | |
|         var item = p.item(i);
 | |
|         if ( item.selected ){
 | |
|             items.push(item);
 | |
|         }
 | |
|     }
 | |
|     return items;
 | |
| }
 | |
| function duplicateSuffix( items , suffix ){
 | |
|     for ( i = 0 ; i < items.length ; i ++ )
 | |
|     {
 | |
|         var item = items[i];
 | |
|         var new_item = item.duplicate();
 | |
|         new_item.name = item.name+"_"+suffix
 | |
|     }
 | |
|     return true;
 | |
| }
 | |
| function duplicateReplace( items , string , newString ){
 | |
|     for ( i = 0 ; i < items.length ; i ++ )
 | |
|     {
 | |
|         var item = items[i];
 | |
|         var new_item = item.duplicate();
 | |
|         new_item.name = item.name.replace( string , newString );
 | |
|     }
 | |
|     return true;
 | |
| }
 | |
| function suffix( items , suffix ){
 | |
|     for ( i = 0 ; i < items.length ; i ++ )
 | |
|     {
 | |
|         var item = items[i];
 | |
|         item.name+= "_"+suffix
 | |
|     }
 | |
|     return true;
 | |
| }
 | |
| function prefix( items , prefix ){
 | |
|     for ( i = 0 ; i < items.length ; i ++ )
 | |
|     {
 | |
|         var item = items[i];
 | |
|         item.name = suffix + "_" + item.name;
 | |
|     }
 | |
|     return true;
 | |
| }
 | |
| function replace( items , string , newString ){
 | |
|     for ( i = 0 ; i < items.length ; i ++ )
 | |
|     {
 | |
|         var item = items[i];
 | |
|         item.name = item.name.replace( string , newString );
 | |
|     }
 | |
|     return true;
 | |
| }
 | |
| function checkDuration( items , duration ){
 | |
|     for ( i = 0 ; i < items.length ; i ++ )
 | |
|     {
 | |
|         var item = items[i];
 | |
|         pTools.debug.log(item.duration);
 | |
|     }
 | |
| }
 | |
| function enforceDuration( items , duration ){
 | |
|     for ( i = 0 ; i < items.length ; i ++ )
 | |
|     {
 | |
|         var item = items[i];
 | |
|         item.duration = duration;
 | |
|     }
 | |
| }
 | |
| function fitToComp( layer ){
 | |
|     var orig_scale = layer.transform.scale.value;
 | |
|     var comp_width = layer.containingComp.width;
 | |
|     var comp_height = layer.containingComp.height;
 | |
|     var layer_width = layer.source.width;
 | |
|     var layer_height = layer.source.height;
 | |
|     
 | |
|     var new_scale = [ ( comp_width / layer_width ) * 100 , ( comp_height / layer_height ) * 100 ] ;
 | |
| 
 | |
|     layer.transform.scale.setValue( new_scale );
 | |
|     
 | |
| }
 | |
| function claritize( items ){
 | |
|     var orig_target_folder_name = "1920x1080@23.976";
 | |
|     var target_folder_name = "1280x720@59.97";
 | |
|     var w = 1280;
 | |
|     var h = 720;
 | |
|     var a = 1;
 | |
|     var r = 59.94;
 | |
|     target_folder = app.project.items.addFolder( target_folder_name );
 | |
|     orig_target_folder =  app.project.items.addFolder( orig_target_folder_name );
 | |
| 
 | |
|     for ( i = 0 ; i < items.length ; i ++ )
 | |
|     {
 | |
|         var item = items[i];
 | |
|         var new_comp = app.project.items.addComp(item.name,1280,720,1,item.duration+2,59.94);
 | |
|         new_comp.parentFolder = target_folder;
 | |
|         var new_layer = new_comp.layers.add(item);
 | |
|         new_layer.startTime = 1;
 | |
|         
 | |
|         item.parentFolder = orig_target_folder;
 | |
|         fitToComp( new_layer );
 | |
|         
 | |
|         //debug.log(item.duration);
 | |
|     }
 | |
| }
 | |
| function claritizeSame( items ){
 | |
|     var orig_target_folder_name = "1920x1080@23.976";
 | |
|     var target_folder_name = "1920x1080@59.94";
 | |
|     var w = 1920;
 | |
|     var h = 1080;
 | |
|     var a = 1;
 | |
|     var r = 59.94;
 | |
|     target_folder = app.project.items.addFolder( target_folder_name );
 | |
|     orig_target_folder =  app.project.items.addFolder( orig_target_folder_name );
 | |
| 
 | |
|     for ( i = 0 ; i < items.length ; i ++ )
 | |
|     {
 | |
|         var item = items[i];
 | |
|         var new_comp = app.project.items.addComp(item.name,w,h,1,item.duration,r);
 | |
|         new_comp.parentFolder = target_folder;
 | |
|         var new_layer = new_comp.layers.add(item);
 | |
|         //new_layer.startTime = 1;
 | |
|         
 | |
|         item.parentFolder = orig_target_folder;
 | |
|         fitToComp( new_layer );
 | |
|         
 | |
|         //debug.log(item.duration);
 | |
|     }
 | |
| }
 | |
| function makineizeProjectNames( items ){
 | |
|     var pcode = getProjectCode();
 | |
|     
 | |
|     for ( var i = 0 ; i < items.length ; i ++ )
 | |
|     {
 | |
|         var item = items[i];
 | |
|         var pcodeloc = item.name.search( pcode );
 | |
|         if( pcodeloc == -1 ){
 | |
|             var old_name = getCompNameNoRev( item );
 | |
|             //alert(getCompNameNoRev( item ));
 | |
|             var rev = pad( getCompRevision( item ) , 2 );
 | |
|             var new_name = pcode + "_[" + old_name + "]_" + rev;
 | |
|             item.name = new_name;
 | |
|         }
 | |
|     }
 | |
|     
 | |
| }
 | |
| function getCompNameNoRev( comp ){
 | |
|     var name = String( comp.name );
 | |
|     var exp = /\_[rv][0-9].*/i;
 | |
|     var matches = name.match( exp );
 | |
|     new_string = "";
 | |
|     var result =  name;
 | |
|     
 | |
|     try{
 | |
|         for ( i = 0 ; i < matches.length ; i ++ ){
 | |
|             split_name = name.split( matches[i]);
 | |
|             for ( j = 0 ; j < split_name.length ; j ++ ){
 | |
|                 new_string+=split_name[j];
 | |
|             }
 | |
|         }
 | |
|             result = new_string; 
 | |
|     }
 | |
|     catch(err){
 | |
|         
 | |
|     }
 | |
|     
 | |
|     
 | |
|     
 | |
|     return result;
 | |
| }
 | |
| function getCompRevision( comp ){
 | |
|     var name = String(comp.name);
 | |
|     var exp = /\_[rv][0-9].*/i;
 | |
|     var matches = name.match( exp );
 | |
|     var result = 0;
 | |
|     try{
 | |
|         
 | |
|         if ( matches.length > 0 )
 | |
|         {
 | |
|             var r = matches[0];
 | |
|             var rev = r.split("_");
 | |
|             result = rev[0]+"_"+rev[1];
 | |
|         }
 | |
|     }catch(err){
 | |
|     }
 | |
|     if( result != 0 ){
 | |
|         result = "r"+pad(parseInt(String(rev[1]).substr(1,rev[1].length)),2);
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|         result = "r00";
 | |
|     }
 | |
|     return result;
 | |
| }
 | |
| function getProjectCode(){
 | |
|     file = app.project.file
 | |
|     if ( file != null )
 | |
|     {
 | |
|         pcode = file.path.split("/")[3].split("_")[1];
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|         alert("Save your project first, dummy.")
 | |
|     }
 | |
|     
 | |
|     return pcode
 | |
| }
 | |
| function setRendersToProjectPath(){
 | |
|     var q = app.project.renderQueue;
 | |
|     //check the render queue item is not already rendered.
 | |
|     
 | |
|     for ( var i = 1 ; i <= q.numItems ; i ++ ){
 | |
|         item = q.item(i);
 | |
|         //3015 is QUEUED 
 | |
|         //3013 is NEEDS_OUTPUT
 | |
|         
 | |
|         if ( (item.status == 3015) || (item.status == 3013) ){
 | |
|             for ( var j = 1 ; j <= item.numOutputModules ; j ++ ){
 | |
|                 o_module = item.outputModule(j);
 | |
|                 var old_name = item.comp.name.replace(".","_");
 | |
|                 //alert(old_name);
 | |
|                 if ( o_module.file != null ){
 | |
|                     
 | |
|                     
 | |
|                     var new_path = getOutputBasePath();
 | |
|                     var new_folder = Folder( new_path );
 | |
|                     if ( !new_folder.exists ){
 | |
|                         new_folder.create();
 | |
|                     }
 | |
|                     alert(new_path + "/" + old_name)
 | |
|                     var new_file = new File( new_path + "/" + old_name );
 | |
|                     o_module.file = new_file ;
 | |
|                     //alert ( new_path );
 | |
|                     //o_module.file= new_file;
 | |
|                     //alert( o_module.file );
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 | |
| function getTodayTag(){
 | |
|     var today = new Date();
 | |
|     var month_component = pad(String(today.getMonth()+1),2);
 | |
|     var date_component = pad(today.getDate(),2);
 | |
|     var full_year_component = String(today.getFullYear())
 | |
|     var year_component = full_year_component.substr(full_year_component.length - 2,full_year_component.length );
 | |
|     var tag = month_component + date_component + year_component
 | |
|     return tag;
 | |
| }
 | |
| function getOutputBasePath(){
 | |
|     var file = app.project.file;
 | |
|     var file_path = String(app.project.file);
 | |
|     var gfx_output_base = "05_Graphics_Output";
 | |
|     var endtag_output_extra = "02_EndTags";
 | |
|     var scene_output_extra = "01_GFX_Scenes";
 | |
|     var vfx_output_base = "03_Composite_Outputs";
 | |
|     var vfx_output_base;
 | |
|     var gfx_string = "09_Graphics";
 | |
|     var vfx_string = "08_Composite";
 | |
|     var endtag_string = "EndTags";
 | |
|     
 | |
|     var search_gfx = file_path.search(gfx_string);
 | |
|     var search_vfx = file_path.search(vfx_string);
 | |
|     var search_endtag = file_path.search(endtag_string);
 | |
|     var base_path;
 | |
|     
 | |
|     if ( search_gfx != -1 ){
 | |
|         var base_path = file_path.substr(0,search_gfx+gfx_string.length)+"/"+gfx_output_base;
 | |
|         if ( search_endtag != -1 ){
 | |
|             base_path += "/" + endtag_output_extra;
 | |
|         }
 | |
|         base_path += "/" + scene_output_extra + "/" + getTodayTag();
 | |
|     }
 | |
|     
 | |
|     if( search_vfx != -1 ){
 | |
|         var base_path = file_path.substr(0,search_vfx+vfx_string.length)+"/"+vfx_output_base + "/" + getTodayTag();;
 | |
|     }
 | |
|     
 | |
|     return base_path;
 | |
| }
 | |
| function incrementCompRevs( items ){
 | |
|     for ( i = 0 ; i < items.length ; i ++ )
 | |
|     {
 | |
|         var item = items[i];
 | |
|         
 | |
|         
 | |
|         alert(getCompRevision( items[i] ));
 | |
|     }
 | |
|     return true; 
 | |
| }
 | |
| function reRoute( items , search_str , replace_str ){
 | |
|     for ( var i = 0 ; i < items.length ; i ++ ){
 | |
|         var item = items[i];
 | |
|         var new_file = new File ( String(item.file.path).replace( search_str , replace_str ) );
 | |
|         alert ( item.replace(new_file) );
 | |
|         //writeLn( String(item.file.path).replace( search_str , replace_str ));
 | |
|         //writeLn( String(item.file.path));
 | |
|     }    
 | |
| }
 | |
| function renderMarkers(){
 | |
| 	p = app.project;
 | |
| 	rq = p.renderQueue;
 | |
| 	rqi = rq.items;
 | |
| 	comp = p.activeItem;
 | |
| 	
 | |
| 	var myRenderNull = comp.layer("Render");
 | |
|     if ( myRenderNull == null ){
 | |
|         myRenderNull = app.project.activeItem.layers.addNull();
 | |
| 		myRenderNull.name = "Render";
 | |
| 		myRenderNull.inPoint = -1;
 | |
| 		myRenderNull.outPoint = -1;
 | |
| 		alert('Created "Render Stills" layer.\nAdd markers to this layer and run again to render stills.');
 | |
|     }	
 | |
| 	
 | |
| 	markers= myRenderNull.property("Marker");
 | |
| 	
 | |
| 	for ( var j = 1 ; j <= markers.numKeys ; j ++ ){
 | |
| 		i = rqi.add( comp );
 | |
| 		var destPath = i.outputModule(1).file.path;
 | |
| 		i.outputModule(1).applyTemplate("PNG+");
 | |
| 		var markerName = markers.keyValue(j).comment;
 | |
| 		i.timeSpanStart = markers.keyTime(j);
 | |
| 		i.timeSpanDuration = comp.frameDuration;
 | |
| 		
 | |
| 		var destName = comp.name.replace(" ","_");
 | |
| 		
 | |
| 		var destFrame =  markers.keyTime(j) / comp.frameDuration;
 | |
| 		if ( markerName == "" ){
 | |
| 			i.outputModule(1).file = new File( destPath + "/" + destName + "_Still_f" + "[####]" )
 | |
| 		}else{
 | |
| 			i.outputModule(1).file = new File( destPath + "/" + destName + "_Still" + "_f[####]_" + markerName )
 | |
| 		}
 | |
| 		//alert( i.outputModule(1).file );
 | |
| 		//i.outputModule(1).includeSourceXMP = true;
 | |
| 	rq.render();	
 | |
| 	}
 | |
| 	//alert(i.timeSpanStart);
 | |
| 	//alert(i.timeSpanDuration);
 | |
| 	
 | |
| }
 | |
| function getSelectedProjectItems (){
 | |
|     var items = [];
 | |
|     var p = app.project;
 | |
|     for ( var i = 1 ; i <= p.numItems ; i ++ ){
 | |
|         var item = p.item(i);
 | |
|         if ( item.selected ){
 | |
|             items.push(item);
 | |
|         }
 | |
|     }
 | |
|     return items;
 | |
| }
 | |
| function getAllItems( folderItem ){
 | |
| 	
 | |
| 	var items = [];
 | |
| 	var folders = [];
 | |
| 	
 | |
| 	for ( var i = 1 ; i <= folderItem.numItems ; i ++ ){
 | |
| 	var item = folderItem.item(i);
 | |
| 	
 | |
| 	if ( (item.typeName != "Folder") ){
 | |
| 			//if ( (isInArray( items ,item )) == false ){
 | |
| 				items.push( item );
 | |
| 			//}
 | |
| 		}else{
 | |
| 				var new_items = getItems(item);
 | |
| 				for ( var j = 0 ; j < new_items.length ; j ++ ){
 | |
| 					new_item = new_items[j];
 | |
| 					//if ( (isInArray ( new_item )) == false ){
 | |
| 						items.push ( new_item );
 | |
| 					//}
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 	return items
 | |
| }
 | |
| function flatten( items, root ){
 | |
| 	app.beginUndoGroup("Flatten Folder Item");
 | |
| 	for ( var i = 0; i < items.length ; i ++){
 | |
| 		item = items[i];
 | |
| 		item.parentFolder = root;
 | |
| 	}
 | |
| 	app.endUndoGroup();
 | |
| 	purgeEmptyFolders();
 | |
| 	return
 | |
| }
 | |
| function purgeEmptyFolders(){
 | |
| 	app.beginUndoGroup("Purge Empty Folders")
 | |
| 	var emptyFolders = [];
 | |
| 	var p = app.project;
 | |
| 	for ( var i = p.numItems ; i >= 1 ; i -- ){
 | |
| 		item = p.item(i);
 | |
| 		if ( item.typeName == "Folder" ){
 | |
| 			if ( item.numItems <= 0 ){
 | |
| 				item.remove();
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 	return
 | |
| 	app.endUndoGroup()
 | |
| }
 | |
| 
 | |
| 
 | |
| //reRoute( getSelectedProjectItems() , "MAkinE/Wells%20Fargo" , "Wells Fargo"  )
 | |
| //duplicateSuffix(getSelectedProjectItems (),"txtlss");
 | |
| //suffix(getSelectedProjectItems (),"5s");
 | |
| //replace(getSelectedProjectItems (),"00","0");
 | |
| //duplicateReplace(getSelectedProjectItems (),"next\_", "");
 | |
| //enforceDuration(getSelectedProjectItems (),5);
 | |
| //checkDuration(getSelectedProjectItems (),5)
 | |
| //claritizeSame(getSelectedProjectItems());
 | |
| //fitToComp( app.project.activeItem.layer(1) );
 | |
| //pTools.debug.log( app.project.file.path );
 | |
| //makineizeProjectNames( getSelectedProjectItems() );
 | |
| /*
 | |
| p = getSelectedProjectItems();
 | |
| for ( var i = 0 ; i < p.length ; i ++ ){
 | |
|  pTools.debug.log( getCompRevision( p[i] ) );
 | |
| }
 | |
| */
 | |
| //setRendersToProjectPath()
 | |
| //alert( getTodayTag() );
 | |
| //getOutputBasePath();
 | |
| //incrementCompRevs( getSelectedProjectItems() );
 | |
| 
 | |
| renderMarkers()
 | |
| 
 | |
| //alert(getSelectedProjectItems()[0].name)
 | |
| 
 | |
| //flatten( getAllItems( getSelectedProjectItems()[0] ) , getSelectedProjectItems()[0] );
 | |
| 
 |