Fixed up scripts to support importing videos from phones
[videoscripts/.git] / merge_videos_by_day
index 7179746cea631fd16daf9072326a5947834bfaa1..1a153b00e63ad4bfed95eeb85838666cc9d22b27 100755 (executable)
@@ -84,11 +84,15 @@ foreach $file (sort `$find_cmd`) {
     $srcext = "";
     if($srcfile =~ /\.(\w+)$/) { $srcext = $1; }
     $ext = "mkv";
-    
-    print "Found movie: srcdir: $srcdir srcfile: $srcfile srcext: $srcext dstext: $ext\n" if($opt_v);
 
     # Throw out files not in the current srcpath
     if((! -f "$srcfile") && (! -f "$srcdir/$srcfile")) { next; }
+
+    # Throw out encoded files left over from a previous run
+    print "srcfile: $srcfile\n";
+    if($srcfile =~ /.hb.mp4/) { next; }
+
+    print "Found movie: srcdir: $srcdir srcfile: $srcfile srcext: $srcext dstext: $ext\n" if($opt_v);
             
     # 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);
@@ -122,7 +126,7 @@ foreach $file (sort `$find_cmd`) {
        $month = $1;
        $day = sprintf("%02d",$2);
        $monthnum = $monthname2month{$month};
-       $monthname = lc($month2monthname{$month});
+       $monthname = lc($month);
     } else {
        print "-E- Unable to parse year and month from this file: $srcdir/$srcfile\n";
        next;
@@ -150,35 +154,48 @@ foreach $file (sort `$find_cmd`) {
 }
 
 # Check for duplicate filenames in the dstfiles being created for other exts
+my $last_dstnum = 0;
+my $changed_dst = 0;
 foreach $ext (sort keys %videos) {
-    foreach $video (sort keys %{$videos{$ext}}) {      
+    #print "checking: $ext\n";
+    foreach $video (sort keys %{$videos{$ext}}) {
+       #print "checking: $ext $video\n";
        # Make sure this video name is not in use as a destination for any other ext
        foreach $checkext (sort keys %videos) {
+           #print "checking: $ext $video $checkext\n";
            if($checkext eq $ext) { next; }
            foreach $checkvideo (sort keys %{$videos{$checkext}}) {
+               #print "checking: $ext $video $checkext $checkvideo\n";
                if("$video" eq "$checkvideo") {
                    if($video =~ /(.*?)\.(\d+)\.(\w+)$/) {
                        $dstfile = $1;
                        $dstnum = $2;
                        $dstext = $3;
                    }
-                   foreach $i ($dstnum .. '999') {
+                   foreach $i ($last_dstnum .. '999') {
+                       $last_dstnum = $i + 1;
                        $newfile = $dstfile . "." . sprintf("%03d",$i);
                        if("$video" ne "$newfile.$dstext") { last; }
                    }
                    $videos{$ext}{"$newfile.$dstext"} = $videos{$ext}{$video};
+                   #print "for ext $ext changed destination to: $newfile.$dstext: $videos{$ext}{$video};\n";
                    delete $videos{$ext}{$video};
+                   $changed_dst = 1;
+                   last;
                }
            }
+           if($changed_dst) { last; }
        }
+       if($changed_dst) { last; }
     }
+    $changed_dst = 0;
 }
 
 # Tell the user which videos we are going to merge
 foreach $ext (sort keys %videos) {
     foreach $video (sort keys %{$videos{$ext}}) {
        foreach $srcfile (@{$videos{$ext}{$video}}) { 
-           print "   merging $srcfile into \"$video\"\n";
+           print "   merging $ext $srcfile into \"$video\"\n";
        }
     }
 }
@@ -202,6 +219,7 @@ foreach $ext (sort keys %videos) {
        $cmd .= "$make_mkv -t \"$video_title_prefix $year-$month-$day\" -o \"$video\" -i $videos";
        if($requantize_input_video) { $cmd .= ' -q'; }
        if($recompress_input_video) { $cmd .= ' -z'; }
+       if($opt_v) { $cmd .= ' -v'; }
        if($use_compute_host) { $cmd .= "'"; }
        if(defined $opt_t) {
            # Print what will be done, but don't actually do it
@@ -224,14 +242,17 @@ foreach $ext (sort keys %videos) {
            }
        } else {
            # Create the merged video
+           print "$ext: $cmd" if($opt_v);
            my $errno = system("$cmd");
            $errno = $errno >> 8;
            if($errno) { die "-E- make_mkv encountered some errors with exit code $errno\n"; }
            system("ls -l \"$srcpathname/\" > /dev/null"); # Make sure the video file is there
            # Fix the permissions
-           system("chown $owner \"$video\"");
-           system("chgrp $group \"$video\"");
-           system("chmod $mode \"$video\"");
+           if(-f "$video") { 
+               system("chown $owner \"$video\"");
+               system("chgrp $group \"$video\"");
+               system("chmod $mode \"$video\"");
+           }
            # Remove the individual video files
            if(!defined $opt_k) { 
                foreach $srcvideo (@{$videos{$ext}{$video}}) {