yt-fts is a simple python script that uses yt-dlp to scrape all of a youtube channels subtitles
and load them into an sqlite database that is searchable from the command line. It allows you to
query a channel for specific key word or phrase and will generate time stamped youtube urls to
the video containing the keyword.

Installation

git clone https://github.com/NotJoeMartinez/yt-fts
python3 -m venv .env
source .env/bin/activate
pip install -r requirements.txt

This project requires yt-dlp installed globally. See here if you have issues.

pip

python3 -m pip install -U yt-dlp

homebrew

Usage

Usage: yt_fts.py [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  delete    delete [channel id]
  download  download [channel url]
  export    export [channel id] [search text]
  list      Lists channels
  search    search [channel id] [search text]

download

Will download all of a channels vtt files into your database

python yt_fts.py download "https://www.youtube.com/@TimDillonShow/videos"

If this fails you can manually input the channel id with the --channel-id flag

python yt_fts.py download "https://www.youtube.com/@TimDillonShow/videos" --channel-id "UC4woSp8ITBoYDmjkukhEhxg"

list

Will list all of your downloaded channels

output:

Listing channels
channel_id                channel_name         channel_url
------------------------  -------------------  ---------------------------------------------------------------
UC4woSp8ITBoYDmjkukhEhxg  The Tim Dillon Show  https://www.youtube.com/channel/UC4woSp8ITBoYDmjkukhEhxg/videos

search

Will search a channel for text based off the channel id you give it and
will print a url to that point in the video

python yt_fts.py search [channel_id] "text you want to find"

EX:

python yt_fts.py search UC4woSp8ITBoYDmjkukhEhxg "life in the big city"

output:

Video title"("#208 - Let's Have A Party | The Tim Dillon Show - YouTube",)"

    Quote: "life in the big city Dan is wearing the"
    Time Stamp: 01:50:07.790
    Link: https://youtu.be/CJ_KAsz8rjQ?t=6604

Video title"('#176 - The Florida Project | The Tim Dillon Show - YouTube',)"

    Quote: "the show life in the big city love these"
    Time Stamp: 00:31:05.669
    Link: https://youtu.be/nKcqbHQndFQ?t=1862

Video title"('164 - Life In The Big City - YouTube',)"

    Quote: "life in the big city it was one of my"
    Time Stamp: 00:27:17.549
    Link: https://youtu.be/dqGyCTbzYmc?t=1634

Export

Similar to search except it will export all of the search results to a csv
with the format: Video Title,Quote,Time Stamp,Link as it’s headers

Delete

Will delete a channel from your database

python yt_fts.py delete [channel_id]

Read More