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.
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
brew install yt-dlp
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]
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"
Will list all of your downloaded channels
python yt_fts.py list
output:
Listing channels
channel_id channel_name channel_url
------------------------ ------------------- ---------------------------------------------------------------
UC4woSp8ITBoYDmjkukhEhxg The Tim Dillon Show https://www.youtube.com/channel/UC4woSp8ITBoYDmjkukhEhxg/videos
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
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
Will delete a channel from your database
python yt_fts.py delete [channel_id]