Merge branch 'master' of https://github.com/jorgevasquezp/my_scripts
This commit is contained in:
+2
-4
@@ -4,7 +4,5 @@
|
|||||||
#wacom_id="Wacom Intuos Pro M Pen stylus"
|
#wacom_id="Wacom Intuos Pro M Pen stylus"
|
||||||
#wacom_id=$(xsetwacom --list devices | grep stylus | grep -o [0-9]. | sed 's/\t//')
|
#wacom_id=$(xsetwacom --list devices | grep stylus | grep -o [0-9]. | sed 's/\t//')
|
||||||
wacom_id=$(xsetwacom --list devices | grep stylus | grep 'id\: [0-9].' -o | grep [0-9]. -o)
|
wacom_id=$(xsetwacom --list devices | grep stylus | grep 'id\: [0-9].' -o | grep [0-9]. -o)
|
||||||
xsetwacom --set "$wacom_id" button 2 3
|
xsetwacom --set "$(($wacom_id + 0))" button 2 3
|
||||||
xsetwacom --set "$wacom_id" button 3 2
|
xsetwacom --set "$(($wacom_id + 0))" button 3 2
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Executable
+7
@@ -0,0 +1,7 @@
|
|||||||
|
#/usr/bin/bash
|
||||||
|
for i;
|
||||||
|
do
|
||||||
|
link=$(curl $i | grep -o --color=auto 'http[^"]*\=view' | sed 's,\\,,g');
|
||||||
|
wget $link;
|
||||||
|
done
|
||||||
|
for i in *mp4*; do mv $i ${i%\?*}; done
|
||||||
Executable
+29
@@ -0,0 +1,29 @@
|
|||||||
|
d=Detailed;
|
||||||
|
s=Simple;
|
||||||
|
bg_color=#77A6E4
|
||||||
|
|
||||||
|
for i in $(ls $d)
|
||||||
|
do
|
||||||
|
new_image=./"${i%.*}.ppm"
|
||||||
|
new_simple_image=./"${i%.*}_simple.ppm"
|
||||||
|
convert ./$d/$i[0] -background $bg_color -flatten $new_image;
|
||||||
|
convert ./$s/${i%.*}_simple.psd[0] -background $bg_color -flatten $new_simple_image;
|
||||||
|
sidebyside=./"sidebyside_"${i%.*}.ppm
|
||||||
|
grid=$(basename $(pwd))".jpg"
|
||||||
|
montage -background "#77A6E4" -label "\n%t" -pointsize 10 -tile 1x2 -geometry 100 -geometry +0+0 -border 0 $new_image $new_simple_image $sidebyside
|
||||||
|
rm $new_image
|
||||||
|
rm $new_simple_image
|
||||||
|
done
|
||||||
|
|
||||||
|
montage -background "#77A6E4" -tile 10x10 -geometry +15+5 -border 1 sidebyside*ppm $grid
|
||||||
|
rm *sidebyside*
|
||||||
|
|
||||||
|
#for i in {Detailed,Simple};
|
||||||
|
#do
|
||||||
|
#for j in $(ls $i)
|
||||||
|
#do
|
||||||
|
#convert ./$i/$j[0] -background "#77A6E4" -flatten ./"${j%.*}.ppm";
|
||||||
|
#done
|
||||||
|
#make_grid.sh *ppm $(basename $(pwd))"$i.jpg";
|
||||||
|
#rm *ppm
|
||||||
|
#done
|
||||||
+3
-1
@@ -7,7 +7,9 @@ filename=${@: -1}
|
|||||||
if [ -f $filename ]; then
|
if [ -f $filename ]; then
|
||||||
echo "Output $filename already exists."
|
echo "Output $filename already exists."
|
||||||
else
|
else
|
||||||
montage -label "\n%t" -pointsize 14 -tile 3x6 -geometry 550 -geometry +25+15 -border 1 $files $filename
|
#montage -label "\n%t" -pointsize 14 -tile 3x6 -geometry 550 -geometry +25+15 -border 1 $files $filename
|
||||||
|
#montage -background "#77A6E4" -label "\n%t" -pointsize 12 -tile 10x6 -geometry 120 -geometry +8+4 -border 1 $files $filename
|
||||||
|
montage -background "#77A6E4" -label "\n%t" -pointsize 12 -tile 10x6 -geometry 120 -geometry +8+4 -border 0 $files $filename
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Executable
+5
@@ -0,0 +1,5 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
TODAY_FOLDER=$(date +"%m%d%y")
|
||||||
|
if [ ! -d "$TODAY_FOLDER" ]; then
|
||||||
|
mkdir "$TODAY_FOLDER"
|
||||||
|
fi
|
||||||
+22
-4
@@ -1,8 +1,26 @@
|
|||||||
|
format=bestvideo+bestaudio
|
||||||
|
format=22
|
||||||
|
while getopts ":a" opt; do
|
||||||
|
case $opt in
|
||||||
|
a)
|
||||||
|
format=bestaudio
|
||||||
|
;;
|
||||||
|
\?)
|
||||||
|
echo "Invalid option: -$OPTARG" >&2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
export IFS=$'\n';
|
export IFS=$'\n';
|
||||||
for i;
|
for i;
|
||||||
do
|
do
|
||||||
#youtube-dl -o "%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" -f bestaudio "$i"
|
#Audio-->
|
||||||
youtube-dl -o "%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" -f bestvideo+bestaudio "$i"
|
youtube-dl -x --audio-format vorbis --add-metadata --xattrs --embed-subs --embed-thumbnail --all-subs -o "%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" -i -f bestaudio --audio-quality 192k "$i"
|
||||||
|
#youtube-dl --xattrs --embed-subs --embed-thumbnail --all-subs -o "%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" -i -f bestaudio "$i"
|
||||||
|
#youtube-dl -o "%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" -f $a "$i"
|
||||||
|
#youtube-dl --add-metadata --xattrs --embed-subs --embed-thumbnail --all-subs -o "%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" -i -f bestvideo+bestaudio "$i"
|
||||||
|
#youtube-dl --add-metadata --xattrs --embed-subs --all-subs -o "%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" -f bestvideo+bestaudio "$i"
|
||||||
|
#VIDEO-->
|
||||||
|
#youtube-dl --add-metadata --xattrs --embed-subs --all-subs -o "%(playlist)s/%(playlist_index)s - %(title)s - %(format)s.%(ext)s" -i -f $format "$i"
|
||||||
|
|
||||||
done;
|
done;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Regular → Executable
File diff suppressed because one or more lines are too long
Regular → Executable
Regular → Executable
+48
-1
@@ -1 +1,48 @@
|
|||||||
app.beginUndoGroup("ReplaceAllFiles");␍var project = app.project;␍var new_path =prompt("Enter new path for footage:","/","New Path");␍␍function getFootageItems()␍{␍ footageItems =[];␍ for ( var i = 1 ; i <= project.items.length ; i ++ )␍ {␍ footageItem = project.items[i];␍ if ( footageItem.typeName == "Footage" && footageItem.file != null )␍ {␍ footageItems.push(footageItem);␍ }␍ }␍ return footageItems;␍}␍function getLastFolder( file_path )␍{␍ tree = file_path.split("/");␍ lastFolder = tree[tree.length-1];␍ return lastFolder␍}␍function replaceFiles( footageItems, path )␍{␍ seq_ptn = new RegExp("\[[0-9\-].*\]","g");␍␍ for ( var i = 0 ; i < footageItems.length ; i ++ )␍ {␍ var footageItem = footageItems[i];␍ if ( footageItem.mainSource.isStill == true || footageItem.name.match ( seq_ptn ) == null ){␍ footageItem.replace( File( new_path + footageItem.file.name ) );␍ }␍ else␍ {␍ footageItem.replaceWithSequence( File( new_path + getLastFolder( footageItem.file.path ) +"/"+ footageItem.file.name ), false );␍ //alert( new_path + footageItem.file.name );␍ //alert( new_path + getLastFolder( footageItem.file.path ) +"/"+ footageItem.file.name );␍ }␍ writeLn("Replacing :" +footageItem.file.name );␍ clearOutput();␍ }␍ writeLn("Booyakasha!");␍}␍␍clearOutput();␍replaceFiles( getFootageItems() , new_path );␍app.endUndoGroup();
|
app.beginUndoGroup("ReplaceAllFiles");
|
||||||
|
var project = app.project;
|
||||||
|
var new_path =prompt("Enter new path for footage:","/","New Path");
|
||||||
|
|
||||||
|
function getFootageItems()
|
||||||
|
{
|
||||||
|
footageItems =[];
|
||||||
|
for ( var i = 1 ; i <= project.items.length ; i ++ )
|
||||||
|
{
|
||||||
|
footageItem = project.items[i];
|
||||||
|
if ( footageItem.typeName == "Footage" && footageItem.file != null )
|
||||||
|
{
|
||||||
|
footageItems.push(footageItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return footageItems;
|
||||||
|
}
|
||||||
|
function getLastFolder( file_path )
|
||||||
|
{
|
||||||
|
tree = file_path.split("/");
|
||||||
|
lastFolder = tree[tree.length-1];
|
||||||
|
return lastFolder
|
||||||
|
}
|
||||||
|
function replaceFiles( footageItems, path )
|
||||||
|
{
|
||||||
|
seq_ptn = new RegExp("\[[0-9\-].*\]","g");
|
||||||
|
|
||||||
|
for ( var i = 0 ; i < footageItems.length ; i ++ )
|
||||||
|
{
|
||||||
|
var footageItem = footageItems[i];
|
||||||
|
if ( footageItem.mainSource.isStill == true || footageItem.name.match ( seq_ptn ) == null ){
|
||||||
|
footageItem.replace( File( new_path + footageItem.file.name ) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
footageItem.replaceWithSequence( File( new_path + getLastFolder( footageItem.file.path ) +"/"+ footageItem.file.name ), false );
|
||||||
|
//alert( new_path + footageItem.file.name );
|
||||||
|
//alert( new_path + getLastFolder( footageItem.file.path ) +"/"+ footageItem.file.name );
|
||||||
|
}
|
||||||
|
writeLn("Replacing :" +footageItem.file.name );
|
||||||
|
clearOutput();
|
||||||
|
}
|
||||||
|
writeLn("Booyakasha!");
|
||||||
|
}
|
||||||
|
|
||||||
|
clearOutput();
|
||||||
|
replaceFiles( getFootageItems() , new_path );
|
||||||
|
app.endUndoGroup();
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
comp = app.project.activeItem;
|
||||||
|
function selectLayersByType(){
|
||||||
|
layers = comp.layers;
|
||||||
|
for ( var i = 1 ; i <= layers.length ; i++ ){
|
||||||
|
layer = layers[i];
|
||||||
|
if ( layer.threeDLayer == true ){
|
||||||
|
layers[i].selected = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
selectLayersByType();
|
||||||
|
|
||||||
|
//alert( comp.selectedLayers[0].threeDLayer );
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
proj = app.project.activeItem;
|
||||||
|
layers = proj.selectedLayers;
|
||||||
|
search_string = 'comp("##DSDC036_Colors##").layer("Colors").effect(" ';
|
||||||
|
replace_string = 'comp("##DSDC036_Colors##").layer("';
|
||||||
|
|
||||||
|
|
||||||
|
for ( var i = 0; i < layers.length ; i ++ ){
|
||||||
|
var layer = layers[i];
|
||||||
|
var properties = layer.selectedProperties;
|
||||||
|
for ( var j = 0 ; j < layer.selectedProperties.length ; j ++ ){
|
||||||
|
var property = properties[j];
|
||||||
|
if ( property.canSetExpression ){
|
||||||
|
property.expression = property.expression.replace(search_string,replace_string);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
Regular → Executable
+111
-2
@@ -349,14 +349,117 @@ function reRoute( items , search_str , replace_str ){
|
|||||||
//writeLn( String(item.file.path));
|
//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" )
|
//reRoute( getSelectedProjectItems() , "MAkinE/Wells%20Fargo" , "Wells Fargo" )
|
||||||
//duplicateSuffix(getSelectedProjectItems (),"txtlss");
|
//duplicateSuffix(getSelectedProjectItems (),"txtlss");
|
||||||
//suffix(getSelectedProjectItems (),"5s");
|
//suffix(getSelectedProjectItems (),"5s");
|
||||||
//replace(getSelectedProjectItems (),"00","0");
|
//replace(getSelectedProjectItems (),"00","0");
|
||||||
//duplicateReplace(getSelectedProjectItems (),"next\_", "");
|
//duplicateReplace(getSelectedProjectItems (),"next\_", "");
|
||||||
//enforceDuration(getSelectedProjectItems (),9.23);
|
//enforceDuration(getSelectedProjectItems (),5);
|
||||||
//checkDuration(getSelectedProjectItems (),5)
|
//checkDuration(getSelectedProjectItems (),5)
|
||||||
claritizeSame(getSelectedProjectItems());
|
//claritizeSame(getSelectedProjectItems());
|
||||||
//fitToComp( app.project.activeItem.layer(1) );
|
//fitToComp( app.project.activeItem.layer(1) );
|
||||||
//pTools.debug.log( app.project.file.path );
|
//pTools.debug.log( app.project.file.path );
|
||||||
//makineizeProjectNames( getSelectedProjectItems() );
|
//makineizeProjectNames( getSelectedProjectItems() );
|
||||||
@@ -371,3 +474,9 @@ for ( var i = 0 ; i < p.length ; i ++ ){
|
|||||||
//getOutputBasePath();
|
//getOutputBasePath();
|
||||||
//incrementCompRevs( getSelectedProjectItems() );
|
//incrementCompRevs( getSelectedProjectItems() );
|
||||||
|
|
||||||
|
renderMarkers()
|
||||||
|
|
||||||
|
//alert(getSelectedProjectItems()[0].name)
|
||||||
|
|
||||||
|
//flatten( getAllItems( getSelectedProjectItems()[0] ) , getSelectedProjectItems()[0] );
|
||||||
|
|
||||||
|
|||||||
Regular → Executable
+33
-1
@@ -1 +1,33 @@
|
|||||||
//Walk the items.␍search_string = "Long";␍project_items = app.project.items␍for ( var i = 1; i <= project_items.length ; i ++)␍ {␍ var item = project_items[i];␍ if( item.typeName == "Composition" )␍ {␍ var comp = item;␍ //alert( comp.name );␍ var comp = item;␍ for ( var j = 1 ; j <= comp.numLayers ; j ++ )␍ {␍ var layer = comp.layer(j);␍ if ( layer.matchName == "ADBE AV Layer") //Only go into layers... not cameras and lights.␍ {␍ var effects = layer.property("Effects");␍ //alert( comp.name + " , " + layer.name );␍ for ( var k = 1 ; k <= effects.numProperties ; k ++ )␍ {␍ var effect = effects.property(k);␍ if ( effect.name.search(search_string) != -1 )␍ {␍ alert()␍ layer.comment = "Contains " + effect.name + " layer.";␍ comp.comment = "Contains " + effect.name + " layer.";␍ }␍ //alert( comp.name + " , " + layer.name + " , " + effect.name );␍ }␍ }␍ } ␍ }␍ }␍
|
//Walk the items.
|
||||||
|
search_string = "uni.";
|
||||||
|
project_items = app.project.items
|
||||||
|
for ( var i = 1; i <= project_items.length ; i ++)
|
||||||
|
{
|
||||||
|
var item = project_items[i];
|
||||||
|
if( item.typeName == "Composition" )
|
||||||
|
{
|
||||||
|
var comp = item;
|
||||||
|
//alert( comp.name );
|
||||||
|
var comp = item;
|
||||||
|
for ( var j = 1 ; j <= comp.numLayers ; j ++ )
|
||||||
|
{
|
||||||
|
var layer = comp.layer(j);
|
||||||
|
if ( layer.matchName == "ADBE AV Layer") //Only go into layers... not cameras and lights.
|
||||||
|
{
|
||||||
|
var effects = layer.property("Effects");
|
||||||
|
//alert( comp.name + " , " + layer.name );
|
||||||
|
for ( var k = 1 ; k <= effects.numProperties ; k ++ )
|
||||||
|
{
|
||||||
|
var effect = effects.property(k);
|
||||||
|
if ( effect.name.search(search_string) != -1 )
|
||||||
|
{
|
||||||
|
//alert()
|
||||||
|
layer.comment = "Contains " + effect.name + " layer.";
|
||||||
|
comp.comment = "Contains " + effect.name + " layer.";
|
||||||
|
}
|
||||||
|
//alert( comp.name + " , " + layer.name + " , " + effect.name );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,77 @@
|
|||||||
|
/*
|
||||||
|
function isInArray( array, value ){
|
||||||
|
result = false
|
||||||
|
for ( var i = 0 ; i < array.length ; i ++ ){
|
||||||
|
if ( array[i] == value ){
|
||||||
|
result = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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 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 = getAllItems(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 Selected Folder Contents")
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
app.endUndoGroup()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
flatten( getAllItems( getSelectedProjectItems()[0] ) , getSelectedProjectItems()[0] );
|
||||||
|
alert("You're welcome ;-) ");
|
||||||
Regular → Executable
Reference in New Issue
Block a user