commit:59565f030d5f832b4eefd5aba295fb1903afc125
author:Chip Black
committer:Chip Black
date:Wed May 20 01:49:43 2009 -0500
parents:b2e07e4758fafa140a6325fd3ce43901373f9f48
Now it works on more than one video. :P
diff --git a/youtube-subrip b/youtube-subrip
line changes: +36/-3
index 1ada937..2df0fc2
--- a/youtube-subrip
+++ b/youtube-subrip
@@ -7,10 +7,43 @@ my $url = shift;
 $url =~ /v=([A-Za-z0-9_]+)/;
 my $id = $1 || $url;
 
-my $xml = get("http://video.google.com/timedtext?hl=en&v=$id&type=track&name=&lang=en");
+my ($xml, $t, %langs, $lang_default, $name);
 
-unless (defined $xml) {
-	print "Could not fetch subtitles for $id\n";
+print STDERR "Fetching subtitle list...";
+
+$xml = get("http://video.google.com/timedtext?hl=en&v=$id&type=list");
+
+if (defined $xml) {
+	print STDERR "OK\n";
+} else {
+	print STDERR "Failed\n";
+	exit 1;
+}
+
+$t = XML::Twig->new(
+	twig_roots => { 'track' => \&add_track }
+);
+
+$t->parse($xml);
+
+sub add_track {
+	my ($t, $elt) = @_;
+	$langs{$elt->att('lang_code')} = $elt->att('name');
+	if ($elt->att('lang_default') eq 'true') {
+		$lang_default = $elt->att('lang_code');
+	}
+}
+
+$name = $langs{$lang_default};
+
+print STDERR "Fetching subtitles... ";
+
+$xml = get("http://video.google.com/timedtext?hl=en&v=$id&type=track&name=$name&lang=en");
+
+if (defined $xml) {
+	print STDERR "OK\n";
+} else {
+	print STDERR "Failed\n";
 	exit 1;
 }