ソースを参照

Limit the number of downloads we attempt in any given run

Zachary Kotlarek 11 年 前
親
コミット
a1f0089bf0
1 ファイル変更、16 行追加、0 行削除
  1. 16 0
      yt/subscribe.pl

+ 16 - 0
yt/subscribe.pl

@@ -25,6 +25,7 @@ my @YTDL_ARGS       = ('--force-ipv4', '--socket-timeout', '10', '--no-playlist'
 my @YTDL_QUIET      = ('--quiet', '--no-warnings');
 my $BATCH_SIZE      = 50;
 my $MAX_INDEX       = 25000;
+my $FETCH_LIMIT     = 50;
 my $DRIFT_TOLERANCE = 2;
 my $DRIFT_FACTOR    = 100.0;
 my $DELAY           = 5;
@@ -170,6 +171,9 @@ if ($ENV{'MAX_INDEX'} && $ENV{'MAX_INDEX'} =~ /(\d+)/) {
 if ($ENV{'BATCH_SIZE'} && $ENV{'BATCH_SIZE'} =~ /(\d+)/) {
 	$BATCH_SIZE = $1;
 }
+if ($ENV{'FETCH_LIMIT'} && $ENV{'FETCH_LIMIT'} =~ /(\d+)/) {
+	$FETCH_LIMIT = $1;
+}
 
 # Construct globals
 foreach my $key (keys(%API)) {
@@ -252,6 +256,7 @@ foreach my $id (keys(%{$files})) {
 }
 
 # Fill in missing videos and NFOs
+my $fetched = 0;
 foreach my $id (keys(%{$videos})) {
 	my $nfo = videoPath($videos->{$id}->{'season'}, $videos->{$id}->{'number'}, $id, 'nfo');
 
@@ -313,6 +318,17 @@ foreach my $id (keys(%{$videos})) {
 				print STDERR 'Not running: ' . join(' ', @fetch) . "\n";
 			} else {
 
+				# Count fetch attempts (even if they fail later)
+				$fetched++;
+				if ($FETCH_LIMIT && $fetched gt $FETCH_LIMIT) {
+					print STDERR 'Reached fetch limit (' . $FETCH_LIMIT . ') for: ' . $user . "\n";
+					if ($DEBUG) {
+						print STDERR "\tLocal/Remote videos at start:" .
+							scalar(keys(%{$files})) . '/' . scalar(keys(%{$videos})) . "\n";
+					}
+					exit 1;
+				}
+
 				# Find the output file name
 				if ($DEBUG > 1) {
 					print STDERR join(' ', @name) . "\n";