6P by neo 4달전 | favorite | 댓글 1개
  • 32비트 ARM 빌드 중단

    • 새로운 Node 버전이 32비트 ARM을 지원하지 않음
    • 보안 업데이트와 종속성 문제로 64비트 OS로 마이그레이션 필요
  • MeTube 소개

    • youtube-dl의 웹 GUI (yt-dlp 포크 사용)
    • YouTube 및 여러 사이트에서 비디오 다운로드 지원

Docker로 실행

  • Docker 명령어

    docker run -d -p 8081:8081 -v /path/to/downloads:/downloads ghcr.io/alexta69/metube
    
  • docker-compose 예제

    version: "3"
    services:
      metube:
        image: ghcr.io/alexta69/metube
        container_name: metube
        restart: unless-stopped
        ports:
          - "8081:8081"
        volumes:
          - /path/to/downloads:/downloads
    

환경 변수로 설정

  • UID: MeTube가 실행될 사용자 ID (기본값: 1000)
  • GID: MeTube가 실행될 그룹 ID (기본값: 1000)
  • UMASK: umask 값 (기본값: 022)
  • DEFAULT_THEME: 기본 테마 (light, dark, auto, 기본값: auto)
  • DOWNLOAD_DIR: 다운로드 저장 경로 (기본값: /downloads)
  • AUDIO_DOWNLOAD_DIR: 오디오 전용 다운로드 저장 경로 (기본값: DOWNLOAD_DIR)
  • DOWNLOAD_DIRS_INDEXABLE: 다운로드 디렉토리 인덱싱 가능 여부 (기본값: false)
  • CUSTOM_DIRS: 사용자 지정 디렉토리 다운로드 활성화 여부 (기본값: true)
  • CREATE_CUSTOM_DIRS: 디렉토리 자동 생성 지원 여부 (기본값: true)
  • STATE_DIR: 큐 지속성 파일 저장 경로 (기본값: /downloads/.metube)
  • TEMP_DIR: 중간 다운로드 파일 저장 경로 (기본값: /downloads)
  • DELETE_FILE_ON_TRASHCAN: UI에서 삭제된 파일 서버에서 삭제 여부 (기본값: false)
  • URL_PREFIX: 웹 서버의 기본 경로 (기본값: /)
  • PUBLIC_HOST_URL: UI에서 표시되는 다운로드 링크의 기본 URL
  • PUBLIC_HOST_AUDIO_URL: 오디오 다운로드 링크의 기본 URL
  • OUTPUT_TEMPLATE: 다운로드 파일 이름 템플릿 (기본값: %(title)s.%(ext)s)
  • OUTPUT_TEMPLATE_CHAPTER: 챕터로 나눈 비디오 파일 이름 템플릿 (기본값: %(title)s - %(section_number)s %(section_title)s.%(ext)s)
  • YTDL_OPTIONS: youtube-dl에 전달할 추가 옵션 (JSON 형식)
  • YTDL_OPTIONS_FILE: YTDL_OPTIONS를 채우기 위한 JSON 파일 경로

브라우저 쿠키 사용

  • docker-compose.yml에 추가

    volumes:
      - /path/to/cookies:/cookies
    environment:
      - YTDL_OPTIONS={"cookiefile":"/cookies/cookies.txt"}
    
  • 쿠키 추출 확장 프로그램 설치

    • Firefox
    • Chrome

브라우저 확장 프로그램

  • Chrome: Google Chrome Webstore에서 설치 가능
  • Firefox: Firefox Addons에서 설치 가능

iOS 단축키

  • iOS 단축키: Safari에서 URL을 MeTube로 전송
  • 서버 주소 및 포트 입력 필요

iOS 호환성

  • iOS 비디오 파일 요구 사항: h264 또는 h265 비디오 코덱 및 aac 오디오 코덱 필요
  • MP4 형식 다운로드 시 "Best (iOS)" 옵션 선택 가능

북마클릿

  • Chrome 북마클릿: 현재 열린 웹페이지를 MeTube로 전송
  • HTTPS 페이지에서 사용 시 HTTPS 역방향 프록시 필요

역방향 프록시 뒤에서 실행

yt-dlp 업데이트

  • 자동 야간 빌드: 새로운 yt-dlp 버전이 있으면 자동으로 빌드 및 Docker 이미지 업데이트
  • watchtower 설치 및 설정 권장

문제 해결 및 이슈 제출

  • MeTube는 yt-dlp의 UI: yt-dlp 관련 문제는 MeTube 프로젝트에 제출하지 않음
  • yt-dlp 명령어 직접 사용 권장: 옵션 테스트 후 YTDL_OPTIONS에 적용

로컬 빌드 및 실행

  • 필요한 도구: node.js 및 Python 3.11

    cd metube/ui
    npm install
    node_modules/.bin/ng build
    cd ..
    pip3 install pipenv
    pipenv install
    pipenv run python3 app/main.py
    
  • Docker 이미지 로컬 빌드

    docker build -t metube .
    

개발 노트

  • Windows, macOS, Linux에서 작동
  • VSCode에서 서버 실행 시 다운로드 폴더는 사용자의 Downloads 폴더

GN⁺의 정리

  • MeTube는 youtube-dl의 웹 GUI로, 여러 사이트에서 비디오를 다운로드할 수 있는 기능을 제공함
  • Docker를 사용하여 쉽게 배포 및 설정할 수 있으며, 다양한 환경 변수를 통해 사용자 맞춤 설정이 가능함
  • 브라우저 확장 프로그램과 iOS 단축키를 통해 편리하게 비디오를 다운로드할 수 있음
  • yt-dlp의 최신 버전을 자동으로 업데이트하여 항상 최신 상태를 유지함
  • 유사한 기능을 제공하는 프로젝트로는 JDownloader, Video DownloadHelper 등이 있음
Hacker News 의견
  • Tube Archivist는 기술 채널을 아카이브하고 인덱싱하는 데 유용함

    • 고급 전체 텍스트 및 메타데이터 검색 기능을 제공함
    • Alphabet보다 훨씬 나은 검색 기능을 제공함
  • YouTube TiVo와 같은 기능을 원함

    • 자주 시청하는 100개의 채널을 놓치고 싶지 않음
    • 우선순위 피드가 필요함
    • DLNA를 통해 다운로드 및 시청 가능하면 더 좋음
    • YouTube는 사용자가 좋아하는 콘텐츠를 놓치지 않게 하는 데 관심이 없음
  • yt-dlp를 사용하여 간단한 앱을 만들 생각을 하고 있음

    • 서버에 호스팅할 필요가 없다고 생각함
    • 대안이 있는지 궁금함
  • Jellyfin과 연동되는 인터페이스가 있으면 좋겠음

    • YouTube를 검색하고 yt-dlp로 다운로드한 후 광고 없이 Jellyfin을 통해 스트리밍 가능
  • 많은 YouTube 미러링 도구가 있는 것이 의아함

    • 비디오를 다운로드/아카이브하는 이유가 궁금함
    • 비디오가 삭제될 경우를 대비해 아카이브하는 것이 좋지만, 개인적으로는 드물게 발생함
    • 비디오를 보고 나면 다시 볼 필요가 없다고 생각함
  • yt-dlp 기반 서버가 PiHole처럼 간단한 이미저와 프론트엔드 클라이언트 앱으로 포장되면 인기를 끌 수 있을 것 같음

    • Raspberry Pi를 구매하고 microSD 카드를 이미지화한 후, 좋아하는 YT 채널을 선택하고 클라이언트 앱을 설치하면 로컬에서 광고 없이 YT 콘텐츠를 이용 가능
  • TubeSync를 사용 중임

    • 간단한 기능과 많은 버그에도 불구하고 충분히 잘 작동함
    • 채널이나 재생목록을 구독하고 비디오를 경로에 다운로드하며, 하루에 한 번 새로운 콘텐츠를 확인함
    • 채널 설정을 위한 UX만 필요함
    • 파일을 저장하고 Plex가 나머지를 처리하게 함
    • 더 나은 옵션이 있는지 궁금함
  • Cobalt.tools를 사용 중임

    • 만족스러움
  • 플레이리스트에 추가한 비디오를 다운로드하여 공유 Plex 서버에 저장함

    • 주로 콘서트 비디오와 스케이트 파트를 아카이브함
  • 관련 도구로 Yark: YouTube Archiver with Offline UI가 있음