Package flumotion :: Package common :: Module mimetypes
[hide private]

Source Code for Module flumotion.common.mimetypes

 1  # -*- Mode: Python -*- 
 2  # vi:si:et:sw=4:sts=4:ts=4 
 3  # 
 4  # Flumotion - a streaming media server 
 5  # Copyright (C) 2004,2005,2006,2007,2008 Fluendo, S.L. (www.fluendo.com). 
 6  # All rights reserved. 
 7   
 8  # This file may be distributed and/or modified under the terms of 
 9  # the GNU General Public License version 2 as published by 
10  # the Free Software Foundation. 
11  # This file is distributed without any warranty; without even the implied 
12  # warranty of merchantability or fitness for a particular purpose. 
13  # See "LICENSE.GPL" in the source distribution for more information. 
14   
15  # Licensees having purchased or holding a valid Flumotion Advanced 
16  # Streaming Server license may use this file in accordance with the 
17  # Flumotion Advanced Streaming Server Commercial License Agreement. 
18  # See "LICENSE.Flumotion" in the source distribution for more information. 
19   
20  # Headers in this file shall remain intact. 
21   
22  """convert mimetypes or launch an application based on one""" 
23   
24  __version__ = "$Rev: 6964 $" 
25  _ASSOCSTR_COMMAND = 1 
26  _ASSOCSTR_EXECUTABLE = 2 
27  _EXTENSIONS = { 
28      'application/ogg': 'ogg', 
29      'audio/mpeg': 'mp3', 
30      'audio/x-flac': 'flac', 
31      'audio/x-wav': 'wav', 
32      'multipart/x-mixed-replace': 'multipart', 
33      'video/mpegts':  'ts', 
34      'video/x-dv': 'dv', 
35      'video/x-flv': 'flv', 
36      'video/x-matroska': 'mkv', 
37      'video/x-ms-asf': 'asf', 
38      'video/x-msvideo': 'avi', 
39  } 
40   
41 -def mimeTypeToExtention(mimeType):
42 """Converts a mime type to a file extension. 43 @param mimeType: the mime type 44 @returns: file extenion if found or data otherwise 45 """ 46 return _EXTENSIONS.get(mimeType, 'data')
47
48 -def launchApplicationByUrl(url, mimeType):
49 """Launches an application in the background for 50 displaying a url which is of a specific mimeType 51 @param url: the url to display 52 @param mimeType: the mime type of the content 53 """ 54 try: 55 import gnomevfs 56 except ImportError: 57 gnomevfs = None 58 59 try: 60 from win32com.shell import shell as win32shell 61 except ImportError: 62 win32shell = None 63 64 if gnomevfs: 65 app = gnomevfs.mime_get_default_application(mimeType) 66 if not app: 67 return 68 args = '%s %s' % (app[2], url) 69 executable = None 70 shell = True 71 elif win32shell: 72 assoc = win32shell.AssocCreate() 73 ext = _EXTENSIONS.get(mimeType) 74 if ext is None: 75 return 76 assoc.Init(0, '.' + ext) 77 args = assoc.GetString(0, _ASSOCSTR_COMMAND) 78 executable = assoc.GetString(0, _ASSOCSTR_EXECUTABLE) 79 args = args.replace("%1", url) 80 args = args.replace("%L", url) 81 shell = False 82 else: 83 return 84 85 import subprocess 86 subprocess.Popen(args, executable=executable, 87 shell=shell)
88