Sugar.mime: Difference between revisions

From OLPC
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
= Helper Functions =
= Helper Functions =

=== How are mime types represented in sugar and how do I get a list of the basic generic mime types? ===

The mime package in sugar has an ObjectType class that represents a specific type of data (image, text, video, etc.). If you use the mime.get_all_generic_types() method, you will be able to see the different data types standard in sugar and the mime types that these data types can have.

A specific data type may be saved in several mime type formats. For example, text can be of type 'text/plain', 'application/pdf' and several other standards. The code below gets all the generic types available and then prints out the information contained in the ObjectType instance for each type.
<pre>
from sugar import mime
...
# Get a list of ObjectType objects representing all the generic types
types = mime.get_all_generic_types()

# Cycle through each type and print out relevant information by accessing
# fields in ObjectType
for ot in types:
print '------- BEGIN -------'
print ot.type_id
print ot.name
print ot.icon
print ot.mime_types
print '--------- END --------'
</pre>


=== Given a specific file, how do I figure out what its mime type is? ===
=== Given a specific file, how do I figure out what its mime type is? ===

Revision as of 15:22, 2 July 2008

Helper Functions

How are mime types represented in sugar and how do I get a list of the basic generic mime types?

The mime package in sugar has an ObjectType class that represents a specific type of data (image, text, video, etc.). If you use the mime.get_all_generic_types() method, you will be able to see the different data types standard in sugar and the mime types that these data types can have.

A specific data type may be saved in several mime type formats. For example, text can be of type 'text/plain', 'application/pdf' and several other standards. The code below gets all the generic types available and then prints out the information contained in the ObjectType instance for each type.

from sugar import mime
...
        # Get a list of ObjectType objects representing all the generic types
        types = mime.get_all_generic_types()

        # Cycle through each type and print out relevant information by accessing 
        # fields in ObjectType
        for ot in types:
            print '------- BEGIN -------'
            print ot.type_id
            print ot.name
            print ot.icon
            print ot.mime_types
            print '--------- END --------'

Given a specific file, how do I figure out what its mime type is?

The mime.get_from_file_name() method lets you get the mime type based on the name of a given file. The mime.get_for_file() is a little more robust and can get mime types often without an extension.

from sugar import mime
...
       # Get the mime type for a specific file
        print mime.get_from_file_name('~/file-test/sample-music.mp3')

        # Get mime type for a file (does some more sophisticated checking on the file - not
        # dependent upon the file extension). 
        print mime.get_for_file('/home/fanwar/file-test/sample-acrobat')
        


How do I access the description of a specific mime type?

The following code will print out a description ('Text') for the 'text/plain' mime type. You can pass it any other mime types to get a basic description of those types to present to users.

from sugar import mime
...
        print mime.get_mime_description('text/plain')

How do I get the primary extension that is standard for a given mime type?

If you are saving or manipulating a new file and want to know the extension typically used for the mime type you are dealing with, then use mime.get_primary_extension().

from sugar import mime
...
        # Get the primary extension used for jpeg images
        print mime.get_primary_extension('image/jpeg')

Class: ObjectType