Class: Magika
- Inherits:
-
Object
- Object
- Magika
- Defined in:
- lib/magika.rb
Defined Under Namespace
Classes: FileType
Constant Summary collapse
- MODEL_NAME =
"standard_v3_3"- ASSETS_DIR =
File.join(__dir__, "../vendor/magika/assets")
- MODEL_PATH =
File.join(model_dir, "model.onnx")
- MODEL_CONFIG_PATH =
File.join(model_dir, "config.min.json")
- MODEL_CONFIG =
JSON.load_file(MODEL_CONFIG_PATH, symbolize_names: true)
- TARGET_LABELS_SPACE =
Numo::RObject[MODEL_CONFIG[:target_labels_space].collect!(&:to_sym)]
- MIN_FILE_SIZE_FOR_DL =
MODEL_CONFIG[:min_file_size_for_dl]
- VERSION_MAJOR =
MODEL_CONFIG[:version_major]
Instance Method Summary collapse
- #identify_io(io) ⇒ Object
- #identify_path(path) ⇒ Object
-
#initialize ⇒ Magika
constructor
A new instance of Magika.
Constructor Details
#initialize ⇒ Magika
Returns a new instance of Magika.
18 19 20 |
# File 'lib/magika.rb', line 18 def initialize @session = OnnxRuntime::InferenceSession.new(MODEL_PATH) end |
Instance Method Details
#identify_io(io) ⇒ Object
35 36 37 38 39 40 41 42 |
# File 'lib/magika.rb', line 35 def identify_io(io) features, label = extract_features_or_label(io) if features FileType.from_inference(infer_from_features(features)) else FileType.new(label, 1.0) end end |
#identify_path(path) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/magika.rb', line 22 def identify_path(path) stat = File.lstat(path) if stat.directory? return FileType.new(:directory, 1.0) end if stat.symlink? return FileType.new(:symlink, 1.0) end File.open(path, "rb", encoding: Encoding::BINARY) {|file| identify_io(file) } end |