annotate TOOLS/w32codec_dl.pl @ 17865:47403d56ab6d

synced with 1.224
author gabrov
date Tue, 14 Mar 2006 21:21:26 +0000
parents 39805251ef61
children 0f1b5b68af32
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6195
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
1 #!/usr/bin/perl
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
2
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
3 ## usage: w32codec_dl.pl (codec.conf location)
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
4
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
5 # this script will use MS's codec dl interface as used by MS Media Player
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
6 # to attempt to locate the codecs listed in codecs.conf. It will download
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
7 # them to a directory "codecs/" below the current dir.
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
8 # you will need the libwww-perl stuff and the utility "cabextract"
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
9 # which may be found at http://www.kyz.uklinux.net/cabextract.php3
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
10
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
11 # By Tom Lees, 2002. I hereby place this script into the public domain.
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
12
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
13 #use LWP::Debug qw(+);
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
14 use LWP::UserAgent;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
15
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
16 $ua = LWP::UserAgent->new;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
17 $ua->agent ("Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)");
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
18
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
19 # Parse the etc/codecs.conf file
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
20 my $cconf = $ARGV[0];
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
21 open CCONF, "<$cconf";
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
22
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
23 my $codec = "(none)";
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
24 my $mscodec = 0;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
25
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
26 my $cc, @ccl;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
27
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
28 mkdir "codecs";
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
29 chdir "codecs";
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
30
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
31 CC: while (<CCONF>)
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
32 {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
33 next CC if (m/^[ \t]*\;/);
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
34 s/\;.*//g;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
35 s/#.*//g;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
36
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
37 if (m/^videocodec (.*)/)
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
38 {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
39 $codec = $1;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
40 }
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
41 elsif (m/^[ \t]+driver (.*)/)
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
42 {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
43 if ($1 eq "dshow" || $1 eq "vfw")
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
44 {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
45 $mscodec = 1;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
46 }
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
47 else
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
48 {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
49 $mscodec = 0;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
50 }
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
51 }
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
52 elsif (m/^[ \t]+fourcc (.*)/ && $mscodec == 1)
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
53 {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
54 $cclist = $1;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
55 chomp $cclist;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
56 #@ccl = ();
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
57 do
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
58 {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
59 if ($cclist =~ m/\"(....)\"[, ]*(.*)/)
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
60 {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
61 $cc = $1;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
62 $cclist = $2;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
63 }
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
64 elsif ($cclist =~ m/[, ]*(....)[, ]*(.*)/)
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
65 {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
66 $cc = $1;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
67 $cclist = $2;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
68 }
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
69 else
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
70 {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
71 $cc = $cclist;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
72 $cclist = "";
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
73 }
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
74 if (!($cc =~ m/^[ \t]+/))
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
75 {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
76 push @ccl, ($cc);
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
77 }
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
78 } while (length ($cclist) > 0);
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
79 }
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
80 }
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
81 close CCONF;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
82
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
83 # Find the codecs
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
84 open CODEC_CABS, ">codecs.locations.info";
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
85 %fcc_try = ();
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
86 while ($#ccl > 0)
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
87 {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
88 $cc = pop (@ccl);
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
89 if (!$fcc_try{"$cc"})
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
90 {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
91 $fcc_try{"$cc"} = 1;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
92 if (!find_codec ($cc))
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
93 {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
94 print "$cc found\n";
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
95 }
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
96 else
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
97 {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
98 print "MS didn't find $cc\n";
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
99 }
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
100 }
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
101 }
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
102 close CODEC_CABS;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
103
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
104 %got_codecs = ();
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
105 sub find_codec
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
106 {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
107 my ($fourcc) = @_;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
108
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
109 my $guid = sprintf ("%08X", unpack ("V", $fourcc))."-0000-0010-8000-00AA00389B71";
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
110
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
111 my $req = HTTP::Request->new (POST => "http://activex.microsoft.com/objects/ocget.dll");
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
112 $req->header ('Accept', '*/*');
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
113 $req->content_type ('application/x-www-form-urlencoded');
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
114 $req->content ("CLSID=%7B${guid}%7D\n");
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
115 #$req->content ('CLSID={'.${guid}.'}');
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
116
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
117 my $res = $ua->request ($req);
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
118
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
119 if ($res->is_success) {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
120 print "Lookup returned success... weird!\n";
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
121 return 1;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
122 } else {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
123 # Codec location
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
124 if ($res->code == 302)
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
125 {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
126 my $loc = $res->headers->header ("Location");
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
127 if (!$got_codecs{"$loc"})
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
128 {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
129 print CODEC_CABS "$loc\n";
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
130 $got_codecs{"$loc"} = 1;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
131 get_codec ($loc);
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
132 }
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
133 # else
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
134 # {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
135 # print "Already have $loc\n";
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
136 # }
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
137 return 0;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
138 }
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
139 else
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
140 {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
141 # print "Lookup failed (Microsoft probably doesn't know this codec)\n";
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
142 return 1;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
143 }
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
144 }
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
145 }
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
146
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
147 sub get_codec
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
148 {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
149 my ($url) = @_;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
150
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
151 my $req = HTTP::Request->new (GET => $url);
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
152 $req->header ("Accept", "*/*");
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
153 my $res = $ua->request ($req);
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
154
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
155 if ($res->is_success)
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
156 {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
157 open TMP, ">tmp.cab" or die "Unable to open tmp.cab";
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
158 print TMP $res->content;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
159 close TMP;
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
160
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
161 system "cabextract tmp.cab";
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
162 unlink "tmp.cab";
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
163 }
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
164 else
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
165 {
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
166 print "No such file!\n";
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
167 }
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
168 }
39805251ef61 Downloads w32codecs from M$, script by Tom Lees <tal26 at cam.ac.uk>
atmos4
parents:
diff changeset
169