The Greek verb "heuriskó" primarily means to find or discover something, whether it be a physical object, a person, or an abstract concept such as truth or understanding. It can also imply obtaining or acquiring something through effort or search. In the New Testament, it is often used in contexts where something lost is found, or where a truth or revelation is discovered. - BibleHub
This is designed to be a self-hostable API to store and search through any set of transcripts.
My intention is to provide a solution to search through sermons and related lectures to find ranked, relevant results containing the time-stamps of the original sources extremely fast.
I do recognize that this can have value beyond the particular scope for which it was made. Perhaps I will create something similar to index documents in the future.
.sbv: SubViewer.srt: SubRip.json: WhisperX (without alignment).json: WhisperX (with alignment).json: YouTube Transcript
Use the CLI to convert transcript files into the format that heurisko uses
Host all heurisko transcript files with API endpoints to be used by your application
This is not currently published anywhere so the installation is as follows:
git clone https://github.com/MasterTemple/heurisko.git
cd heurisko
cargo install --path .Note: All necessary config files are generated by heurisko with defaults, this section is for modifying the defaults
The default location is ~/.config/heurisko/config.toml
# where all heurisko files are stored
data_dir = "/home/<your_username>/.local/share/heurisko"
# the number of results to return on each page for a given query/search
page_size = 50
# the amount of additional words that should be returned on each side of the found segment of words
context_size = 20Note: the relative path from the config.toml > data_dir will be used to identify the source later on (see below)
heurisko/
├── nested
│ ├── nested1.hsk # Identified as "nested/nested1"
│ ├── nested2.hsk # Identified as "nested/nested2"
│ └── nested3.hsk # Identified as "nested/nested3"
├── transcript1.hsk # Identified as "transcript1"
├── transcript2.hsk # Identified as "transcript2"
└── transcript3.hsk # Identified as "transcript3"By default, all heurisko (.hsk) files are stored at ~/.local/share/heurisko/
Given:
.
└── one_transcript.srtRun:
heurisko convert "one_transcript.srt"Results:
heurisko/
└── one_transcript.hskGiven:
.
└── one_transcript.srtRun:
# It will create this directory if it doesn't exist
heurisko convert "one_transcript.srt" --destination "some/nested/folder"Results:
heurisko/
└── some
└── nested
└── folder
└── one_transcript.hskGiven:
transcripts/
├── nested
│ ├── nested1.srt
│ ├── nested2.srt
│ └── nested3.srt
├── transcript1.srt
├── transcript2.srt
└── transcript3.srtRun:
heurisko convert "transcripts"Results:
heurisko/
├── nested
│ ├── nested1.hsk
│ ├── nested2.hsk
│ └── nested3.hsk
├── transcript1.hsk
├── transcript2.hsk
└── transcript3.hskGiven:
transcripts/
├── nested
│ ├── nested1.srt
│ ├── nested2.srt
│ └── nested3.srt
├── transcript1.srt
├── transcript2.srt
└── transcript3.srtRun:
heurisko convert "transcripts" --flattenResults:
heurisko/
├── nested1.hsk
├── nested2.hsk
├── nested3.hsk
├── transcript1.hsk
├── transcript2.hsk
└── transcript3.hskGiven:
transcripts/
├── nested
│ ├── nested1.srt
│ ├── nested2.srt
│ └── nested3.srt
├── transcript1.srt
├── transcript2.srt
└── transcript3.srtRun:
heurisko convert "transcripts" --destination "some/nested/folder"Results:
heurisko/
└── some
└── nested
└── folder
├── nested
│ ├── nested1.hsk
│ ├── nested2.hsk
│ └── nested3.hsk
├── transcript1.hsk
├── transcript2.hsk
└── transcript3.hskGiven:
transcripts/
├── nested
│ ├── nested1.srt
│ ├── nested2.srt
│ └── nested3.srt
├── transcript1.srt
├── transcript2.srt
└── transcript3.srtRun:
heurisko convert "transcripts" --destination "some/nested/folder" --flattenResults:
heurisko/
└── some
└── nested
└── folder
├── nested1.hsk
├── nested2.hsk
├── nested3.hsk
├── transcript1.hsk
├── transcript2.hsk
└── transcript3.hskheurisko host