{ "info": { "author": "Tomas Aparicio", "author_email": "tomas@aparicio.me", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Environment :: Web Environment", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: System", "Topic :: System :: Filesystems", "Topic :: Utilities" ], "description": "filetype.py |Build Status| |PyPI| |API|\n=======================================\n\nSmall and dependency free `Python`_ package to infer file type and MIME\ntype checking the `magic numbers`_ signature of a file or buffer.\n\nThis is a Python port from `filetype`_ Go package.\n\nFeatures\n--------\n\n- Simple and friendly API\n- Supports a `wide range`_ of file types\n- Provides file extension and MIME type inference\n- File discovery by extension or MIME type\n- File discovery by kind (image, video, audio\u2026)\n- `Pluggable`_: add new custom type matchers\n- `Fast`_, even processing large files\n- Only first 261 bytes representing the max file header is required, so\n you can just `pass a list of bytes`_\n- Dependency free (just Python code, no C extensions, no libmagic\n bindings)\n- Cross-platform file recognition\n\nInstallation\n------------\n\n::\n\n pip install filetype\n\nAPI\n---\n\nSee `annotated API reference`_.\n\nExamples\n--------\n\nSimple file type checking\n^^^^^^^^^^^^^^^^^^^^^^^^^\n\n.. code-block:: python\n\n import filetype\n\n def main():\n kind = filetype.guess('tests/fixtures/sample.jpg')\n if kind is None:\n print('Cannot guess file type!')\n return\n\n print('File extension: %s' % kind.extension)\n print('File MIME type: %s' % kind.mime)\n\n if __name__ == '__main__':\n main()\n\nSupported types\n---------------\n\nImage\n^^^^^\n\n- **jpg** - ``image/jpeg``\n- **jpx** - ``image/jpx``\n- **png** - ``image/png``\n- **gif** - ``image/gif``\n- **webp** - ``image/webp``\n- **cr2** - ``image/x-canon-cr2``\n- **tif** - ``image/tiff``\n- **bmp** - ``image/bmp``\n- **jxr** - ``image/vnd.ms-photo``\n- **psd** - ``image/vnd.adobe.photoshop``\n- **ico** - ``image/x-icon``\n- **heic** - ``image/heic``\n\nVideo\n^^^^^\n\n- **mp4** - ``video/mp4``\n- **m4v** - ``video/x-m4v``\n- **mkv** - ``video/x-matroska``\n- **webm** - ``video/webm``\n- **mov** - ``video/quicktime``\n- **avi** - ``video/x-msvideo``\n- **wmv** - ``video/x-ms-wmv``\n- **mpg** - ``video/mpeg``\n- **flv** - ``video/x-flv``\n\nAudio\n^^^^^\n\n- **mid** - ``audio/midi``\n- **mp3** - ``audio/mpeg``\n- **m4a** - ``audio/m4a``\n- **ogg** - ``audio/ogg``\n- **flac** - ``audio/x-flac``\n- **wav** - ``audio/x-wav``\n- **amr** - ``audio/amr``\n\nArchive\n^^^^^^^\n\n- **epub** - ``application/epub+zip``\n- **zip** - ``application/zip``\n- **tar** - ``application/x-tar``\n- **rar** - ``application/x-rar-compressed``\n- **gz** - ``application/gzip``\n- **bz2** - ``application/x-bzip2``\n- **7z** - ``application/x-7z-compressed``\n- **xz** - ``application/x-xz``\n- **pdf** - ``application/pdf``\n- **exe** - ``application/x-msdownload``\n- **swf** - ``application/x-shockwave-flash``\n\n- **rtf** - ``application/rtf``\n- **eot** - ``application/octet-stream``\n- **ps** - ``application/postscript``\n- **sqlite** - ``application/x-sqlite3``\n- **nes** - ``application/x-nintendo-nes-rom``\n- **crx** - ``application/x-google-chrome-extension``\n- **cab** - ``application/vnd.ms-cab-compressed``\n- **deb** - ``application/x-deb``\n- **ar** - ``application/x-unix-archive``\n- **Z** - ``application/x-compress``\n- **lz** - ``application/x-lzip``\n\nFont\n^^^^\n\n- **woff** - ``application/font-woff``\n- **woff2** - ``application/font-woff``\n- **ttf** - ``application/font-sfnt``\n- **otf** - ``application/font-sfnt``\n\n.. _Python: http://python.org\n.. _magic numbers: https://en.wikipedia.org/wiki/Magic_number_(programming)#Magic_numbers_in_files\n.. _filetype: https://github.com/h2non/filetype\n.. _wide range: #supported-types\n.. _Pluggable: #add-additional-file-type-matchers\n.. _Fast: #benchmarks\n.. _pass a list of bytes: #file-header\n.. _annotated API reference: https://h2non.github.io/filetype.py/\n\n.. |Build Status| image:: https://travis-ci.org/h2non/filetype.py.svg?branch=master\n :target: https://travis-ci.org/h2non/filetype.py\n.. |PyPI| image:: https://img.shields.io/pypi/v/filetype.svg?maxAge=2592000?style=flat-square\n :target: https://pypi.python.org/pypi/filetype\n.. |API| image:: https://img.shields.io/badge/api-docs-green.svg\n :target: https://h2non.github.io/filetype.py\n", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/h2non/filetype.py/tarball/master", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/h2non/filetype.py", "keywords": "file libmagic magic infer numbers magicnumbers discovery mime type kind", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "filetype", "package_url": "https://pypi.org/project/filetype/", "platform": "any", "project_url": "https://pypi.org/project/filetype/", "project_urls": { "Download": "https://github.com/h2non/filetype.py/tarball/master", "Homepage": "https://github.com/h2non/filetype.py" }, "release_url": "https://pypi.org/project/filetype/1.0.5/", "requires_dist": null, "requires_python": "", "summary": "Infer file type and MIME type of any file/buffer. No external dependencies.", "version": "1.0.5" }, "last_serial": 4883218, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "bf882eebc358c24fa664d0a3629c858c", "sha256": "d9b501d361b2266c4005be923160f9a3bf2d547d62f253dd4bce8b66a793b0a4" }, "downloads": -1, "filename": "filetype-0.1.0.tar.gz", "has_sig": false, "md5_digest": "bf882eebc358c24fa664d0a3629c858c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2955, "upload_time": "2016-06-19T22:15:50", "url": "https://files.pythonhosted.org/packages/37/4e/da69ba42d42093a9fd4fd72301a5902f272c53932f94f55eb7f050958c61/filetype-0.1.0.tar.gz" } ], "0.1.1": [], "0.1.2": [ { "comment_text": "", "digests": { "md5": "fbbb3e55a9746f524694633029d7cde7", "sha256": "5e1ba4d1352857f23ffa1b0d8ca42c64a997deab7b80baa36ac7857b09b7c7d4" }, "downloads": -1, "filename": "filetype-0.1.2.tar.gz", "has_sig": false, "md5_digest": "fbbb3e55a9746f524694633029d7cde7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9514, "upload_time": "2016-07-31T17:40:06", "url": "https://files.pythonhosted.org/packages/d8/7e/acb498a4163a168d3b1b2cf6a67b7e758c87bd50b966c4ca3e05677bd2cb/filetype-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "e0e894a2988398e111ddd689e4a1ae13", "sha256": "eb4dc024a1b3d36b4d231203112a4ba9046d9138ae192fc89927717c5df17e5b" }, "downloads": -1, "filename": "filetype-0.1.3.tar.gz", "has_sig": false, "md5_digest": "e0e894a2988398e111ddd689e4a1ae13", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7221, "upload_time": "2016-08-17T11:11:31", "url": "https://files.pythonhosted.org/packages/10/8a/fec75155c8af99f5edde881db641d7ce8b587b2858fce84e3970981f1c17/filetype-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "679b55cd37caeb19d4c54764aeccf263", "sha256": "630e8282412e96dff434363019449c8eab333b71b0bb1ddd41e48535c312761c" }, "downloads": -1, "filename": "filetype-0.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "679b55cd37caeb19d4c54764aeccf263", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 11618, "upload_time": "2017-04-08T10:21:30", "url": "https://files.pythonhosted.org/packages/b0/89/b6b033ba1c3e55c70e1c32e08f59cdce5d03bf68445ac93855cd44b04b08/filetype-0.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "12069b601b7a3b27a7a0dea1a51bfd97", "sha256": "6d8f39f4c94e34013a28486d8ff13835e65652df17df50ae0d378f6e06884d6e" }, "downloads": -1, "filename": "filetype-0.1.4.tar.gz", "has_sig": false, "md5_digest": "12069b601b7a3b27a7a0dea1a51bfd97", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7235, "upload_time": "2017-04-08T10:21:27", "url": "https://files.pythonhosted.org/packages/50/bf/51271c3cf8c564d79cf5cfc433c78f2923c6fbd6eedcb6270de73933747f/filetype-0.1.4.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "71de93f774cd24555774dc62011fee3a", "sha256": "86f3622310576eca5b617690a9c4d04617dd71dc2611857e4f0a6dd0eccc4341" }, "downloads": -1, "filename": "filetype-0.1.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "71de93f774cd24555774dc62011fee3a", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 11666, "upload_time": "2017-06-25T09:46:53", "url": "https://files.pythonhosted.org/packages/8a/cf/5fbfd6866a6aa581bd0da797ce1cf0dc038dc74273c3dd5164a56cc37d06/filetype-0.1.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c662081a5c3ed5bda2a2c43a406d513b", "sha256": "abeaa6d9f6e25cbb83ad2c8532f3c74bf4ef04d71055338d187207fd661ea7c6" }, "downloads": -1, "filename": "filetype-0.1.6.tar.gz", "has_sig": false, "md5_digest": "c662081a5c3ed5bda2a2c43a406d513b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7286, "upload_time": "2017-06-25T09:46:50", "url": "https://files.pythonhosted.org/packages/94/fc/e1779129b0d4a540a02288896006f1d7ed8054ad39e1080fb49288001a39/filetype-0.1.6.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "d1f3a65cfbbc172bdc73ed17a220dd17", "sha256": "3745b35eef6399b539c6b639d3a7eaa8eabe4ad91881582d8d2d89452a395707" }, "downloads": -1, "filename": "filetype-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d1f3a65cfbbc172bdc73ed17a220dd17", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 16403, "upload_time": "2017-07-26T07:34:56", "url": "https://files.pythonhosted.org/packages/d1/b1/63883df25da3250c6d20ecaf2525a453a75327cb7ed31726e7659f7db9fd/filetype-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "54d8bbc2f08c4517c63c56823584bb3b", "sha256": "fe3afe00d40b7102b78ffd7ab85defad13657a976ebbcb818b2fdfbba3888c06" }, "downloads": -1, "filename": "filetype-1.0.0.tar.gz", "has_sig": false, "md5_digest": "54d8bbc2f08c4517c63c56823584bb3b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9521, "upload_time": "2017-07-26T07:34:51", "url": "https://files.pythonhosted.org/packages/92/34/ac9fa226ec59dfd66f697807e400e01cba579283d38db498982b88e5e352/filetype-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "fb76cd2eb35c091bdac7227c8bd9a5d0", "sha256": "ef06220f3563ca6452c53470f0e624858c33c6344969cc3146e8d1b1c5989114" }, "downloads": -1, "filename": "filetype-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fb76cd2eb35c091bdac7227c8bd9a5d0", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 16470, "upload_time": "2018-04-14T10:03:32", "url": "https://files.pythonhosted.org/packages/f8/04/9fae77b4addf6612150b6d2a96f33f9c24e1c3e96e7b3fb7034455d665ec/filetype-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "28bab65c0db8abdd0e5a1523e71eb5ec", "sha256": "97b4ec0974b07cbddb3e74cf323d8688749807014055cc91cdbfef5442a94dc5" }, "downloads": -1, "filename": "filetype-1.0.1.tar.gz", "has_sig": false, "md5_digest": "28bab65c0db8abdd0e5a1523e71eb5ec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11930, "upload_time": "2018-04-14T10:03:29", "url": "https://files.pythonhosted.org/packages/b1/e4/b4451d2c83baae2ec6ac9a1f2f5a0bdb689bf95eb81620c62c6198da3718/filetype-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "c282d3dc901dbe816e041396f77120b7", "sha256": "e2eeddc7b4109694a48907d5114cccbcd3dc54c9eea7b63d6e3854a80ac719b0" }, "downloads": -1, "filename": "filetype-1.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c282d3dc901dbe816e041396f77120b7", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 17186, "upload_time": "2019-01-11T12:11:36", "url": "https://files.pythonhosted.org/packages/62/15/20fd92a08155ceccd20005b0f966cc38aef02ab28fa3e957adb7aaebfca5/filetype-1.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "16ecd4f424ab3f04ec2e8e3434760ed7", "sha256": "31255843ec8b95eec26f7e08817bc42e4017659321a7d3c1818a7664f8a09aef" }, "downloads": -1, "filename": "filetype-1.0.2.tar.gz", "has_sig": false, "md5_digest": "16ecd4f424ab3f04ec2e8e3434760ed7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12365, "upload_time": "2019-01-11T12:11:33", "url": "https://files.pythonhosted.org/packages/4c/e6/25cc15cc3d00fc9fe91cbac12f6623ba7f94323f2d3348c9b245f6c2533f/filetype-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "05585cea09c04f2ec9ed9cb76b8b4661", "sha256": "0e63623958e4c3cc76dca7fcf39132d5e389b6da15c9067a8269e0061a61e21f" }, "downloads": -1, "filename": "filetype-1.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "05585cea09c04f2ec9ed9cb76b8b4661", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 17293, "upload_time": "2019-02-01T12:27:33", "url": "https://files.pythonhosted.org/packages/8d/bd/044be1d8d4b95958d49d7dae35b3caa6695204c041a7a23f2b5eab18fd24/filetype-1.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "96f7b5c1e73732b70be5f53b2016f318", "sha256": "74ccbd9ca5c95aad5665eee2f173fb1930226a12f05b0bc7380b1d456a86fcdf" }, "downloads": -1, "filename": "filetype-1.0.3.tar.gz", "has_sig": false, "md5_digest": "96f7b5c1e73732b70be5f53b2016f318", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 607943, "upload_time": "2019-02-01T12:27:30", "url": "https://files.pythonhosted.org/packages/4d/e9/b80797209a1592dbf9b5312f6f640c2148a1fece5c672a93b66ae1f624c0/filetype-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "0a9686dd88d054f3b23d2978426f11a6", "sha256": "c2a4bdccd3f41a0523cfd65ed3833eff035145843fb9354965f61436519a33a0" }, "downloads": -1, "filename": "filetype-1.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0a9686dd88d054f3b23d2978426f11a6", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 17383, "upload_time": "2019-02-09T11:02:38", "url": "https://files.pythonhosted.org/packages/4c/b9/a8f89f76cfb5fb4119ab2b0e54f0d6a93cf05b9de86a2b805d67d26de94d/filetype-1.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ddfdf35392e5a9103fa875e8a5cafded", "sha256": "366c50d0211798e696626f125134163ac2fff25a70131eec80a1d1a6196c1027" }, "downloads": -1, "filename": "filetype-1.0.4.tar.gz", "has_sig": false, "md5_digest": "ddfdf35392e5a9103fa875e8a5cafded", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 608108, "upload_time": "2019-02-09T11:02:34", "url": "https://files.pythonhosted.org/packages/a3/11/7027d14e19927721f7da0acd704e2d8241472e6dc3a57a99ee01c47e27b1/filetype-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "38fc77b329c9bf7cb5fc69bdfedaa2e9", "sha256": "4967124d982a71700d94a08c49c4926423500e79382a92070f5ab248d44fe461" }, "downloads": -1, "filename": "filetype-1.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "38fc77b329c9bf7cb5fc69bdfedaa2e9", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 17477, "upload_time": "2019-03-01T09:21:19", "url": "https://files.pythonhosted.org/packages/1c/78/047cf0f371f8faafab05b5062f902d4bedd945d436544b30db692622ab84/filetype-1.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ab967600474756193788e979dbd209b3", "sha256": "17a3b885f19034da29640b083d767e0f13c2dcb5dcc267945c8b6e5a5a9013c7" }, "downloads": -1, "filename": "filetype-1.0.5.tar.gz", "has_sig": false, "md5_digest": "ab967600474756193788e979dbd209b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 668401, "upload_time": "2019-03-01T09:21:16", "url": "https://files.pythonhosted.org/packages/e8/53/298887541ae479f8467d4d23e028c6d15f9811da25c582297fd3869666b7/filetype-1.0.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "38fc77b329c9bf7cb5fc69bdfedaa2e9", "sha256": "4967124d982a71700d94a08c49c4926423500e79382a92070f5ab248d44fe461" }, "downloads": -1, "filename": "filetype-1.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "38fc77b329c9bf7cb5fc69bdfedaa2e9", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 17477, "upload_time": "2019-03-01T09:21:19", "url": "https://files.pythonhosted.org/packages/1c/78/047cf0f371f8faafab05b5062f902d4bedd945d436544b30db692622ab84/filetype-1.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ab967600474756193788e979dbd209b3", "sha256": "17a3b885f19034da29640b083d767e0f13c2dcb5dcc267945c8b6e5a5a9013c7" }, "downloads": -1, "filename": "filetype-1.0.5.tar.gz", "has_sig": false, "md5_digest": "ab967600474756193788e979dbd209b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 668401, "upload_time": "2019-03-01T09:21:16", "url": "https://files.pythonhosted.org/packages/e8/53/298887541ae479f8467d4d23e028c6d15f9811da25c582297fd3869666b7/filetype-1.0.5.tar.gz" } ] }