+++ /dev/null
-make_home_video.pl -m -d <path to video dir>
+++ /dev/null
-/usr/bin/dvgrab --autosplit --timestamp --format dv2 --opendml --size 22000 home_video_
+++ /dev/null
-#!/bin/bash
-/usr/bin/emacs -fn 8x13 $* &
-
+++ /dev/null
-rn 's/\.00\.avi/-00_xvid2500\.avi/' *
--- /dev/null
+#!/usr/bin/perl
+
+use List::Util 'shuffle';
+
+my $dir = "/naspool/videos/HomeVideos";
+my $plsfile = "$dir/Random.pls";
+my $avifiles = "????/????-??-??.avi";
+
+chdir $dir || die "Couldn't change directory!\n";
+system "rm -f $plsfile";
+@files = `ls -1 $avifiles`;
+@shuffled = shuffle(@files);
+open (FILE, ">$plsfile") || die "Couldn't open $plsfile!\n";
+print FILE @shuffled;
+close (FILE);
+
# USAGE: make_home_videos.cmd <tapename>
# EXAMPLE: make_home_videos.cmd Dec06-Apr07
-SERVER="/mnt/server/videos/HomeVideos"
-MAKE_VIDEOS="/mnt/server/videos/bin/make_home_videos.pl"
+SERVER="/naspool/videos/HomeVideos"
+MAKE_VIDEOS="/naspool/videos/bin/make_home_videos.pl"
$MAKE_VIDEOS -e -c -m -p -a -n $*
echo "-> Rebooting the system in 10 seconds... Press CTRL-C to abort..."
sleep 10
echo "-> Rebooting now..."
+# chmod u+s /sbin/reboot if you can't run the below command without being root
/sbin/reboot
--- /dev/null
+#!/bin/bash
+# DESCRIPTION:
+# Wrapper script around make_home_videos.pl script that
+# facilitates copying over the daily_clips to another
+# linux server location, properly merging the clips
+# created with the existing clips and playlists on
+# the remote server.
+# USAGE: make_home_videos.cmd <tapename>
+# EXAMPLE: make_home_videos.cmd Dec06-Apr07
+
+SERVER="/naspool/videos/HomeVideos"
+MAKE_VIDEOS="/naspool/videos/bin/make_home_videos.pl"
+
+$MAKE_VIDEOS -e -m -p -a -n $*
+
+# Copy the daily clips over to the main file server
+pushd "$*/daily_clips" > /dev/null
+lastyear=""
+for i in `/bin/ls -1 *.avi`;
+do
+ filename=`echo "$i" | sed 's/.avi//g'`
+ year=`echo "$filename" | awk --field-separator - '{print $1}'`
+ month=`echo "$filename" | awk --field-separator - '{print $2}'`
+ day=`echo "$filename" | awk --field-separator - '{print $3}'`
+
+ # set lastyear if we haven't done so yet
+ if [[ -z "$lastyear" ]];
+ then
+ lastyear="$year"
+ fi
+
+ # if we have changed year directories, remake the playlists for lastyear
+ if [[ "$year" != "$lastyear" ]];
+ then
+ pushd "$SERVER/$lastyear" > /dev/null
+ $MAKE_VIDEOS -p -d .
+ popd > /dev/null
+ fi
+
+ # make the destination directory if it is missing
+ if [[ ! -d "$SERVER/$year" ]];
+ then
+ mkdir "$SERVER/$year"
+ fi
+
+ # don't overwrite existing filenames
+ basefilename="$filename"
+ num=0
+ while [[ -f "$SERVER/$year/$filename.avi" ]];
+ do
+ ((num++))
+ filename="$basefilename.$num"
+ done
+
+ echo "Copying $i to $SERVER/$year/$filename.avi"
+ cp "$i" "$SERVER/$year/$filename.avi"
+
+ lastyear=$year
+done
+
+# remake the playlists for year
+pushd "$SERVER/$year" > /dev/null
+$MAKE_VIDEOS -p -d .
+popd > /dev/null
+
+popd > /dev/null
+
# USAGE: make_home_videos.cmd <tapename>
# EXAMPLE: make_home_videos.cmd Dec06-Apr07
-SERVER="/mnt/server/videos/HomeVideos"
-MAKE_VIDEOS="/mnt/server/videos/bin/make_home_videos.pl"
+SERVER="/naspool/videos/HomeVideos"
+MAKE_VIDEOS="/naspool/videos/bin/make_home_videos.pl"
$MAKE_VIDEOS -e -c -m -p -a -n $*
# 2) mencoder : http://www.mplayerhq.hu/homepage/design7/dload.html
# 3) transcode : vi sources.list; deb ftp://ftp.nerim.net/debian-marillat sarge main
# apt-get install transcode
+# 4) avimerge : apt-get install transcode-utils
use Getopt::Std;
$merge_dir = "daily_clips";
$default_tape_name = "home_video";
$playlist_extension = "pls";
-$dvgrab = "/usr/local/bin/dvgrab";
+$dvgrab = "/usr/bin/dvgrab";
$mencoder = "/usr/bin/mencoder";
$mplayer = "/usr/bin/mplayer";
$avimerge = "/usr/bin/avimerge";
#$max_dv_clip_size_in_mb = "22000"; #avisplit still doesn't seem to do things right for large clips
# max_tape_grab_time=7200 Allows Max time of 2 hours to allow a tape to be dumped (good for 90 min tape)
# max_tape_grab_time=5400 Allows Max time of 1.5 hours to allow a tape to be dumped (good for 60 min tape)
-$max_tape_grab_time = 5400;
-$dvgrab_options = "--autosplit --timestamp --format dv2 --opendml --buffers 2048 --rewind";
+$max_tape_grab_time = 7200;
+#$dvgrab_options = "--autosplit --timestamp --format dv2 --opendml --buffers 2048 --rewind";
+#$dvgrab_options = "-autosplit -timestamp -format dv2 -opendml -buffers 2048 -rewind";
+$dvgrab_options = "-autosplit -timestamp -format dv2 -opendml -rewind";
$encode_options_pass1 = "-mc 0 -oac mp3lame -lameopts cbr:cbr=128 -ffourcc XVID -fps 29.97 -ovc lavc ";
$encode_options_pass1.= "-lavcopts vcodec=mpeg4:vhq:vbitrate=$bitrate:keyint=15:vpass=1 -vf pp=ci";
$encode_options_pass2 = "-mc 0 -oac mp3lame -lameopts cbr:cbr=128 -ffourcc XVID -fps 29.97 -ovc lavc ";
--- /dev/null
+#!/usr/bin/perl
+# Author: Alan J. Pippin
+# Description: Take a list of video files and create a single mkv video file from them
+
+# Pre-requisites:
+# mkvtoolnix - http://www.bunkus.org/videotools/mkvtoolnix/
+# ffmpeg
+
+###########################
+# Includes
+use File::Copy;
+use File::Basename;
+use Getopt::Std;
+use File::stat;
+use DateTime;
+use DateTime::Duration;
+use DateTime::Format::Duration;
+
+###########################
+# Configuration parameters
+my $mkvmerge=`which mkvmerge`; chomp($mkvmerge);
+my $ffmpeg=`which ffmpeg`; chomp($ffmpeg);
+my $tmpfile = `tempfile`; chomp($tmpfile);
+my $chapter_file = $tmpfile;
+my $input_file_options = "-S";
+my $output_file_options = "--chapters $chapter_file";
+
+###########################
+# Options
+getopts("st:o:i:h");
+
+if(! -x $mkvmerge) { die "-E- Unable to find required program: mkvmerge\n"; }
+if(! -x $ffmpeg) { die "-E- Unable to find required program: ffmpeg\n"; }
+if(! defined $opt_t) { &usage(); die "-E- Missing required title: -t <title>\n"; }
+if(! defined $opt_o) { &usage(); die "-E- Missing required argument output video names: -o <output.mkv>\n"; }
+if(! defined $opt_i) { &usage(); die "-E- Missing required argument input video names: -i <input,input,...>\n"; }
+
+sub usage {
+ print "usage: $0 -t <title> -o <output.mkv> -i <input,input,...>\n";
+ print " -t <title> Sets the general title for the output video file\n";
+ print " -o <output.mkv> Sets the name of the output mkv file\n";
+ print " -i <input,input,...> Sets the name of the input files to make into an mkv file\n";
+ print " -s Simulate mode. Don't actually make the video, but tell us what you will do\n";
+ print "\n";
+ return 1;
+}
+
+###########################
+# Helper Subroutines
+sub epoch_to_date {
+ my ($epoch) = @_;
+ my $mtime = DateTime->from_epoch(epoch => $epoch);
+ return sprintf("%4d",$mtime->year)."-".sprintf("%02d",$mtime->month)."-".sprintf("%02d",$mtime->day)." ".$mtime->hms;
+}
+
+###########################
+# MAIN
+
+# Turn the list of input videos into a hash with a value equal to the modification time in epoch seconds
+my %videos;
+foreach $video (split(/,/, $opt_i)) {
+ if(! -r "$video") { die "-E- Unable to read input video file: $video\n"; }
+ my $mtime_epoch = stat("$video")->mtime;
+ my $mdate = epoch_to_date($mtime_epoch);
+ $videos{$video} = $mtime_epoch;
+}
+
+# Create the chapters file for the mkv file.
+# Make each video file it's own chapter in the MKV file.
+# Name the chapter with the date and time the video clip was taken (modified date).
+print "-> Creating $opt_o with title '$opt_t' from the following video files in last modified date order:\n";
+open(CHAPTERS,">$chapter_file") || die "-E- Unable to create chapter file: $chapter_file\n";
+my $chapter_num = 0;
+my $prev_hour = 0;
+my $prev_min = 0;
+my $prev_sec = 0;
+my $new_duration = DateTime::Duration->new(years => 1900, hours => $prev_hour, minutes => $prev_min, seconds => $prev_sec);
+my $duration_format = DateTime::Format::Duration->new(pattern => '%H:%M:%S.%3N', normalize => 1);
+foreach my $video (sort{$videos{$a} <=> $videos{$b}} keys %videos) {
+ $chapter_num++;
+ my $hour = 0;
+ my $min = 5;
+ my $sec = 0;
+ my $mtime_epoch = stat("$video")->mtime;
+ my $mdate = epoch_to_date($mtime_epoch);
+ my $duration = `$ffmpeg -i "$video" 2>&1 | grep Duration`;
+ if($duration =~ /Duration: (\d+):(\d+):(\d+)\.(\d+)/) {
+ $hour = $1;
+ $min = $2;
+ $sec = "$3.$4";
+ }
+ my $start_time = $duration_format->format_duration($new_duration);
+ print "$mdate $hour:$min:$sec -> $video \n";
+ print CHAPTERS "CHAPTER".sprintf("%02d",$chapter_num)."=".$start_time."\n";
+ print CHAPTERS "CHAPTER".sprintf("%02d",$chapter_num)."NAME=".$mdate."\n";
+ my $dt = DateTime::Duration->new(years => 1900, hours => $hour, minutes => $min, seconds => $sec);
+ my $prev_dt = DateTime::Duration->new(years => 1900, hours => $prev_hour, minutes => $prev_min, seconds => $prev_sec);
+ $new_duration = $dt + $prev_dt;
+ $prev_hour = $hour; $prev_min = $min; $prev_sec = $sec;
+}
+close(CHAPTERS);
+print "\n-> Creating the following chapter file for this video:\n";
+$chapter_file_contents = `cat $chapter_file`;
+print "$chapter_file_contents\n";
+
+# Create the mkv video
+print "-> Creating the MKV video file '$opt_o'\n";
+
+my $cmd = "$mkvmerge --title \"$opt_t\" $output_file_options -o \"$opt_o\"";
+my $video_count = 0;
+foreach my $video (sort{$videos{$a} <=> $videos{$b}} keys %videos) {
+ if($video_count == 0) {
+ $cmd .= " $input_file_options \"$video\"";
+ } else {
+ $cmd .= " $input_file_options + \"$video\"";
+ }
+ $video_count++;
+}
+print "$cmd\n";
+if(! defined $opt_s) {
+ my $errno = system("$cmd");
+ if($errno > 0) { $errno = $errno - 255; }
+ if($errno > 1) { die "-E- mkvmerge encountered some errors with exit code $errno\n"; }
+}
+
+# Remove the temporary file
+if(-e "$tmpfile") { unlink "$tmpfile"; }
+
+###########################
+
--- /dev/null
+#!/usr/bin/perl
+
+use File::Copy;
+use File::Basename;
+use Getopt::Std;
+use File::stat;
+use Time::localtime;
+
+# Command line options
+getopts("h:tvs:");
+
+sub usage {
+ print "usage: $0 [-t] -s <srcpath>\n";
+ print " -s <srcpath> specify the path to search for videos to merge under\n";
+ print " -h <compute host> specify the remote compute host to submit the mkvmerge job to\n";
+ print " -v verbose mode; print extra information about what is being found/merged\n";
+ print " -t test mode; print what will happen, but don't do anything\n";
+ return 1;
+}
+if(defined $opt_h) { usage(); exit 1; }
+
+# Configuration parameters
+my $compute_host = "pippin.pippins.net";
+my $srcpathname = $opt_s;
+my $minage = "+10"; # Files must be older than X minutes to move
+my $owner = "ajp"; # The owner of the files after they are moved
+my $group = "pip"; # The group of the files after they are moved
+my $mode = "664"; # The mode to set on each file after they are moved
+my $make_mkv = "/naspool/videos/bin/make_mkv"; chomp($make_mkv);
+my $find_cmd = "find \"$srcpathname/\" -cmin $minage -iregex \".*\.mov\" -o -iregex \".*\.3gp\" -o -iregex \".*\.mp4\" -o -iregex \".*\.mts\"";
+
+# Sanity check
+if(! -x $make_mkv) { die "-E- Unable to find required script: make_mkv\n"; }
+if(! -d $srcpathname) { &usage; print "-E- Can't find srcpath: $srcpathname\n"; exit 1; }
+if(defined $opt_h) { $compute_host = $opt_h; }
+
+my %monthname2month = (
+ "Jan" => "01",
+ "Feb" => "02",
+ "Mar" => "03",
+ "Apr" => "04",
+ "May" => "05",
+ "Jun" => "06",
+ "Jul" => "07",
+ "Aug" => "08",
+ "Sep" => "09",
+ "Oct" => "10",
+ "Nov" => "11",
+ "Dec" => "12"
+ );
+
+my %month2monthname = (
+ "01" => "Jan",
+ "02" => "Feb",
+ "03" => "Mar",
+ "04" => "Apr",
+ "05" => "May",
+ "06" => "Jun",
+ "07" => "Jul",
+ "08" => "Aug",
+ "09" => "Sep",
+ "10" => "Oct",
+ "11" => "Nov",
+ "12" => "Dec"
+ );
+
+# Change directories to the srcpath to search for videos to merge
+print "-> Finding all videos under '$srcpathname' to merge by day\n";
+my %videos;
+chdir "$srcpathname";
+print "$find_cmd\n" if($opt_v);
+foreach $file (sort `$find_cmd`) {
+
+ chomp($file);
+ $srcdir = dirname($file);
+ $file = basename($file);
+ $srcfile = $file;
+ $ext = "mkv";
+
+ print "Found movie: srcdir: $srcdir srcfile: $srcfile ext: $ext\n" if($opt_v);
+
+ # Throw out files not in the current srcpath
+ if((! -f "$srcfile") && (! -f "$srcdir/$srcfile")) { next; }
+
+ # Make a note of the month, year, and day this video was taken (from the modification time of the file)
+ $date_taken = ctime(stat("$srcdir/$srcfile")->mtime);
+
+ # Get the date taken from the filename
+ if($srcfile =~ /^(\d+)-(\d+)-(\d+)/) {
+ $year = $1;
+ $month = $2;
+ $day = sprintf("%02d",$3);
+ $monthnum = $month;
+ $monthname = lc($month2monthname{$month});
+ }
+ # Get the date taken from the modification time
+ elsif($date_taken =~ /\S+\s+(\S+)\s+(\d+)\s+\S+\s+(\d+)/) {
+ $year = $3;
+ $month = $1;
+ $day = sprintf("%02d",$2);
+ $monthnum = $monthname2month{$month};
+ $monthname = lc($month2monthname{$month});
+ } else {
+ print "-E- Unable to parse year and month from this file: $srcdir/$srcfile\n";
+ next;
+ }
+
+ # We are ready to pick a destination folder to put the merged video in
+ $dstdir = $srcdir;
+ $dstfile = $dstdir . "/" . $year . "-" . $monthnum . "-" . $day;
+
+ # Check for duplicate filenames at the destination
+ $newfile = $dstfile . "." . "000";
+ if(-e "$newfile.$ext") {
+ foreach $i ('001' .. '999') {
+ $newfile = $dstfile . "." . $i;
+ if(! -e "$newfile.$ext") { last; }
+ }
+ $dstfile = $newfile;
+ }
+ $dstfile = "$newfile.$ext";
+
+ print " merging \"$srcdir/$srcfile\" into \"$dstfile\"\n";
+ push(@{$videos{"$dstfile"}}, "\"$srcdir/$srcfile\"");
+}
+
+foreach $video (sort keys %videos) {
+
+ my $videos = join(',', @{$videos{$video}});
+
+ # Only merge the videos if there is more than 1
+ my $num_videos = $#{$videos{$video}} + 1;
+ if($num_videos <= 1) { next; }
+
+ if($video =~ /(\d+)-(\d+)-(\d+)/) {
+ $year = $1;
+ $month = $2;
+ $day = sprintf("%02d",$3);
+ }
+
+ my $pwd = `pwd`; chomp($pwd);
+ my $cmd = "ssh $compute_host 'cd \"$pwd\"; $make_mkv -t \"HomeVideos: $year-$month-$day\" -o \"$video\" -i $videos'\n";
+ if(defined $opt_t) {
+ print "\n-> Creating \"$video\"\n";
+ print "$cmd\n";
+ foreach $video (@{$videos{$video}}) {
+ print("rm -f $video\n");
+ }
+ } else {
+ # Create the merged video
+ my $errno = system("$cmd");
+ if($errno > 0) { $errno = $errno - 255; }
+ if($errno) { die "-E- make_mkv encountered some errors with exit code $errno\n"; }
+ # Fix the permissions
+ system("chown $owner \"$video\"");
+ system("chgrp $group \"$video\"");
+ system("chmod $mode \"$video\"");
+ # Remove the individual video files
+ foreach $video (@{$videos{$video}}) {
+ system("rm -f $video");
+ }
+ }
+}
--- /dev/null
+#!/usr/bin/perl
+# transcode_mts-mpg.pl
+use File::Basename;
+@files = glob "*.MTS";
+
+foreach(@files)
+{
+ print "-> Encoding $_.MTS to $_.mpg\n";
+
+ # Find out if content is interlaced or not
+ $deint_option = "-deinterlace";
+ $interlaced = system('ffmpeg -i "$_.MTS" 2>&1 | grep -q "frame rate differs"');
+ if($interlaced != 0) {
+ print " Detected interlaced video content\n";
+ } else {
+ print " Detected progressive video content\n";
+ $deint_option = "";
+ }
+
+ # 2 pass encode the video to DVD compatible mpg
+ `ffmpeg -i $_ $deint_option -target ntsc-dvd -pass 1 $_.mpg`;
+ `rm $_.mpg`;
+ `ffmpeg -i $_ $deint_option -target ntsc-dvd -pass 2 $_.mpg`;
+
+}
--- /dev/null
+#!/usr/bin/perl
+
+use File::Copy;
+use File::Basename;
+use Getopt::Std;
+use File::stat;
+use Time::localtime;
+
+# Configuration parameters
+my $srcpathname = "/naspool/pictures/New Photos"; # Path to look for photos to move from
+my $dstpathname = "/naspool/videos/HomeVideos"; # Path to move the photos to
+my $merge_videos_by_day = "/naspool/videos/bin/merge_videos_by_day";
+my $minage = "+10"; # Files must be older than X minutes to move
+my $owner = "ajp"; # The owner of the files after they are moved
+my $group = "pip"; # The group of the files after they are moved
+my $mode = "664"; # The mode to set on each file after they are moved
+my $find_cmd = "find \"$srcpathname/\" -cmin $minage -a \\( -iregex \".*\.mov\" -o -iregex \".*\.3gp\" -o -iregex \".*\.mp4\" -o -iregex \".*\.mts\" -o -iregex \".*\.mkv\" \\)";
+
+# Sanity check
+if(! -d $srcpathname) { print "-E- Can't find srcpath: $srcpathname\n"; exit 1; }
+if(! -d $dstpathname) { print "-E- Can't find dstpath: $dstpathname\n"; exit 1; }
+if(! -x $merge_videos_by_day) { print "-E- Can't find required script: $merge_videos_by_day\n"; exit 1; }
+
+my %monthname2month = (
+ "Jan" => "01",
+ "Feb" => "02",
+ "Mar" => "03",
+ "Apr" => "04",
+ "May" => "05",
+ "Jun" => "06",
+ "Jul" => "07",
+ "Aug" => "08",
+ "Sep" => "09",
+ "Oct" => "10",
+ "Nov" => "11",
+ "Dec" => "12"
+ );
+
+my %month2monthname = (
+ "01" => "Jan",
+ "02" => "Feb",
+ "03" => "Mar",
+ "04" => "Apr",
+ "05" => "May",
+ "06" => "Jun",
+ "07" => "Jul",
+ "08" => "Aug",
+ "09" => "Sep",
+ "10" => "Oct",
+ "11" => "Nov",
+ "12" => "Dec"
+ );
+
+getopts("htv");
+
+sub usage {
+ print "usage: $0 [-v] [-t]\n";
+ print " -v = verbose; print file being moved (to)\n";
+ print " -t = test; print what will happen, but don't do anything\n";
+ return 1;
+}
+
+sub is_folder_empty {
+ my $dirname = shift;
+ opendir(my $dh, $dirname) or die "Not a directory";
+ return scalar(grep { $_ ne "." && $_ ne ".." } readdir($dh)) == 0;
+}
+
+if(defined $opt_h) { usage(); exit 1; }
+
+# Only proceed if there are video files to organize
+$video_files_found=`$find_cmd`;
+if(!$video_files_found) { exit 0; }
+
+# Only one instance of this script running at a time
+use File::Pid;
+my $pidfile = File::Pid->new({file => "/tmp/organize_videos.pid"});
+exit if $pidfile->running();
+$pidfile->write();
+
+# Print the date
+system("date");
+
+# Merge videos prior to copying them over to the destination path
+my $errno = 0;
+if(defined $opt_t) {
+ $errno=system("$merge_videos_by_day -s \"$srcpathname\" -t");
+} else {
+ $errno=system("$merge_videos_by_day -s \"$srcpathname\"");
+}
+if($errno > 0) { $errno = $errno - 255; }
+if($errno) { die "-E- $merge_videos_by_day encountered some errors with exit code $errno\n"; }
+
+# Copy the videos over to the destination path
+chdir "$srcpathname";
+print "$find_cmd\n" if($opt_v);
+foreach $file (`$find_cmd`) {
+
+ chomp($file);
+ $srcdir = dirname($file);
+ $file = basename($file);
+ $srcfile = $file;
+ $ext = $file; $ext =~ s/.*\.(\S+)$/$1/; $ext = lc($ext);
+
+ print "Found movie: srcdir: $srcdir srcfile: $srcfile ext: $ext\n" if($opt_v);
+
+ # Throw out files not in the current srcpath
+ if((! -f "$srcfile") && (! -f "$srcdir/$srcfile")) { next; }
+
+ # Change all spaces to underscores in the filename
+ #$srcfile =~ s/ /_/g;
+
+ # Make a note of the month, year, and day this video was taken (from the modification time of the file)
+ $date_taken = ctime(stat("$srcdir/$srcfile")->mtime);
+
+ # Get the date taken from the filename
+ if($srcfile =~ /^(\d+)-(\d+)-(\d+)/) {
+ $year = $1;
+ $month = $2;
+ $day = sprintf("%02d",$3);
+ $monthnum = $month;
+ $monthname = lc($month2monthname{$month});
+ }
+ # Get the date taken from the modification time
+ elsif($date_taken =~ /\S+\s+(\S+)\s+(\d+)\s+\S+\s+(\d+)/) {
+ $year = $3;
+ $month = $1;
+ $day = sprintf("%02d",$2);
+ $monthnum = $monthname2month{$month};
+ $monthname = lc($month2monthname{$month});
+ } else {
+ print "-E- Unable to parse year and month from this file: $srcdir/$srcfile\n";
+ next;
+ }
+
+ # We are ready to pick a destination folder to put the picture in
+ $dstdir = $dstpathname . "/" . $year;
+ $dstfile = $dstdir . "/" . $year . "-" . $monthnum . "-" . $day;
+
+ # Check for duplicate filenames at the destination
+ $newfile = $dstfile . "." . "000";
+ if(-e "$newfile.$ext") {
+ foreach $i ('001' .. '999') {
+ $newfile = $dstfile . "." . $i;
+ if(! -e "$newfile.$ext") { last; }
+ }
+ $dstfile = $newfile;
+ }
+ $dstfile = "$newfile.$ext";
+
+ if(defined $opt_t) {
+ print "-> Moving \"$srcdir/$srcfile\" to \"$dstfile\"\n";
+ } else {
+ # Make sure the destination directories exist
+ $errno=system("mkdir -p \"$dstdir\"");
+ if($errno) { print "-E- Error creating dstdir: $dstdir\n"; next; }
+ # Perform the move operation from $srcdir/$srcfile -> $dstfile
+ if($opt_v) { print "-> Moving \"$srcdir/$srcfile\" to \"$dstfile\"\n"; }
+ # Make sure the dstfile doesn't exist, if it does, don't do the move
+ if(! -f "$dstfile") {
+ $errno=system("mv \"$srcdir/$srcfile\" \"$dstfile\" 2>/dev/null");
+ if($errno) { print "-E- Error moving srcfile to dstfile: $srcdir/$srcfile -> $dstfile\n"; next; }
+ } else {
+ if($opt_v) { print "-> Skipping \"$srcdir/$srcfile\". Destfile \"$dstfile\" already exists.\n"; }
+ }
+ # Fix the permissions
+ system("chown $owner \"$dstfile\"");
+ system("chgrp $group \"$dstfile\"");
+ system("chmod $mode \"$dstfile\"");
+ }
+
+ # Check to see if there is an empty sub directory to remove
+ if(($srcdir ne $srcpathname) && ($srcpathname ne ".")) {
+ if(is_folder_empty($srcdir)) {
+ print "-> Subdir detected for videos ($srcdir != $srcpathname)\n" if($opt_v);
+ if(! defined $opt_t) {
+ $tmpdir=`tempfile`;
+ system("rm $tmpdir");
+ system("mv \"$srcdir\" $tmpdir > /dev/null 2>/dev/null");
+ print "-> Moved empty subdir $srcdir to $tmpdir\n" if($opt_v);
+ }
+ }
+ }
+}
+
+$pidfile->remove();
+
+print "\n\n";
+++ /dev/null
-#!/usr/bin/perl
-
-$host = `hostname`; chomp($host);
-%hostaliases = (
- "hpesajp" => "hp",
- "pippin" => "pippin",
- );
-$pwd = $ENV{PWD};
-
-@aliases = (
- "/tmp_mnt/auto=>",
- "$ENV{HOME}=>~",
- "/net/=>",
- "/home/=>/~",
- );
-
-$host = $hostaliases{$host} if defined $hostaliases{$host};
-foreach $alias (@aliases) {
- @alias = split(/=>/, $alias);
- if ( $alias[0] ne "" ) {
- $pwd =~ s/$alias[0]/$alias[1]/;
- }
-}
-if ($pwd =~ /^(~)?(.+)(\/.*?\/.*?\/.*)/) {
- @prec = split(/\//, $2);
- $pwd = "$1($#prec)$3" if $#prec;
-}
-
-while ($pwd =~ /[\/]+([^\/]{13,})/) {
- $segment = $oldseg = $1;
- $segment =~ s/^(.{4}).*?(.{5})$/$1\.\.\.$2/;
- $pwd =~ s/$oldseg/$segment/;
-}
-$whoami = `whoami`;
-chomp( $whoami );
-if ( $whoami eq "root" ) {
- $user = "\\[\e[41m\\]ROOT\\[\e[49m\\]:";
-} elsif( $whoami ne "ajp" ) {
- $user = "\\[\e[41m\\]$whoami\\[\e[49m\\]@";
-}
-
-#Colors
-if ( $ENV{COLOR_PROMPT} ne "no" )
-{
- $host = "\\[\e[32m\\]$host\\[\e[39m\\]" if $host;
- $pwd = "\\[\e[36m\\]$pwd\\[\e[39m\\]";
-}
-
-print "$user$host:$pwd> ";
-