일부 YouTube 콘텐츠 제작자는 동영상을 여러 장으로 나눕니다. 그들 중 일부는 설명 비디오에 장 제목 목록과 시작 타임스탬프를 친절하게 제공했습니다. 때때로 그들은 보여주지 않기로 결정합니다.
장 제목 목록을 얻는 방법은 무엇입니까?
답변1
이 작업을 수행하려면 한 줄의 코드를 사용하세요.yt-dlp
(더 나은 대안youtube-dl
) 그리고jq
JSON 핸들러:
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