Search for specific words or phrases in subtitle files and watch video fragments with mpv.
Inspired by videogrep and playphrase.me.
At first, run python playphrase.py -i <media_dir> _init_
to generate txt files from srt files that will be used for searching (only the first time or when you add a new movie in the media folder).
After that, use python playphrase.py -i <media_dir> <phrase>
Regular expressions can be used too, for example, \b for word boundary.
Use Enter
to move to the next clip or Shift + <
and Shift + >
to switch between clips, Ctrl + Left
and Ctrl + Right
to move to the prev/next subtitle, q
to close the video player.
More info: https://mpv.io/manual/stable/#keyboard-control
The repository contains videogrep.bat
(Windows) and videogrep.sh
(Linux) files to simplify the user input. Before running it for the first time, edit the file in a text editor and update media_dir
path. Use quit
, exit
or q
, x
to exit from the batch script.
Here's a quick demo how to set up and run videogrep.bat
on Windows (YouTube).
-p SECONDS, --padding
padding in seconds to add to the start and the end of each clip (default=0.0 seconds)-e SECONDS, --ending
play only matching lines (or phrases)-r, --randomize
randomize the clips-a, --audio
create audio fragments-v, --video
create video fragments-s, --subtitles
create subtitles-vs, --video-sub
create video fragments with hardcoded subtitles-o DIRNAME, --output
the output folder for audio and video fragments (default=.)-d, --demo
only show grep results-g FILENAME, --grep-output
write the 'grep' output to the file-ph GAP_BETWEEN_PHRASES, --phrases
move the start time of the clip to the beginning of the current phrase (default=1.25 seconds)-l SECONDS, --limit
maximum phrase's duration (default=60 seconds)-m OPTIONS, --mpv-options
mpv player options
For example, you can modify mpv.conf
autofit=900
geometry=50%:50%
and input.conf
ENTER playlist-next force
More info: https://mpv.io/manual/
See https://github.com/kelciour/playphrase/releases
It's possible to use audiobooks as media input. For that purpose there's audiogrep.bat
and audiogrep.sh
files to simplify user input. But you need to generate subtitles for every audio file. It can be done almost automatically using aeneas. Also csplit can be used to split text of the book by chapters and Pragmatic Segmenter to split chapter's content by "sentences".
Here's example video how it looks like (YouTube):
- python 3
- grep or ripgrep (for non-ASCII languages)
- mpv
- ffmpeg
- playphrase requires the subtitle track and the video file to have the exact same name, up to the extension.