youtube-dl/yt-dlp를 사용하여 YouTube 동영상의 장 제목을 나열하는 방법

youtube-dl/yt-dlp를 사용하여 YouTube 동영상의 장 제목을 나열하는 방법

일부 YouTube 콘텐츠 제작자는 동영상을 여러 장으로 나눕니다. 그들 중 일부는 설명 비디오에 장 제목 목록과 시작 타임스탬프를 친절하게 제공했습니다. 때때로 그들은 보여주지 않기로 결정합니다.

장 제목 목록을 얻는 방법은 무엇입니까?

답변1

이 작업을 수행하려면 한 줄의 코드를 사용하세요.yt-dlp(더 나은 대안youtube-dl) 그리고jqJSON 핸들러:

yt-dlp --dump-json  videoIDorURL | jq --raw-output ".chapters[].title"

시작 타임스탬프를 얻으려면:

 | jq --raw-output ".chapters[].start_time" | awk '{printf("%d:%02d:%02d\n",($1/60/60%24),($1/60%60),($1%60))}'

그리고paste그리고프로세스 교체 두 가지를 결합할 수 있습니다. .bashrc/에 추가할 수 있는 기능 은 다음과 같습니다 .zshrc.

function get_chapters_times() {
  paste <(yt-dlp --dump-json $1 | jq --raw-output ".chapters[].start_time" | awk '{printf("%d:%02d:%02d\n",($1/60/60%24),($1/60%60),($1%60))}') <(yt-dlp --dump-json $1 | jq --raw-output ".chapters[].title")
}

다음을 반환합니다:

$ get_chapters_times https://youtu.be/DxL2HoqLbyA
0:00:00 Intro
0:02:15 History
0:04:16 Ideal Engine
0:09:48 Entropy
0:11:03 Energy Spread
0:14:49 Air Conditioning
0:17:26 Life on Earth
0:19:35 The Past Hypothesis
0:21:43 Hawking Radiation
0:23:31 Heat Death of the Universe
0:24:52 Conclusion

사용yt-dlp --split-chapters모든 장을 다운로드하세요.

답변2

다음은 프로세스 대체와 함수 정의가 필요 없는 Pablo의 답변에서 영감을 받은 더 재미있는 농담입니다.
yt-dlp videoURL --dump-json | jq -r ".chapters[] | {start_time, title}" | awk -v count="2" '++count==4{$0=sprintf(" \"start\":%d:%02d:%02d",($2/60/60%24),($2/60%60),($2%60));count=0} 1' | awk -F '":' '{print $2}' | gsed -r -e '/^\s*$/d' -e 's/^ "|"$//g' | paste -d " " - -
awks와 gsed는 아마도 서로 병합될 수 있지만 더 복잡해집니다.

(alias: ) 매개변수를 사용하면 이점을 얻을 yt-dlp수도 있습니다 .--embed-chapters--add-chapters

관련 정보