code: def __init__(self, config):
      self.config = config
  
      # initialize db
      db_cls = get_database(
          config.get("database_type", "mysql").lower()
      )
  
      self.db = db_cls(**config.get("database", {}))
      self.db.setup()
  
      # if we should limit seconds fingerprinted,
      # None|-1 means use entire track
      self.limit = self.config.get("fingerprint_limit", None)
      if self.limit == -1:  # for JSON compatibility
          self.limit = None
      self.__load_fingerprinted_audio_hashes()
  
imports: import multiprocessing
  import os
  import sys
  import traceback
  from itertools import groupby
  from time import time
  from typing import Dict, List, Tuple
  import dejavu.logic.decoder
  from dejavu.base_classes.base_database import get_database
  from dejavu.config.settings import DEFAULT_FS, DEFAULT_OVERLAP_RATIO, DEFAULT_WINDOW_SIZE, FIELD_FILE_SHA1, FIELD_TOTAL_HASHES, FINGERPRINTED_CONFIDENCE, FINGERPRINTED_HASHES, HASHES_MATCHED, INPUT_CONFIDENCE, INPUT_HASHES, OFFSET, OFFSET_SECS, SONG_ID, SONG_NAME, TOPN
  from dejavu.logic.fingerprint import fingerprint
label_desc: Use image node_id 1 to create a new Dejavu object  with example: obj = Dejavu(config)