An Elisp snippet to dowload YouTube videos transcripts
I was watching an amazing lecture by Donella Meadows and I wanted to save some quotes in my notes. I just checked if the Python community had a package for it and lucky me: the pythonist t4skmanag3r made https://github.com/t4skmanag3r/youtube_transcript_downloader!!
So after installing it with pip install youtube_transcript_downloader
I made a nice little Elisp wrapper to get the transcript as a plist:
(defun get-youtube-transcript (url)
  "Get YouTube transcript of URL."
  (if (s-contains-p "youtube-transcript-downloader" (shell-command-to-string "pip list"))
      (progn (with-temp-file "/tmp/yt-transcr-downloader.py"
               (insert
                (format "
import youtube_transcript_downloader
url = \"%s\"
transcript = youtube_transcript_downloader.get_transcript(url)
print(\"(\")
for key, val in transcript.items():
        print(f\"(:key \\\"{key}\\\" :text \\\"{val}\\\")\")
print(\")\")
" url)))
             (read (shell-command-to-string "python3 /tmp/yt-transcr-downloader.py")))
    (error "Please install youtube_transcript_downloader via pip install youtube_transcript_downloader")))
You can use it like this (get-youtube-transcript "https://www.youtube.com/watch?v=vJ1STks8MUU").
Happy transcripting!