In python you can import imghdr to find out what type of image a data file is and then use a file type extension lookup in a dictionary (hash table)
Here is an piece of the OPFResource.cpp file:
Code:
// Initializes m_Mimetypes
void OPFResource::CreateMimetypes()
{
m_Mimetypes[ "jpg" ] = "image/jpeg";
m_Mimetypes[ "jpeg" ] = "image/jpeg";
m_Mimetypes[ "png" ] = "image/png";
m_Mimetypes[ "gif" ] = "image/gif";
m_Mimetypes[ "tif" ] = "image/tiff";
m_Mimetypes[ "tiff" ] = "image/tiff";
m_Mimetypes[ "bm" ] = "image/bmp";
m_Mimetypes[ "bmp" ] = "image/bmp";
m_Mimetypes[ "svg" ] = "image/svg+xml";
m_Mimetypes[ "ncx" ] = NCX_MIMETYPE;
// We convert all HTML document types to XHTML
m_Mimetypes[ "xml" ] = "application/xhtml+xml";
// m_Mimetypes[ "xml" ] = "application/oebs-page-map+xml";
m_Mimetypes[ "xhtml" ] = "application/xhtml+xml";
m_Mimetypes[ "html" ] = "application/xhtml+xml";
m_Mimetypes[ "htm" ] = "application/xhtml+xml";
m_Mimetypes[ "css" ] = "text/css";
m_Mimetypes[ "mp3" ] = "audio/mpeg";
m_Mimetypes[ "oga" ] = "audio/ogg";
m_Mimetypes[ "ogg" ] = "audio/ogg";
m_Mimetypes[ "mp4" ] = "video/mp4";
m_Mimetypes[ "ogv" ] = "video/ogg";
m_Mimetypes[ "webm" ] = "video/webm";
m_Mimetypes[ "smil" ] = "application/smil+xml";
m_Mimetypes[ "pls" ] = "application/pls+xml";
m_Mimetypes[ "js" ] = "text/javascript";
// Until the standards gods grace us with font mimetypes,
// these will have to do
m_Mimetypes[ "otf" ] = "application/vnd.ms-opentype";
m_Mimetypes[ "ttf" ] = "application/x-font-ttf";
m_Mimetypes[ "ttc" ] = "application/x-font-truetype-collection";
m_Mimetypes[ "woff" ] = "application/font-woff";
}
Here is a similar piece of python code used by the launcher:
Code:
ext_mime_map = {
'.jpg' : 'image/jpeg',
'.jpeg' : 'image/jpeg',
'.png' : 'image/png',
'.gif' : 'image/gif',
'.svg' : 'image/svg+xml',
'.xhtml': 'application/xhtml+xml',
'.html' : 'application/xhtml+xml',
'.ttf' : 'application/x-font-ttf',
'.otf' : 'application/x-font-opentype',
'.woff' : 'application/font-woff',
'.mp3' : 'audio/mpeg',
'.mp4' : 'video/mp4',
'.css' : 'text/css',
'.ncx' : 'application/x-dtbncx+xml',
'.xml' : 'application/oebs-page-map+xml',
'.opf' : 'application/oebps-package+xml',
'.smil' : 'application/smil+xml',
'.pls' : 'application/pls-xml',
'.js' : 'text/javascript',
'.epub' : 'application/epub+zip',
#'.js' : 'application/javascript',
#'.otf' : 'application/vnd.ms-opentype',
}
You can find exmples of how to use imghdr in the KindleUnpack mobi_cover.py link I sent to you. That piece of python code does the same thing.