Mercurial > mplayer.hg
annotate TOOLS/w32codec_dl.pl @ 24992:5701e23ebcb4
Better handling of win32 GUI thread:
1. Use _beginthreadex to create the GUI thread to avoid possible memory leak
when linked to MS CRT.
2. Terminate the GUI thread in an cleaner way using PostThreadMessage()
rather than the unrecommended TerminateThread().
author | zuxy |
---|---|
date | Sun, 11 Nov 2007 08:14:57 +0000 |
parents | 39805251ef61 |
children | 0f1b5b68af32 |
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 |