Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
136 lines (101 sloc) 4.72 KB

GitHub CodeFactor Development snapshots

sist2

sist2 (Simple incremental search tool)

Warning: sist2 is in early development

sist2.png

Features

  • Fast, low memory usage, multi-threaded
  • Mobile-friendly Web interface
  • Portable (all its features are packaged in a single executable)
  • Extracts text from common file types *
  • Generates thumbnails *
  • Incremental scanning
  • Automatic tagging from file attributes via user scripts
  • Recursive scan inside archive files **
  • OCR support with tesseract ***

* See format support
** See Archive files
*** See OCR

Getting Started

  1. Have an Elasticsearch (>= 6.X.X) instance running

    1. Download from official website
    2. (or) Run using docker:
      docker run -d --name es1 --net sist2_net -p 9200:9200 \
          -e "discovery.type=single-node" elasticsearch:7.5.2
    3. (or) Run using docker-compose:
        elasticsearch:
          image: docker.elastic.co/elasticsearch/elasticsearch:7.5.2
          environment:
            - discovery.type=single-node
            - "ES_JAVA_OPTS=-Xms1G -Xmx2G"
  2. Download sist2 executable

    1. Download the latest sist2 release *
    2. (or) Download a development snapshot (Not recommended!)
    3. (or) docker pull simon987/sist2:latest
  3. See Usage guide

* Windows users: sist2 runs under WSL
* Mac users: See #1

Example usage

See Usage guide for more details

  1. Scan a directory: sist2 scan ~/Documents -o ./docs_idx
  2. Push index to Elasticsearch: sist2 index ./docs_idx
  3. Start web interface: sist2 web ./docs_idx

Format support

File type Library  Content Thumbnail Metadata
pdf,xps,cbz,cbr,fb2,epub MuPDF text+ocr yes, png title
audio/* ffmpeg - yes, jpeg ID3 tags
video/* ffmpeg - yes, jpeg title, comment, artist
image/* ffmpeg - yes, jpeg Common EXIF tags
ttf,ttc,cff,woff,fnt,otf Freetype2 - yes, bmp Name & style
text/plain (none) yes no -
tar, zip, rar, 7z, ar ... Libarchive yes* - no
docx, xlsx, pptx libOPC yes no no

* See Archive files

Archive files

sist2 will scan files stored into archive files (zip, tar, 7z...) as if they were directly in the file system. Recursive (archives inside archives) scan is also supported.

Limitations:

  • Parsing media files with formats that require seek (e.g. .gif, .mp4 w/ fragmented metadata etc.) is not supported.
  • Archive files are scanned sequentially, by a single thread. On systems where sist2 is not I/O bound, scans might be faster when larger archives are split into smaller parts.

To check if a media file can be parsed without seek, execute cat file.mp4 | ffprobe -

OCR

You can enable OCR support for pdf,xps,cbz,cbr,fb2,epub file types with the --ocr <lang> option. Download the language data files with your package manager (apt install tesseract-ocr-eng) or directly from Github.

The simon987/sist2 github image comes with common languages (hin, jpn, eng, fra, rus, spa) pre-installed.

Examples

sist2 scan --ocr jpn ~/Books/Manga/
sist2 scan --ocr eng ~/Books/Textbooks/

Build from source

You can compile sist2 by yourself if you don't want to use the pre-compiled binaries.

  1. Install compile-time dependencies

    (Debian)

    apt install git cmake pkg-config libglib2.0-dev \
        libssl-dev uuid-dev python3 libmagic-dev libfreetype6-dev \
        libcurl4-openssl-dev libbz2-dev yasm libharfbuzz-dev ragel \
        libarchive-dev libtiff5 libpng16-16 libpango1.0-dev \
        libxml2-dev
  2. Build

    git clone --recurse-submodules https://github.com/simon987/sist2
    ./scripts/get_static_libs.sh
    cmake .
    make
You can’t perform that action at this time.