Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ua-nick/fleep-py
File format determination library for Python
https://github.com/ua-nick/fleep-py
extension file-extensions file-format file-format-detection file-type-detection file-types fileformat filetype magic-number magic-numbers mimetype
Last synced: 7 days ago
JSON representation
File format determination library for Python
- Host: GitHub
- URL: https://github.com/ua-nick/fleep-py
- Owner: ua-nick
- License: mit
- Created: 2017-12-27T20:53:27.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2024-05-21T21:53:55.000Z (9 months ago)
- Last Synced: 2024-11-08T07:03:29.584Z (3 months ago)
- Topics: extension, file-extensions, file-format, file-format-detection, file-type-detection, file-types, fileformat, filetype, magic-number, magic-numbers, mimetype
- Language: Python
- Homepage: https://pypi.python.org/pypi/fleep
- Size: 119 KB
- Stars: 262
- Watchers: 9
- Forks: 40
- Open Issues: 17
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
fleep
=====File format determination library for Python
|pypi version| |python version| |license|
Getting Started
---------------**fleep** is a library that determines file format by file signature (also known as "magic number").
Installation
------------You can install fleep using *pip*. Simply run in CLI:
::
pip install fleep
Requirements
------------- Python >= 3.1
In Use
------fleep has main function *get()* that determines file format. It takes byte sequence (128 bytes are enough) as an argument and returns an instance of class *Info* with the following arguments:
- *type* -> list of suitable file types
- *extension* -> list of suitable file extensions
- *mime* -> list of suitable file MIME typesYou may presume that first element in list will be the most suitable.
Also an instance of class *Info* has the following methods:
- *type_matches()* -> checks if file type matches with given type as an argument
- *extension_matches()* -> checks if file extension matches with given extension as an argument
- *mime_matches()* -> checks if file MIME type matches with given MIME type as an argumentThere are 3 more functions:
- *supported_types()* -> returns a list of supported file types
- *supported_extensions()* -> returns a list of supported file extensions
- *supported_mimes()* -> returns a list of supported file MIME typesExamples
--------You can find examples in *examples* folder. There is a simple example:
.. code:: python
import fleep
with open("png_image", "rb") as file:
info = fleep.get(file.read(128))print(info.type) # prints ['raster-image']
print(info.extension) # prints ['png']
print(info.mime) # prints ['image/png']print(info.type_matches("raster-image")) # prints True
print(info.extension_matches("gif")) # prints False
print(info.mime_matches("image/png")) # prints TrueTests
-----You can find tests in *tests* folder. There are results of speed test:
**Workstation**
- Python 3.6 x64 bit
- Windows 10 Home x64 bit
- Intel Pentium G4620 3.70GHz
- Kingston DDR4-2400 8192MB
- Kingston SSD 120GB 550MB/s**Results**
*Note:* 0.0012345 -> time in seconds
+-----------+---------+-----------+-----------+
| Iteration | Minimum | Maximum | Average |
+===========+=========+===========+===========+
| 1 | 0.0 | 0.0005312 | 0.0000851 |
+-----------+---------+-----------+-----------+
| 2 | 0.0 | 0.0005360 | 0.0000858 |
+-----------+---------+-----------+-----------+
| 3 | 0.0 | 0.0005236 | 0.0000837 |
+-----------+---------+-----------+-----------+
| 4 | 0.0 | 0.0005035 | 0.0000833 |
+-----------+---------+-----------+-----------+
| 5 | 0.0 | 0.0005295 | 0.0000835 |
+-----------+---------+-----------+-----------+Supported Formats
-----------------There is a list of supported formats (in alphabetical order):
*Raster Image:*
- BMP
- GIF
- ICO
- JP2
- JPEG
- PNG
- PSD
- TIFF
- WEBP*Raw Image:*
- ARW
- CR2
- CRW
- DNG
- ERF
- NEF
- NRW
- ORF
- PEF
- RAF
- RAW
- RW2
- SRW
- X3F*Vector Image:*
- AI
- EPS*3D Image:*
- C4D
- FBX
- MA
- MS3D
- MTL
- OBJ
- PLY
- WRL
- X3D
- XSI*Audio:*
- AAC
- AC3
- AIFF
- AMR
- AU
- FLAC
- M4A
- MIDI
- MKA
- MP3
- OGA
- RA
- VOC
- WAV
- WMA*Video:*
- 3G2
- 3GP
- ASF
- AVI
- FLV
- M4V
- MKV
- MOV
- MP4
- MPG
- OGV
- SWF
- VOB
- WEBM
- WMV*Document:*
- DOC
- DOCX
- EPUB
- KEY
- NUMBERS
- ODP
- ODS
- ODT
- PAGES
- PPS
- PPT
- PPTX
- RTF
- XLS
- XLSX
- XML*Archive:*
- 7Z
- DMG
- GZ
- ISO
- RAR
- TAR.Z
- ZIP*Executable:*
- COM
- EXE
- JAR*Font:*
- OTF
- TTF
- WOFF
- WOFF2*System:*
- CAB
- CAT
- DLL
- DRV
- REG
- SDB
- SYS*Database:*
- SQLITE
Changelog
---------You can find changelog in *CHANGELOG.md* file.
License
-------This project is licensed under the *MIT License*.
Authors
-------**Mykyta Paliienko** - `GitHub profile`_
.. _GitHub profile: https://github.com/floyernick
.. |pypi version| image:: https://img.shields.io/badge/pypi-v1.0.1-blue.svg
:target: https://pypi.python.org/pypi/fleep
.. |python version| image:: https://img.shields.io/badge/python-3-blue.svg
.. |license| image:: https://img.shields.io/badge/license-MIT-blue.svg
:target: https://github.com/floyernick/fleep/blob/master/LICENSE