Class: Magika

Inherits:
Object
  • Object
show all
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

Constructor Details

#initializeMagika

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