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: 8765 $" 
 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      'video/webm': 'webm', 
 40  } 
 41   
 42   
43 -def mimeTypeToExtention(mimeType):
44 """Converts a mime type to a file extension. 45 @param mimeType: the mime type 46 @returns: file extenion if found or data otherwise 47 """ 48 return _EXTENSIONS.get(mimeType, 'data')
49 50
51 -def launchApplicationByUrl(url, mimeType):
52 """Launches an application in the background for 53 displaying a url which is of a specific mimeType 54 @param url: the url to display 55 @param mimeType: the mime type of the content 56 """ 57 try: 58 import gnomevfs 59 except ImportError: 60 gnomevfs = None 61 62 try: 63 from win32com.shell import shell as win32shell 64 except ImportError: 65 win32shell = None 66 67 try: 68 import gio 69 except ImportError: 70 gio = None 71 72 if gio: 73 app = gio.app_info_get_default_for_type(mimeType, True) 74 if not app: 75 return 76 args = '%s %s' % (app.get_executable(), url) 77 executable = None 78 shell = True 79 elif gnomevfs: 80 app = gnomevfs.mime_get_default_application(mimeType) 81 if not app: 82 return 83 args = '%s %s' % (app[2], url) 84 executable = None 85 shell = True 86 elif win32shell: 87 assoc = win32shell.AssocCreate() 88 ext = _EXTENSIONS.get(mimeType) 89 if ext is None: 90 return 91 assoc.Init(0, '.' + ext) 92 args = assoc.GetString(0, _ASSOCSTR_COMMAND) 93 executable = assoc.GetString(0, _ASSOCSTR_EXECUTABLE) 94 args = args.replace("%1", url) 95 args = args.replace("%L", url) 96 shell = False 97 else: 98 return 99 100 import subprocess 101 subprocess.Popen(args, executable=executable, 102 shell=shell)
103