Skip to content

jasonyang-ee/ArchivedV

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

(Un)Archived V

Youtube Stream Download Service With Keyword Filtering.

Logo

Main Purpose:

The purpose of this project is to save Vtuber singing streams where often are unarchived due to copyright issues.

Service Feature:

  1. Automatically check subscribed channels for new live streams.
  2. Download matching videos based on a specified keyword list.
  3. Manage channels and keywords via the web interface.
  4. Fail safe Auto merger by ffmpeg to combine temperary files when stream end turned to private before yt-dlp can finalize the file.
  5. Send notifications via Pushover.
  6. Support members-only/private videos using cookies.
  7. Custom yt-dlp options for advanced users.

Screenshot

main page

Public Tracking Service

This service is tracking all EN and ID branch. Video will be periodically deleted to free up space.

https://archivedv.jasony.org

Public Docker Image

Docker Hub

jasonyangee/archivedv:latest

GitHub Container Registry

ghcr.io/jasonyang-ee/archivedv:latest

Supported Platforms

  • Linux AMD64
  • Linux ARM64

Run Using Docker Compose

services:
  archivedv:
    image: jasonyangee/archivedv:latest
    container_name: archivedv
    restart: unless-stopped
    user: "1000:1000"
    ports:
      - "3000:3000"
    volumes:
      - ./archivedv/data:/app/data
      - ./archivedv/video:/app/download
    #   - ./archivedv/cookies.txt:/app/data/youtube_cookies.txt:ro   Optional: If you want to manage cookies as a separate file on the host,
    environment:
      TZ: America/Los_Angeles
      # PUSHOVER_APP_TOKEN: ${PUSHOVER_APP_TOKEN}
      # PUSHOVER_USER_TOKEN: ${PUSHOVER_USER_TOKEN}
      # PORT: "3000"                                                 Optional: Default is 3000. Set to your desired internal port
      # TRUST_PROXY: "1"                                             Optional: Default is 1 (trust first proxy). Set to "false" if exposed directly to internet
    # sysctls:                                                       Optional: Force disable ipv6 if you have issues with it
    #   - net.ipv6.conf.all.disable_ipv6=1

Web Interface

Access the web interface at http://<host_ip>:3000

Data Persistence

Bind mounts to preserve data:

  • Configurations: /app/data/db.json
  • Downloaded Videos: /app/download/<channel_username>/[DateTime] <video_title>/
  • Cookies (optional): /app/data/youtube_cookies.txt

Scheduling

A cron job runs every 10 minutes to check for new live streams.

Notifications (Optional)

Pushover is used to send mobile/desktop notifications on each successful download.

Folder Permissions

It is recommended to run the container with a non-root user. The default user ID is 1000.

Change to the user ID of your host system if necessary. You can do this by modifying the user field in the Docker Compose file.

Members-only / Private Videos (Cookies)

Some videos (members-only, private, age-restricted) cannot be downloaded by yt-dlp without authentication.

When this happens, ArchivedV will:

  • Skip that video when cookies are not configured (no history entry).
  • Avoid retrying it over and over during the same runtime.

To enable downloading those videos, provide a YouTube cookies.txt:

  1. Export cookies from your browser (see yt-dlp docs for the latest methods):
  2. Open the web UI and use the Members-only Cookies card:
    • Paste the full cookies.txt content
    • Click Save Cookies
    • Toggle Enabled

After cookies are saved/enabled, the service can download members-only/private videos.

Security note: cookies.txt contains your account session. Only use this on a trusted machine.

Custom YT-DLP Options

You can append custom yt-dlp options in the web interface, the same way as you would run yt-dlp from the command line.

Refer to the yt-dlp documentation for available options.

Using custom options may affect the download behavior. Use with caution.

Potential Issues

  • Folder permissions may cause issues. Please manually chown the volume bind folders to the user ID specified in the Docker Compose file.

    Example Command

     sudo chown -R 1000:1000 ./archivedv
  • Axios need ipv4 to work properly. Force ipv4 dns resolution by adding the following to your docker compose file:

    Docker Compose Example

     sysctls:
     - net.ipv6.conf.all.disable_ipv6=1

Contribute

See CONTRIBUTING.md for development setup and contribution guidelines.

About

Tracking and Saving Unarchived Singing from Youtube Stream

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

 

Packages

 
 
 

Contributors 2

  •  
  •