좋아하는 유튜브 영상은 직접 받아두라, ytdl-sub와 Jellyfin으로 만든 개인 아카이브
- 작성자는 유튜브 좋아요 재생목록에서 초기 영상 상당수가 이미 사라졌음을 확인하고 좋아하는 영상은 yt-dlp 같은 도구로 직접 내려받아 보관하라고 권함, 재생목록 설정에서 '사용할 수 없는 동영상' 표시를 직접 켜야 할 만큼 삭제가 흔함
- 기본 도구는 yt-dlp와 여러 래퍼(Stacher 등)로 충분하고 벌크 저장 드라이브나 NAS 폴더 하나면 되지만, 재생목록 구조 유지가 필요해 작성자는 .yaml 설정과 docker-compose, 내장 웹 VSCode IDE를 갖춘 ytdl-sub을 골랐음
- Jellyfin은 재생목록을 1차 구조로 지원하지 않고 TV Shows/Movies, Artists/Albums 구조만 강제해서, 작성자는 TV Shows 모드의 YouTube 라이브러리를 만들고 메타데이터 스크래퍼를 모두 끔
- ytdl-sub 기본값은 시즌을 연도로 태그하고 파일은 재생목록 이름 폴더에 저장해서 같은 영상이 채널 안에 연도 시리즈와 재생목록 시리즈 두 곳에 나타남, 재생목록 제목을 시즌 번호로 지정하면 해결되지만 이미 가져온 영상은 라이브러리 전체 재가져오기 없이는 갱신되지 않음
- Tdarr로 라이브러리를 HEVC/H.265로 재인코딩해 2TB에서 약 700GB를 절약했지만 UI가 복잡하고 조금만 복잡해져도 깨지며 Jellyfin 썸네일이 사라지는 문제가 있음
Hacker News 의견들
유튜브 영상 보는 것 자체가 이미 다운로드임. 보고 나서 지우는 척하는 건 변호사들 폭발을 막으려는 관행일 뿐이니, 그냥 지우지만 말면 됨.
그건 좀 다름. 스트리밍은 청크를 메모리로 받는 거고 유튜브 영상은 디스크 캐시에도 안 남을 때가 많음. 지울 단계가 있어서 안 지키는 게 아니라, 진짜 다운로드는 완전히 다른 작업임.
Tdarr까지 쓸 필요 있나? yt-dlp --recode-video 옵션 쓰면 훨씬 간단하지 않나.
내 Tdarr 인스턴스는 다른 미디어용으로 이미 돌고 있었음. 라이브러리 하나 추가하는 게 ytdl-sub에 재인코딩 붙이는 것보다 쉬웠고, 처음부터 시작하는 거면 --recode-video가 맞는 선택임.
검색해서 결과를 yt-dlp로 넘기는 게 항상 문제임. 다들 뭐 씀? 브라우저 콘솔 스니펫으로 검색 결과 페이지 전체의 yt-dlp 명령을 클립보드에 복사하는 방법밖에 못 봤음.
공식 유튜브 API는 레이트 리밋이 걸리고 스크래핑도 똑같음. 인덱스는 구글 서버에 있으니 없는 영상까지 검색하려면 거대한 섀도 인덱스를 따로 만들어야 하는데, 거기서 다시 레이트 리밋 벽에 부딪힘.
유튜브가 자주 바뀌니 이런 도구가 계속 깨지는 건 정상임. 그래도 요즘은 코딩 에이전트에 던지면 15분이면 고침. 나는 playwright로 검색 결과를 파싱하는 프론트엔드를 직접 만들어서 씀.
나는 FreeTube에서 검색해서 한 번에 재생목록에 담고 그걸 yt-dlp로 넘김. 인터넷이 느려서 이게 주 시청 방식이고, FreeTube에서 직접 열지도 않음.
Podsync 쓰면 재생목록에 영상 추가하는 방식으로 받아서 XML 피드로 뿌려줌. 팟캐스트용 도구지만 이런 아카이브 용도에도 맞음.
이거 또 yt-dlp 래퍼임?
아님. Jellyfin으로 유튜브 아카이브 정리한 사람 블로그 글임.
링크 좀 눌러보고 물어봐. 래퍼 맞긴 한데 글의 요점은 그게 아님.
나는 재밌는 채널은 통째로 다운로드함. 몇 년 자동화 돌려놔서 지금 유료 장벽 뒤에 있는 콘텐츠도 그대로 접근 가능함.
뭐로 돌림? 나도 세팅 좀 해보고 싶음.
Myles Power 채널을 안 받아둔 게 후회됨. 몇 년 전에 채널을 통째로 날려버려서 대부분 로스트 미디어가 됐고, 다시 보고 싶어도 방법이 없음.
내 재생목록엔 '15개의 사용할 수 없는 동영상 숨김'이 뜸. 5년 된 재생목록이면 10% 정도가 사라졌고 15년 전 영상은 저작권 대재앙으로 완전히 사라짐.