mmmagic

An async libmagic binding for node.js for detecting content types by data inspection

npm install mmmagic
74 downloads in the last day
525 downloads in the last week
1 911 downloads in the last month

Description

An async libmagic binding for node.js for detecting content types by data inspection.

Requirements

Install

npm install mmmagic

Examples

  • Get general description of a file:

    var Magic = require('mmmagic').Magic;
    
    var magic = new Magic();
    magic.detectFile('node_modules/mmmagic/build/Release/magic.node', function(err, result) {
        if (err) throw err;
        console.log(result);
        // output on Windows with 32-bit node:
        //    PE32 executable (DLL) (GUI) Intel 80386, for MS Windows
    });
    
  • Get mime type for a file:

    var mmm = require('mmmagic'),
        Magic = mmm.Magic;
    
    var magic = new Magic(mmm.MAGIC_MIME_TYPE);
    magic.detectFile('node_modules/mmmagic/build/Release/magic.node', function(err, result) {
        if (err) throw err;
        console.log(result);
        // output on Windows with 32-bit node:
        //    application/x-dosexec
    });
    
  • Get mime type and mime encoding for a file:

    var mmm = require('mmmagic'),
        Magic = mmm.Magic;
    
    var magic = new Magic(mmm.MAGIC_MIME_TYPE | mmm.MAGIC_MIME_ENCODING);
    // the above flags can also be shortened down to just: mmm.MAGIC_MIME
    magic.detectFile('node_modules/mmmagic/build/Release/magic.node', function(err, result) {
        if (err) throw err;
        console.log(result);
        // output on Windows with 32-bit node:
        //    application/x-dosexec; charset=binary
    });
    
  • Get general description of the contents of a Buffer:

    var Magic = require('mmmagic').Magic;
    
    var magic = new Magic(),
          buf = new Buffer('import Options\nfrom os import unlink, symlink');
    
    magic.detect(buf, function(err, result) {
        if (err) throw err;
        console.log(result);
        // output: Python script, ASCII text executable
    });
    

API

Magic methods

  • (constructor)([< String >magicPath][, < Integer >flags]) - Creates and returns a new Magic instance. magicPath is an optional path string that points to a particular magic file to use. If magicPath is not a string and not false, the bundled magic file will be used. If magicPath is false, mmmagic will default to searching for a magic file to use (order of magic file searching: MAGIC env var -> various file system paths (see man file)). flags is a bitmask with the following valid values (available as constants on require('mmmagic')):

    • MAGIC_NONE - No flags set
    • MAGIC_DEBUG - Turn on debugging
    • MAGIC_SYMLINK - Follow symlinks (default for non-Windows)
    • MAGIC_DEVICES - Look at the contents of devices
    • MAGIC_MIME_TYPE - Return the MIME type
    • MAGIC_CONTINUE - Return all matches
    • MAGIC_CHECK - Print warnings to stderr
    • MAGIC_PRESERVE_ATIME - Restore access time on exit
    • MAGIC_RAW - Don't translate unprintable chars
    • MAGIC_MIME_ENCODING - Return the MIME encoding
    • MAGIC_MIME - (MAGIC_MIME_TYPE | MAGIC_MIME_ENCODING)
    • MAGIC_APPLE - Return the Apple creator and type
    • MAGIC_NO_CHECK_TAR - Don't check for tar files
    • MAGIC_NO_CHECK_SOFT - Don't check magic entries
    • MAGIC_NO_CHECK_APPTYPE - Don't check application type
    • MAGIC_NO_CHECK_ELF - Don't check for elf details
    • MAGIC_NO_CHECK_TEXT - Don't check for text files
    • MAGIC_NO_CHECK_CDF - Don't check for cdf files
    • MAGIC_NO_CHECK_TOKENS - Don't check tokens
    • MAGIC_NO_CHECK_ENCODING - Don't check text encodings
  • detectFile(< String >path, < Function >callback) - (void) - Inspects the file pointed at by path. The callback receives two arguments: an < Error > object in case of error (null otherwise), and a < String > containing the result of the inspection.

  • detect(< Buffer >data, < Function >callback) - (void) - Inspects the contents of data. The callback receives two arguments: an < Error > object in case of error (null otherwise), and a < String > containing the result of the inspection.

npm loves you