Browse Source

Allow partial renames

Zachary Kotlarek 11 years ago
parent
commit
6891327ba9
1 changed files with 44 additions and 29 deletions
  1. 44 29
      yt/subscribe.pl

+ 44 - 29
yt/subscribe.pl

@@ -1001,45 +1001,60 @@ sub renameVideo($$$$$$) {
 	}
 
 	# General sanity checks
-	if (!defined($video) || !defined($suffix) || !defined($nfo) || !defined($id) || !defined($season) || !defined($episode)) {
+	if (!defined($id) || !defined($season) || !defined($episode)) {
 		die("Invalid call to renameVideo()\n\t" . $video . "\n\t" . $suffix . "\n\t" . $nfo . "\n\t" . $id . "\n\t" . $season . "\n\t" . $episode . "\n");
 	}
 
-	# Build a new path
-	my $videoNew = videoPath($season, $episode, $id, $suffix);
-	my $nfoNew   = videoPath($season, $episode, $id, 'nfo');
+	# Warning about useless calls
+	if (!defined($nfo) && (!defined($video) || !defined($suffix))) {
+		warn("No NFO or video path provided in renameVideo()\n");
+		return;
+	}
 
-	# Parse old NFO data
-	my $nfoData = updateNFOData($nfo, $season, $episode)
-	  or die('No NFO data found, refusing to rename: ' . $id . "\n");
+	# Video
+	if (defined($video) && defined($suffix)) {
+		my $videoNew = videoPath($season, $episode, $id, $suffix);
 
-	# Specific sanity checks, as we do dangerous work here
-	if (!-r $video || !-r $nfo) {
-		die('Invalid video or NFO sources in rename: ' . $video . '/' . $nfo);
+		# Sanity checks, as we do dangerous work here
+		if (!-r $video) {
+			die('Invalid video sources in rename: ' . $video . "\n");
+		}
+		if ($video ne $videoNew) {
+			print STDERR 'Renaming ' . $video . ' => ' . $videoNew . "\n";
+			if (-e $videoNew) {
+				die('Rename: Target exists: ' . $videoNew . "\n");
+			}
+			if ($SUDO_CHATTR) {
+				system('sudo', 'chattr', '-i', $video);
+			}
+			rename($video, $videoNew)
+			  or die('Unable to rename: ' . $video . ': ' . $! . "\n");
+		}
 	}
 
-	# Rename video
-	if ($video ne $videoNew) {
-		print STDERR 'Renaming ' . $video . ' => ' . $videoNew . "\n";
-		if (-e $videoNew) {
-			die('Rename: Target exists: ' . $videoNew . "\n");
+	# NFO
+	if (defined($nfo)) {
+		my $nfoNew = videoPath($season, $episode, $id, 'nfo');
+
+		# Parse old NFO data
+		my $nfoData = updateNFOData($nfo, $season, $episode)
+		  or die('No NFO data found, refusing to rename: ' . $id . "\n");
+
+		# Sanity checks, as we do dangerous work here
+		if (!-r $video) {
+			die('Invalid video sources in rename: ' . $video . "\n");
 		}
+
+		# Write a new NFO and unlink the old one
 		if ($SUDO_CHATTR) {
-			system('sudo', 'chattr', '-i', $video);
+			system('sudo', 'chattr', '-i', $nfo);
+		}
+		saveString($nfoNew, $nfoData);
+		if ($nfo ne $nfoNew) {
+			print STDERR 'Renaming ' . $nfo . ' => ' . $nfoNew . "\n";
+			unlink($nfo)
+			  or warn('Unable to delete NFO during rename: ' . $! . "\n");
 		}
-		rename($video, $videoNew)
-		  or die('Unable to rename: ' . $video . ': ' . $! . "\n");
-	}
-
-	# Write a new NFO and unlink the old one
-	if ($SUDO_CHATTR) {
-		system('sudo', 'chattr', '-i', $nfo);
-	}
-	saveString($nfoNew, $nfoData);
-	if ($nfo ne $nfoNew) {
-		print STDERR 'Renaming ' . $nfo . ' => ' . $nfoNew . "\n";
-		unlink($nfo)
-		  or warn('Unable to delete NFO during rename: ' . $! . "\n");
 	}
 }