2 * Copyright (C) 2012-2013 Team XBMC
5 * This Program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2, or (at your option)
10 * This Program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with XBMC; see the file COPYING. If not, see
17 * <http://www.gnu.org/licenses/>.
25 #include "StdString.h"
27 #include "music/tags/MusicInfoTag.h"
28 #include "video/VideoInfoTag.h"
32 map<string, string> fillMimeTypes()
34 map<string, string> mimeTypes;
36 mimeTypes.insert(pair<string, string>("3dm", "x-world/x-3dmf"));
37 mimeTypes.insert(pair<string, string>("3dmf", "x-world/x-3dmf"));
38 mimeTypes.insert(pair<string, string>("a", "application/octet-stream"));
39 mimeTypes.insert(pair<string, string>("aab", "application/x-authorware-bin"));
40 mimeTypes.insert(pair<string, string>("aam", "application/x-authorware-map"));
41 mimeTypes.insert(pair<string, string>("aas", "application/x-authorware-seg"));
42 mimeTypes.insert(pair<string, string>("abc", "text/vnd.abc"));
43 mimeTypes.insert(pair<string, string>("acgi", "text/html"));
44 mimeTypes.insert(pair<string, string>("afl", "video/animaflex"));
45 mimeTypes.insert(pair<string, string>("ai", "application/postscript"));
46 mimeTypes.insert(pair<string, string>("aif", "audio/aiff"));
47 mimeTypes.insert(pair<string, string>("aifc", "audio/x-aiff"));
48 mimeTypes.insert(pair<string, string>("aiff", "audio/aiff"));
49 mimeTypes.insert(pair<string, string>("aim", "application/x-aim"));
50 mimeTypes.insert(pair<string, string>("aip", "text/x-audiosoft-intra"));
51 mimeTypes.insert(pair<string, string>("ani", "application/x-navi-animation"));
52 mimeTypes.insert(pair<string, string>("aos", "application/x-nokia-9000-communicator-add-on-software"));
53 mimeTypes.insert(pair<string, string>("aps", "application/mime"));
54 mimeTypes.insert(pair<string, string>("arc", "application/octet-stream"));
55 mimeTypes.insert(pair<string, string>("arj", "application/arj"));
56 mimeTypes.insert(pair<string, string>("art", "image/x-jg"));
57 mimeTypes.insert(pair<string, string>("asf", "video/x-ms-asf"));
58 mimeTypes.insert(pair<string, string>("asm", "text/x-asm"));
59 mimeTypes.insert(pair<string, string>("asp", "text/asp"));
60 mimeTypes.insert(pair<string, string>("asx", "video/x-ms-asf"));
61 mimeTypes.insert(pair<string, string>("au", "audio/basic"));
62 mimeTypes.insert(pair<string, string>("avi", "video/avi"));
63 mimeTypes.insert(pair<string, string>("avs", "video/avs-video"));
64 mimeTypes.insert(pair<string, string>("bcpio", "application/x-bcpio"));
65 mimeTypes.insert(pair<string, string>("bin", "application/octet-stream"));
66 mimeTypes.insert(pair<string, string>("bm", "image/bmp"));
67 mimeTypes.insert(pair<string, string>("bmp", "image/bmp"));
68 mimeTypes.insert(pair<string, string>("boo", "application/book"));
69 mimeTypes.insert(pair<string, string>("book", "application/book"));
70 mimeTypes.insert(pair<string, string>("boz", "application/x-bzip2"));
71 mimeTypes.insert(pair<string, string>("bsh", "application/x-bsh"));
72 mimeTypes.insert(pair<string, string>("bz", "application/x-bzip"));
73 mimeTypes.insert(pair<string, string>("bz2", "application/x-bzip2"));
74 mimeTypes.insert(pair<string, string>("c", "text/plain"));
75 mimeTypes.insert(pair<string, string>("c++", "text/plain"));
76 mimeTypes.insert(pair<string, string>("cat", "application/vnd.ms-pki.seccat"));
77 mimeTypes.insert(pair<string, string>("cc", "text/plain"));
78 mimeTypes.insert(pair<string, string>("ccad", "application/clariscad"));
79 mimeTypes.insert(pair<string, string>("cco", "application/x-cocoa"));
80 mimeTypes.insert(pair<string, string>("cdf", "application/cdf"));
81 mimeTypes.insert(pair<string, string>("cer", "application/pkix-cert"));
82 mimeTypes.insert(pair<string, string>("cer", "application/x-x509-ca-cert"));
83 mimeTypes.insert(pair<string, string>("cha", "application/x-chat"));
84 mimeTypes.insert(pair<string, string>("chat", "application/x-chat"));
85 mimeTypes.insert(pair<string, string>("class", "application/java"));
86 mimeTypes.insert(pair<string, string>("com", "application/octet-stream"));
87 mimeTypes.insert(pair<string, string>("conf", "text/plain"));
88 mimeTypes.insert(pair<string, string>("cpio", "application/x-cpio"));
89 mimeTypes.insert(pair<string, string>("cpp", "text/x-c"));
90 mimeTypes.insert(pair<string, string>("cpt", "application/x-cpt"));
91 mimeTypes.insert(pair<string, string>("crl", "application/pkcs-crl"));
92 mimeTypes.insert(pair<string, string>("crt", "application/pkix-cert"));
93 mimeTypes.insert(pair<string, string>("csh", "application/x-csh"));
94 mimeTypes.insert(pair<string, string>("css", "text/css"));
95 mimeTypes.insert(pair<string, string>("cxx", "text/plain"));
96 mimeTypes.insert(pair<string, string>("dcr", "application/x-director"));
97 mimeTypes.insert(pair<string, string>("deepv", "application/x-deepv"));
98 mimeTypes.insert(pair<string, string>("def", "text/plain"));
99 mimeTypes.insert(pair<string, string>("der", "application/x-x509-ca-cert"));
100 mimeTypes.insert(pair<string, string>("dif", "video/x-dv"));
101 mimeTypes.insert(pair<string, string>("dir", "application/x-director"));
102 mimeTypes.insert(pair<string, string>("dl", "video/dl"));
103 mimeTypes.insert(pair<string, string>("divx", "video/x-msvideo"));
104 mimeTypes.insert(pair<string, string>("doc", "application/msword"));
105 mimeTypes.insert(pair<string, string>("docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"));
106 mimeTypes.insert(pair<string, string>("dot", "application/msword"));
107 mimeTypes.insert(pair<string, string>("dp", "application/commonground"));
108 mimeTypes.insert(pair<string, string>("drw", "application/drafting"));
109 mimeTypes.insert(pair<string, string>("dump", "application/octet-stream"));
110 mimeTypes.insert(pair<string, string>("dv", "video/x-dv"));
111 mimeTypes.insert(pair<string, string>("dvi", "application/x-dvi"));
112 mimeTypes.insert(pair<string, string>("dwf", "model/vnd.dwf"));
113 mimeTypes.insert(pair<string, string>("dwg", "image/vnd.dwg"));
114 mimeTypes.insert(pair<string, string>("dxf", "image/vnd.dwg"));
115 mimeTypes.insert(pair<string, string>("dxr", "application/x-director"));
116 mimeTypes.insert(pair<string, string>("el", "text/x-script.elisp"));
117 mimeTypes.insert(pair<string, string>("elc", "application/x-elc"));
118 mimeTypes.insert(pair<string, string>("env", "application/x-envoy"));
119 mimeTypes.insert(pair<string, string>("eps", "application/postscript"));
120 mimeTypes.insert(pair<string, string>("es", "application/x-esrehber"));
121 mimeTypes.insert(pair<string, string>("etx", "text/x-setext"));
122 mimeTypes.insert(pair<string, string>("evy", "application/envoy"));
123 mimeTypes.insert(pair<string, string>("exe", "application/octet-stream"));
124 mimeTypes.insert(pair<string, string>("f", "text/x-fortran"));
125 mimeTypes.insert(pair<string, string>("f77", "text/x-fortran"));
126 mimeTypes.insert(pair<string, string>("f90", "text/x-fortran"));
127 mimeTypes.insert(pair<string, string>("fdf", "application/vnd.fdf"));
128 mimeTypes.insert(pair<string, string>("fif", "image/fif"));
129 mimeTypes.insert(pair<string, string>("flac", "audio/flac"));
130 mimeTypes.insert(pair<string, string>("fli", "video/fli"));
131 mimeTypes.insert(pair<string, string>("flo", "image/florian"));
132 mimeTypes.insert(pair<string, string>("flv", "video/x-flv"));
133 mimeTypes.insert(pair<string, string>("flx", "text/vnd.fmi.flexstor"));
134 mimeTypes.insert(pair<string, string>("fmf", "video/x-atomic3d-feature"));
135 mimeTypes.insert(pair<string, string>("for", "text/plain"));
136 mimeTypes.insert(pair<string, string>("for", "text/x-fortran"));
137 mimeTypes.insert(pair<string, string>("fpx", "image/vnd.fpx"));
138 mimeTypes.insert(pair<string, string>("frl", "application/freeloader"));
139 mimeTypes.insert(pair<string, string>("funk", "audio/make"));
140 mimeTypes.insert(pair<string, string>("g", "text/plain"));
141 mimeTypes.insert(pair<string, string>("g3", "image/g3fax"));
142 mimeTypes.insert(pair<string, string>("gif", "image/gif"));
143 mimeTypes.insert(pair<string, string>("gl", "video/x-gl"));
144 mimeTypes.insert(pair<string, string>("gsd", "audio/x-gsm"));
145 mimeTypes.insert(pair<string, string>("gsm", "audio/x-gsm"));
146 mimeTypes.insert(pair<string, string>("gsp", "application/x-gsp"));
147 mimeTypes.insert(pair<string, string>("gss", "application/x-gss"));
148 mimeTypes.insert(pair<string, string>("gtar", "application/x-gtar"));
149 mimeTypes.insert(pair<string, string>("gz", "application/x-compressed"));
150 mimeTypes.insert(pair<string, string>("gzip", "application/x-gzip"));
151 mimeTypes.insert(pair<string, string>("h", "text/plain"));
152 mimeTypes.insert(pair<string, string>("hdf", "application/x-hdf"));
153 mimeTypes.insert(pair<string, string>("help", "application/x-helpfile"));
154 mimeTypes.insert(pair<string, string>("hgl", "application/vnd.hp-hpgl"));
155 mimeTypes.insert(pair<string, string>("hh", "text/plain"));
156 mimeTypes.insert(pair<string, string>("hlb", "text/x-script"));
157 mimeTypes.insert(pair<string, string>("hlp", "application/hlp"));
158 mimeTypes.insert(pair<string, string>("hpg", "application/vnd.hp-hpgl"));
159 mimeTypes.insert(pair<string, string>("hpgl", "application/vnd.hp-hpgl"));
160 mimeTypes.insert(pair<string, string>("hqx", "application/binhex"));
161 mimeTypes.insert(pair<string, string>("hta", "application/hta"));
162 mimeTypes.insert(pair<string, string>("htc", "text/x-component"));
163 mimeTypes.insert(pair<string, string>("htm", "text/html"));
164 mimeTypes.insert(pair<string, string>("html", "text/html"));
165 mimeTypes.insert(pair<string, string>("htmls", "text/html"));
166 mimeTypes.insert(pair<string, string>("htt", "text/webviewhtml"));
167 mimeTypes.insert(pair<string, string>("htx", "text/html"));
168 mimeTypes.insert(pair<string, string>("ice", "x-conference/x-cooltalk"));
169 mimeTypes.insert(pair<string, string>("ico", "image/x-icon"));
170 mimeTypes.insert(pair<string, string>("idc", "text/plain"));
171 mimeTypes.insert(pair<string, string>("ief", "image/ief"));
172 mimeTypes.insert(pair<string, string>("iefs", "image/ief"));
173 mimeTypes.insert(pair<string, string>("iges", "application/iges"));
174 mimeTypes.insert(pair<string, string>("igs", "application/iges"));
175 mimeTypes.insert(pair<string, string>("igs", "model/iges"));
176 mimeTypes.insert(pair<string, string>("ima", "application/x-ima"));
177 mimeTypes.insert(pair<string, string>("imap", "application/x-httpd-imap"));
178 mimeTypes.insert(pair<string, string>("inf", "application/inf"));
179 mimeTypes.insert(pair<string, string>("ins", "application/x-internett-signup"));
180 mimeTypes.insert(pair<string, string>("ip", "application/x-ip2"));
181 mimeTypes.insert(pair<string, string>("isu", "video/x-isvideo"));
182 mimeTypes.insert(pair<string, string>("it", "audio/it"));
183 mimeTypes.insert(pair<string, string>("iv", "application/x-inventor"));
184 mimeTypes.insert(pair<string, string>("ivr", "i-world/i-vrml"));
185 mimeTypes.insert(pair<string, string>("ivy", "application/x-livescreen"));
186 mimeTypes.insert(pair<string, string>("jam", "audio/x-jam"));
187 mimeTypes.insert(pair<string, string>("jav", "text/x-java-source"));
188 mimeTypes.insert(pair<string, string>("java", "text/x-java-source"));
189 mimeTypes.insert(pair<string, string>("jcm", "application/x-java-commerce"));
190 mimeTypes.insert(pair<string, string>("jfif", "image/jpeg"));
191 mimeTypes.insert(pair<string, string>("jfif-tbnl", "image/jpeg"));
192 mimeTypes.insert(pair<string, string>("jpe", "image/jpeg"));
193 mimeTypes.insert(pair<string, string>("jpeg", "image/jpeg"));
194 mimeTypes.insert(pair<string, string>("jpg", "image/jpeg"));
195 mimeTypes.insert(pair<string, string>("jps", "image/x-jps"));
196 mimeTypes.insert(pair<string, string>("js", "application/javascript"));
197 mimeTypes.insert(pair<string, string>("json", "application/json"));
198 mimeTypes.insert(pair<string, string>("jut", "image/jutvision"));
199 mimeTypes.insert(pair<string, string>("kar", "music/x-karaoke"));
200 mimeTypes.insert(pair<string, string>("ksh", "application/x-ksh"));
201 mimeTypes.insert(pair<string, string>("ksh", "text/x-script.ksh"));
202 mimeTypes.insert(pair<string, string>("la", "audio/nspaudio"));
203 mimeTypes.insert(pair<string, string>("lam", "audio/x-liveaudio"));
204 mimeTypes.insert(pair<string, string>("latex", "application/x-latex"));
205 mimeTypes.insert(pair<string, string>("lha", "application/lha"));
206 mimeTypes.insert(pair<string, string>("lhx", "application/octet-stream"));
207 mimeTypes.insert(pair<string, string>("list", "text/plain"));
208 mimeTypes.insert(pair<string, string>("lma", "audio/nspaudio"));
209 mimeTypes.insert(pair<string, string>("log", "text/plain"));
210 mimeTypes.insert(pair<string, string>("lsp", "application/x-lisp"));
211 mimeTypes.insert(pair<string, string>("lst", "text/plain"));
212 mimeTypes.insert(pair<string, string>("lsx", "text/x-la-asf"));
213 mimeTypes.insert(pair<string, string>("ltx", "application/x-latex"));
214 mimeTypes.insert(pair<string, string>("lzh", "application/x-lzh"));
215 mimeTypes.insert(pair<string, string>("lzx", "application/lzx"));
216 mimeTypes.insert(pair<string, string>("m", "text/x-m"));
217 mimeTypes.insert(pair<string, string>("m1v", "video/mpeg"));
218 mimeTypes.insert(pair<string, string>("m2a", "audio/mpeg"));
219 mimeTypes.insert(pair<string, string>("m2v", "video/mpeg"));
220 mimeTypes.insert(pair<string, string>("m3u", "audio/x-mpequrl"));
221 mimeTypes.insert(pair<string, string>("man", "application/x-troff-man"));
222 mimeTypes.insert(pair<string, string>("map", "application/x-navimap"));
223 mimeTypes.insert(pair<string, string>("mar", "text/plain"));
224 mimeTypes.insert(pair<string, string>("mbd", "application/mbedlet"));
225 mimeTypes.insert(pair<string, string>("mc$", "application/x-magic-cap-package-1.0"));
226 mimeTypes.insert(pair<string, string>("mcd", "application/x-mathcad"));
227 mimeTypes.insert(pair<string, string>("mcf", "text/mcf"));
228 mimeTypes.insert(pair<string, string>("mcp", "application/netmc"));
229 mimeTypes.insert(pair<string, string>("me", "application/x-troff-me"));
230 mimeTypes.insert(pair<string, string>("mht", "message/rfc822"));
231 mimeTypes.insert(pair<string, string>("mhtml", "message/rfc822"));
232 mimeTypes.insert(pair<string, string>("mid", "audio/midi"));
233 mimeTypes.insert(pair<string, string>("midi", "audio/midi"));
234 mimeTypes.insert(pair<string, string>("mif", "application/x-mif"));
235 mimeTypes.insert(pair<string, string>("mime", "message/rfc822"));
236 mimeTypes.insert(pair<string, string>("mjf", "audio/x-vnd.audioexplosion.mjuicemediafile"));
237 mimeTypes.insert(pair<string, string>("mjpg", "video/x-motion-jpeg"));
238 mimeTypes.insert(pair<string, string>("mka", "audio/x-matroska"));
239 mimeTypes.insert(pair<string, string>("mkv", "video/x-matroska"));
240 mimeTypes.insert(pair<string, string>("mm", "application/x-meme"));
241 mimeTypes.insert(pair<string, string>("mme", "application/base64"));
242 mimeTypes.insert(pair<string, string>("mod", "audio/mod"));
243 mimeTypes.insert(pair<string, string>("moov", "video/quicktime"));
244 mimeTypes.insert(pair<string, string>("mov", "video/quicktime"));
245 mimeTypes.insert(pair<string, string>("movie", "video/x-sgi-movie"));
246 mimeTypes.insert(pair<string, string>("mp2", "audio/mpeg"));
247 mimeTypes.insert(pair<string, string>("mp3", "audio/mpeg3"));
248 mimeTypes.insert(pair<string, string>("mp4", "video/mp4"));
249 mimeTypes.insert(pair<string, string>("mpa", "audio/mpeg"));
250 mimeTypes.insert(pair<string, string>("mpc", "application/x-project"));
251 mimeTypes.insert(pair<string, string>("mpe", "video/mpeg"));
252 mimeTypes.insert(pair<string, string>("mpeg", "video/mpeg"));
253 mimeTypes.insert(pair<string, string>("mpg", "video/mpeg"));
254 mimeTypes.insert(pair<string, string>("mpga", "audio/mpeg"));
255 mimeTypes.insert(pair<string, string>("mpp", "application/vnd.ms-project"));
256 mimeTypes.insert(pair<string, string>("mpt", "application/x-project"));
257 mimeTypes.insert(pair<string, string>("mpv", "application/x-project"));
258 mimeTypes.insert(pair<string, string>("mpx", "application/x-project"));
259 mimeTypes.insert(pair<string, string>("mrc", "application/marc"));
260 mimeTypes.insert(pair<string, string>("ms", "application/x-troff-ms"));
261 mimeTypes.insert(pair<string, string>("mv", "video/x-sgi-movie"));
262 mimeTypes.insert(pair<string, string>("my", "audio/make"));
263 mimeTypes.insert(pair<string, string>("mzz", "application/x-vnd.audioexplosion.mzz"));
264 mimeTypes.insert(pair<string, string>("nap", "image/naplps"));
265 mimeTypes.insert(pair<string, string>("naplps", "image/naplps"));
266 mimeTypes.insert(pair<string, string>("nc", "application/x-netcdf"));
267 mimeTypes.insert(pair<string, string>("ncm", "application/vnd.nokia.configuration-message"));
268 mimeTypes.insert(pair<string, string>("nfo", "text/xml"));
269 mimeTypes.insert(pair<string, string>("nif", "image/x-niff"));
270 mimeTypes.insert(pair<string, string>("niff", "image/x-niff"));
271 mimeTypes.insert(pair<string, string>("nix", "application/x-mix-transfer"));
272 mimeTypes.insert(pair<string, string>("nsc", "application/x-conference"));
273 mimeTypes.insert(pair<string, string>("nvd", "application/x-navidoc"));
274 mimeTypes.insert(pair<string, string>("o", "application/octet-stream"));
275 mimeTypes.insert(pair<string, string>("oda", "application/oda"));
276 mimeTypes.insert(pair<string, string>("ogg", "audio/ogg"));
277 mimeTypes.insert(pair<string, string>("omc", "application/x-omc"));
278 mimeTypes.insert(pair<string, string>("omcd", "application/x-omcdatamaker"));
279 mimeTypes.insert(pair<string, string>("omcr", "application/x-omcregerator"));
280 mimeTypes.insert(pair<string, string>("p", "text/x-pascal"));
281 mimeTypes.insert(pair<string, string>("p10", "application/pkcs10"));
282 mimeTypes.insert(pair<string, string>("p12", "application/pkcs-12"));
283 mimeTypes.insert(pair<string, string>("p7a", "application/x-pkcs7-signature"));
284 mimeTypes.insert(pair<string, string>("p7c", "application/pkcs7-mime"));
285 mimeTypes.insert(pair<string, string>("p7m", "application/pkcs7-mime"));
286 mimeTypes.insert(pair<string, string>("p7r", "application/x-pkcs7-certreqresp"));
287 mimeTypes.insert(pair<string, string>("p7s", "application/pkcs7-signature"));
288 mimeTypes.insert(pair<string, string>("part", "application/pro_eng"));
289 mimeTypes.insert(pair<string, string>("pas", "text/pascal"));
290 mimeTypes.insert(pair<string, string>("pbm", "image/x-portable-bitmap"));
291 mimeTypes.insert(pair<string, string>("pcl", "application/vnd.hp-pcl"));
292 mimeTypes.insert(pair<string, string>("pct", "image/x-pict"));
293 mimeTypes.insert(pair<string, string>("pcx", "image/x-pcx"));
294 mimeTypes.insert(pair<string, string>("pdb", "chemical/x-pdb"));
295 mimeTypes.insert(pair<string, string>("pdf", "application/pdf"));
296 mimeTypes.insert(pair<string, string>("pfunk", "audio/make.my.funk"));
297 mimeTypes.insert(pair<string, string>("pgm", "image/x-portable-greymap"));
298 mimeTypes.insert(pair<string, string>("pic", "image/pict"));
299 mimeTypes.insert(pair<string, string>("pict", "image/pict"));
300 mimeTypes.insert(pair<string, string>("pkg", "application/x-newton-compatible-pkg"));
301 mimeTypes.insert(pair<string, string>("pko", "application/vnd.ms-pki.pko"));
302 mimeTypes.insert(pair<string, string>("pl", "text/x-script.perl"));
303 mimeTypes.insert(pair<string, string>("plx", "application/x-pixclscript"));
304 mimeTypes.insert(pair<string, string>("pm", "text/x-script.perl-module"));
305 mimeTypes.insert(pair<string, string>("pm4", "application/x-pagemaker"));
306 mimeTypes.insert(pair<string, string>("pm5", "application/x-pagemaker"));
307 mimeTypes.insert(pair<string, string>("png", "image/png"));
308 mimeTypes.insert(pair<string, string>("pnm", "application/x-portable-anymap"));
309 mimeTypes.insert(pair<string, string>("pot", "application/vnd.ms-powerpoint"));
310 mimeTypes.insert(pair<string, string>("pov", "model/x-pov"));
311 mimeTypes.insert(pair<string, string>("ppa", "application/vnd.ms-powerpoint"));
312 mimeTypes.insert(pair<string, string>("ppm", "image/x-portable-pixmap"));
313 mimeTypes.insert(pair<string, string>("pps", "application/mspowerpoint"));
314 mimeTypes.insert(pair<string, string>("ppt", "application/mspowerpoint"));
315 mimeTypes.insert(pair<string, string>("ppz", "application/mspowerpoint"));
316 mimeTypes.insert(pair<string, string>("pre", "application/x-freelance"));
317 mimeTypes.insert(pair<string, string>("prt", "application/pro_eng"));
318 mimeTypes.insert(pair<string, string>("ps", "application/postscript"));
319 mimeTypes.insert(pair<string, string>("psd", "application/octet-stream"));
320 mimeTypes.insert(pair<string, string>("pvu", "paleovu/x-pv"));
321 mimeTypes.insert(pair<string, string>("pwz", "application/vnd.ms-powerpoint"));
322 mimeTypes.insert(pair<string, string>("py", "text/x-script.phyton"));
323 mimeTypes.insert(pair<string, string>("pyc", "applicaiton/x-bytecode.python"));
324 mimeTypes.insert(pair<string, string>("qcp", "audio/vnd.qcelp"));
325 mimeTypes.insert(pair<string, string>("qd3", "x-world/x-3dmf"));
326 mimeTypes.insert(pair<string, string>("qd3d", "x-world/x-3dmf"));
327 mimeTypes.insert(pair<string, string>("qif", "image/x-quicktime"));
328 mimeTypes.insert(pair<string, string>("qt", "video/quicktime"));
329 mimeTypes.insert(pair<string, string>("qtc", "video/x-qtc"));
330 mimeTypes.insert(pair<string, string>("qti", "image/x-quicktime"));
331 mimeTypes.insert(pair<string, string>("qtif", "image/x-quicktime"));
332 mimeTypes.insert(pair<string, string>("ra", "audio/x-realaudio"));
333 mimeTypes.insert(pair<string, string>("ram", "audio/x-pn-realaudio"));
334 mimeTypes.insert(pair<string, string>("ras", "image/cmu-raster"));
335 mimeTypes.insert(pair<string, string>("rast", "image/cmu-raster"));
336 mimeTypes.insert(pair<string, string>("rexx", "text/x-script.rexx"));
337 mimeTypes.insert(pair<string, string>("rf", "image/vnd.rn-realflash"));
338 mimeTypes.insert(pair<string, string>("rgb", "image/x-rgb"));
339 mimeTypes.insert(pair<string, string>("rm", "audio/x-pn-realaudio"));
340 mimeTypes.insert(pair<string, string>("rmi", "audio/mid"));
341 mimeTypes.insert(pair<string, string>("rmm", "audio/x-pn-realaudio"));
342 mimeTypes.insert(pair<string, string>("rmp", "audio/x-pn-realaudio"));
343 mimeTypes.insert(pair<string, string>("rng", "application/ringing-tones"));
344 mimeTypes.insert(pair<string, string>("rnx", "application/vnd.rn-realplayer"));
345 mimeTypes.insert(pair<string, string>("roff", "application/x-troff"));
346 mimeTypes.insert(pair<string, string>("rp", "image/vnd.rn-realpix"));
347 mimeTypes.insert(pair<string, string>("rpm", "audio/x-pn-realaudio-plugin"));
348 mimeTypes.insert(pair<string, string>("rt", "text/richtext"));
349 mimeTypes.insert(pair<string, string>("rtf", "text/richtext"));
350 mimeTypes.insert(pair<string, string>("rtx", "text/richtext"));
351 mimeTypes.insert(pair<string, string>("rv", "video/vnd.rn-realvideo"));
352 mimeTypes.insert(pair<string, string>("s", "text/x-asm"));
353 mimeTypes.insert(pair<string, string>("s3m", "audio/s3m"));
354 mimeTypes.insert(pair<string, string>("saveme", "application/octet-stream"));
355 mimeTypes.insert(pair<string, string>("sbk", "application/x-tbook"));
356 mimeTypes.insert(pair<string, string>("scm", "video/x-scm"));
357 mimeTypes.insert(pair<string, string>("sdml", "text/plain"));
358 mimeTypes.insert(pair<string, string>("sdp", "application/sdp"));
359 mimeTypes.insert(pair<string, string>("sdr", "application/sounder"));
360 mimeTypes.insert(pair<string, string>("sea", "application/sea"));
361 mimeTypes.insert(pair<string, string>("set", "application/set"));
362 mimeTypes.insert(pair<string, string>("sgm", "text/sgml"));
363 mimeTypes.insert(pair<string, string>("sgml", "text/sgml"));
364 mimeTypes.insert(pair<string, string>("sh", "text/x-script.sh"));
365 mimeTypes.insert(pair<string, string>("shar", "application/x-bsh"));
366 mimeTypes.insert(pair<string, string>("shtml", "text/html"));
367 mimeTypes.insert(pair<string, string>("shtml", "text/x-server-parsed-html"));
368 mimeTypes.insert(pair<string, string>("sid", "audio/x-psid"));
369 mimeTypes.insert(pair<string, string>("sit", "application/x-sit"));
370 mimeTypes.insert(pair<string, string>("sit", "application/x-stuffit"));
371 mimeTypes.insert(pair<string, string>("skd", "application/x-koan"));
372 mimeTypes.insert(pair<string, string>("skm", "application/x-koan"));
373 mimeTypes.insert(pair<string, string>("skp", "application/x-koan"));
374 mimeTypes.insert(pair<string, string>("skt", "application/x-koan"));
375 mimeTypes.insert(pair<string, string>("sl", "application/x-seelogo"));
376 mimeTypes.insert(pair<string, string>("smi", "application/smil"));
377 mimeTypes.insert(pair<string, string>("smil", "application/smil"));
378 mimeTypes.insert(pair<string, string>("snd", "audio/basic"));
379 mimeTypes.insert(pair<string, string>("sol", "application/solids"));
380 mimeTypes.insert(pair<string, string>("spc", "text/x-speech"));
381 mimeTypes.insert(pair<string, string>("spl", "application/futuresplash"));
382 mimeTypes.insert(pair<string, string>("spr", "application/x-sprite"));
383 mimeTypes.insert(pair<string, string>("sprite", "application/x-sprite"));
384 mimeTypes.insert(pair<string, string>("src", "application/x-wais-source"));
385 mimeTypes.insert(pair<string, string>("ssi", "text/x-server-parsed-html"));
386 mimeTypes.insert(pair<string, string>("ssm", "application/streamingmedia"));
387 mimeTypes.insert(pair<string, string>("sst", "application/vnd.ms-pki.certstore"));
388 mimeTypes.insert(pair<string, string>("step", "application/step"));
389 mimeTypes.insert(pair<string, string>("stl", "application/sla"));
390 mimeTypes.insert(pair<string, string>("stp", "application/step"));
391 mimeTypes.insert(pair<string, string>("sv4cpio", "application/x-sv4cpio"));
392 mimeTypes.insert(pair<string, string>("sv4crc", "application/x-sv4crc"));
393 mimeTypes.insert(pair<string, string>("svf", "image/vnd.dwg"));
394 mimeTypes.insert(pair<string, string>("svr", "application/x-world"));
395 mimeTypes.insert(pair<string, string>("swf", "application/x-shockwave-flash"));
396 mimeTypes.insert(pair<string, string>("t", "application/x-troff"));
397 mimeTypes.insert(pair<string, string>("talk", "text/x-speech"));
398 mimeTypes.insert(pair<string, string>("tar", "application/x-tar"));
399 mimeTypes.insert(pair<string, string>("tbk", "application/toolbook"));
400 mimeTypes.insert(pair<string, string>("tcl", "text/x-script.tcl"));
401 mimeTypes.insert(pair<string, string>("tcsh", "text/x-script.tcsh"));
402 mimeTypes.insert(pair<string, string>("tex", "application/x-tex"));
403 mimeTypes.insert(pair<string, string>("texi", "application/x-texinfo"));
404 mimeTypes.insert(pair<string, string>("texinfo", "application/x-texinfo"));
405 mimeTypes.insert(pair<string, string>("text", "text/plain"));
406 mimeTypes.insert(pair<string, string>("tgz", "application/x-compressed"));
407 mimeTypes.insert(pair<string, string>("tif", "image/tiff"));
408 mimeTypes.insert(pair<string, string>("tiff", "image/tiff"));
409 mimeTypes.insert(pair<string, string>("tr", "application/x-troff"));
410 mimeTypes.insert(pair<string, string>("ts", "video/mp2t"));
411 mimeTypes.insert(pair<string, string>("tsi", "audio/tsp-audio"));
412 mimeTypes.insert(pair<string, string>("tsp", "audio/tsplayer"));
413 mimeTypes.insert(pair<string, string>("tsv", "text/tab-separated-values"));
414 mimeTypes.insert(pair<string, string>("turbot", "image/florian"));
415 mimeTypes.insert(pair<string, string>("txt", "text/plain"));
416 mimeTypes.insert(pair<string, string>("uil", "text/x-uil"));
417 mimeTypes.insert(pair<string, string>("uni", "text/uri-list"));
418 mimeTypes.insert(pair<string, string>("unis", "text/uri-list"));
419 mimeTypes.insert(pair<string, string>("unv", "application/i-deas"));
420 mimeTypes.insert(pair<string, string>("uri", "text/uri-list"));
421 mimeTypes.insert(pair<string, string>("uris", "text/uri-list"));
422 mimeTypes.insert(pair<string, string>("ustar", "application/x-ustar"));
423 mimeTypes.insert(pair<string, string>("uu", "text/x-uuencode"));
424 mimeTypes.insert(pair<string, string>("uue", "text/x-uuencode"));
425 mimeTypes.insert(pair<string, string>("vcd", "application/x-cdlink"));
426 mimeTypes.insert(pair<string, string>("vcs", "text/x-vcalendar"));
427 mimeTypes.insert(pair<string, string>("vda", "application/vda"));
428 mimeTypes.insert(pair<string, string>("vdo", "video/vdo"));
429 mimeTypes.insert(pair<string, string>("vew", "application/groupwise"));
430 mimeTypes.insert(pair<string, string>("viv", "video/vivo"));
431 mimeTypes.insert(pair<string, string>("vivo", "video/vivo"));
432 mimeTypes.insert(pair<string, string>("vmd", "application/vocaltec-media-desc"));
433 mimeTypes.insert(pair<string, string>("vmf", "application/vocaltec-media-file"));
434 mimeTypes.insert(pair<string, string>("voc", "audio/voc"));
435 mimeTypes.insert(pair<string, string>("vos", "video/vosaic"));
436 mimeTypes.insert(pair<string, string>("vox", "audio/voxware"));
437 mimeTypes.insert(pair<string, string>("vqe", "audio/x-twinvq-plugin"));
438 mimeTypes.insert(pair<string, string>("vqf", "audio/x-twinvq"));
439 mimeTypes.insert(pair<string, string>("vql", "audio/x-twinvq-plugin"));
440 mimeTypes.insert(pair<string, string>("vrml", "application/x-vrml"));
441 mimeTypes.insert(pair<string, string>("vrt", "x-world/x-vrt"));
442 mimeTypes.insert(pair<string, string>("vsd", "application/x-visio"));
443 mimeTypes.insert(pair<string, string>("vst", "application/x-visio"));
444 mimeTypes.insert(pair<string, string>("vsw", "application/x-visio"));
445 mimeTypes.insert(pair<string, string>("w60", "application/wordperfect6.0"));
446 mimeTypes.insert(pair<string, string>("w61", "application/wordperfect6.1"));
447 mimeTypes.insert(pair<string, string>("w6w", "application/msword"));
448 mimeTypes.insert(pair<string, string>("wav", "audio/wav"));
449 mimeTypes.insert(pair<string, string>("wb1", "application/x-qpro"));
450 mimeTypes.insert(pair<string, string>("wbmp", "image/vnd.wap.wbmp"));
451 mimeTypes.insert(pair<string, string>("web", "application/vnd.xara"));
452 mimeTypes.insert(pair<string, string>("wiz", "application/msword"));
453 mimeTypes.insert(pair<string, string>("wk1", "application/x-123"));
454 mimeTypes.insert(pair<string, string>("wma", "audio/x-ms-wma"));
455 mimeTypes.insert(pair<string, string>("wmf", "windows/metafile"));
456 mimeTypes.insert(pair<string, string>("wml", "text/vnd.wap.wml"));
457 mimeTypes.insert(pair<string, string>("wmlc", "application/vnd.wap.wmlc"));
458 mimeTypes.insert(pair<string, string>("wmls", "text/vnd.wap.wmlscript"));
459 mimeTypes.insert(pair<string, string>("wmlsc", "application/vnd.wap.wmlscriptc"));
460 mimeTypes.insert(pair<string, string>("wmv", "video/x-ms-wmv"));
461 mimeTypes.insert(pair<string, string>("word", "application/msword"));
462 mimeTypes.insert(pair<string, string>("wp", "application/wordperfect"));
463 mimeTypes.insert(pair<string, string>("wp5", "application/wordperfect"));
464 mimeTypes.insert(pair<string, string>("wp6", "application/wordperfect"));
465 mimeTypes.insert(pair<string, string>("wpd", "application/wordperfect"));
466 mimeTypes.insert(pair<string, string>("wq1", "application/x-lotus"));
467 mimeTypes.insert(pair<string, string>("wri", "application/mswrite"));
468 mimeTypes.insert(pair<string, string>("wrl", "model/vrml"));
469 mimeTypes.insert(pair<string, string>("wrz", "model/vrml"));
470 mimeTypes.insert(pair<string, string>("wsc", "text/scriplet"));
471 mimeTypes.insert(pair<string, string>("wsrc", "application/x-wais-source"));
472 mimeTypes.insert(pair<string, string>("wtk", "application/x-wintalk"));
473 mimeTypes.insert(pair<string, string>("xbm", "image/xbm"));
474 mimeTypes.insert(pair<string, string>("xdr", "video/x-amt-demorun"));
475 mimeTypes.insert(pair<string, string>("xgz", "xgl/drawing"));
476 mimeTypes.insert(pair<string, string>("xif", "image/vnd.xiff"));
477 mimeTypes.insert(pair<string, string>("xl", "application/excel"));
478 mimeTypes.insert(pair<string, string>("xla", "application/excel"));
479 mimeTypes.insert(pair<string, string>("xlb", "application/excel"));
480 mimeTypes.insert(pair<string, string>("xlc", "application/excel"));
481 mimeTypes.insert(pair<string, string>("xld", "application/excel"));
482 mimeTypes.insert(pair<string, string>("xlk", "application/excel"));
483 mimeTypes.insert(pair<string, string>("xll", "application/excel"));
484 mimeTypes.insert(pair<string, string>("xlm", "application/excel"));
485 mimeTypes.insert(pair<string, string>("xls", "application/excel"));
486 mimeTypes.insert(pair<string, string>("xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"));
487 mimeTypes.insert(pair<string, string>("xlt", "application/excel"));
488 mimeTypes.insert(pair<string, string>("xlv", "application/excel"));
489 mimeTypes.insert(pair<string, string>("xlw", "application/excel"));
490 mimeTypes.insert(pair<string, string>("xm", "audio/xm"));
491 mimeTypes.insert(pair<string, string>("xml", "text/xml"));
492 mimeTypes.insert(pair<string, string>("xmz", "xgl/movie"));
493 mimeTypes.insert(pair<string, string>("xpix", "application/x-vnd.ls-xpix"));
494 mimeTypes.insert(pair<string, string>("xpm", "image/xpm"));
495 mimeTypes.insert(pair<string, string>("x-png", "image/png"));
496 mimeTypes.insert(pair<string, string>("xsr", "video/x-amt-showrun"));
497 mimeTypes.insert(pair<string, string>("xvid", "video/x-msvideo"));
498 mimeTypes.insert(pair<string, string>("xwd", "image/x-xwd"));
499 mimeTypes.insert(pair<string, string>("xyz", "chemical/x-pdb"));
500 mimeTypes.insert(pair<string, string>("z", "application/x-compressed"));
501 mimeTypes.insert(pair<string, string>("zip", "application/zip"));
502 mimeTypes.insert(pair<string, string>("zoo", "application/octet-stream"));
503 mimeTypes.insert(pair<string, string>("zsh", "text/x-script.zsh"));
508 map<string, string> CMime::m_mimetypes = fillMimeTypes();
510 string CMime::GetMimeType(const string &extension)
512 if (extension.empty())
515 string ext = extension;
516 size_t posNotPoint = ext.find_first_not_of('.');
517 if (posNotPoint != string::npos && posNotPoint > 0)
518 ext = extension.substr(posNotPoint);
519 transform(ext.begin(), ext.end(), ext.begin(), ::tolower);
521 map<string, string>::const_iterator it = m_mimetypes.find(ext);
522 if (it != m_mimetypes.end())
528 string CMime::GetMimeType(const CFileItem &item)
530 CStdString path = item.GetPath();
531 if (item.HasVideoInfoTag() && !item.GetVideoInfoTag()->GetPath().empty())
532 path = item.GetVideoInfoTag()->GetPath();
533 else if (item.HasMusicInfoTag() && !item.GetMusicInfoTag()->GetURL().empty())
534 path = item.GetMusicInfoTag()->GetURL();
536 return GetMimeType(URIUtils::GetExtension(path));