
Security News
ECMAScript 2025 Finalized with Iterator Helpers, Set Methods, RegExp.escape, and More
ECMAScript 2025 introduces Iterator Helpers, Set methods, JSON modules, and more in its latest spec update approved by Ecma in June 2025.
A tool for downloading and archiving videos and podcasts into ZIM files.
[!WARNING]
Still in heavy development, use at your own risk.
Requires:
docker pull ghcr.io/sudo-ivan/archiver-zim:latest
mkdir -p archive/media archive/metadata config
Create a config.yml
file in the config directory (see Configuration section below)
Run using Docker:
# Run in continuous mode
docker run -d \
--name archiver-zim \
-v $(pwd)/archive:/app/archive \
-v $(pwd)/config:/app/config \
-e TZ=UTC \
ghcr.io/sudo-ivan/archiver-zim:latest manage
# Run single archive
docker run --rm \
-v $(pwd)/archive:/app/archive \
ghcr.io/sudo-ivan/archiver-zim:latest archive \
"https://www.youtube.com/watch?v=VIDEO_ID" \
--quality 720p \
--title "My Video" \
--description "My video collection"
docker-compose.yml
file:version: '3.8'
services:
archiver:
image: ghcr.io/sudo-ivan/archiver-zim:latest
container_name: archiver-zim
volumes:
- ./archive:/app/archive
- ./config:/app/config
environment:
- TZ=UTC
restart: unless-stopped
# Uncomment and modify the command as needed:
# command: manage # For continuous mode
# command: archive "https://www.youtube.com/watch?v=VIDEO_ID" --quality 720p # For single archive
# Start in continuous mode
docker compose up -d
# Run single archive
docker compose run --rm archiver archive "https://www.youtube.com/watch?v=VIDEO_ID" --quality 720p
# View logs
docker compose logs -f
pip install -r requirements.txt
pip install yt-dlp
Install directly from PyPI:
pip install archiver-zim
Install using pipx for isolated environment:
pipx install archiver-zim
The tool provides a command-line interface with two main commands:
archiver-zim manage [OPTIONS]
Options:
--config PATH
: Path to config file (default: ./config/config.yml)--log-level LEVEL
: Set logging level (default: INFO)archiver-zim archive [URLS]... [OPTIONS]
Options:
--output-dir PATH
: Output directory for archives--quality QUALITY
: Video quality (e.g., 720p, 1080p)--title TEXT
: Archive title--description TEXT
: Archive description--type TYPE
: Content type (channel, playlist, podcast, mixed)--update-frequency FREQ
: Update frequency (e.g., 1d, 7d, 1m)--cookies PATH
: Path to cookies file for authentication--cookies-from-browser BROWSER
: Browser to extract cookies from (e.g., firefox, chrome)Example:
# Basic usage
archiver-zim archive "https://www.youtube.com/watch?v=VIDEO_ID" \
--quality 720p \
--title "My Video Collection" \
--description "Personal video archive"
# Using cookies for authentication
archiver-zim archive "https://www.youtube.com/watch?v=VIDEO_ID" \
--cookies cookies.txt
# Using browser cookies
archiver-zim archive "https://www.youtube.com/watch?v=VIDEO_ID" \
--cookies-from-browser firefox
Create a config.yml
file with your archive configurations. Example:
settings:
output_base_dir: "./archives"
quality: "best"
retry_count: 3
retry_delay: 5
max_retries: 10
max_concurrent_downloads: 3
cleanup_after_archive: true
cookies: null # Path to cookies file
cookies_from_browser: null # Browser to extract cookies from (e.g., firefox, chrome)
archives:
- name: "youtube_channel_1"
type: "channel"
url: "https://www.youtube.com/c/channel1"
update_frequency: "7d" # 7 days
quality: "720p"
description: "Channel 1 Archive"
date_limit: 30 # Only keep last 30 days
cookies: null # Optional: Override global cookies
cookies_from_browser: null # Optional: Override global browser cookies
- name: "podcast_series_1"
type: "podcast"
url: "https://example.com/feed.xml"
update_frequency: "1d" # Daily updates
description: "Podcast Series 1 Archive"
month_limit: 3 # Keep last 3 months
output_base_dir
: Base directory for all archivesquality
: Default video qualityretry_count
: Number of retries for failed downloadsretry_delay
: Base delay between retries in secondsmax_retries
: Maximum number of retries before giving upmax_concurrent_downloads
: Maximum number of concurrent downloadscleanup_after_archive
: Whether to delete downloaded files after ZIM creationcookies
: Path to cookies filecookies_from_browser
: Browser to extract cookies from (e.g., firefox, chrome)name
: Unique name for the archivetype
: Type of content ("channel", "playlist", "podcast", or "mixed")url
: Source URLupdate_frequency
: How often to update (e.g., "1d", "7d", "1m", "1y")quality
: Video quality (overrides global setting)description
: Archive descriptiondate_limit
: Only keep content from last N daysmonth_limit
: Only keep content from last N monthsRun the manager in continuous mode:
# Using Python
python archiver.py manage
# Using Docker
docker run -d \
--name archiver-zim \
-v $(pwd)/archive:/app/archive \
-v $(pwd)/config:/app/config \
-e TZ=UTC \
ghcr.io/sudo-ivan/archiver-zim:latest manage
# Using Docker Compose
docker compose up -d
The manager will:
config.yml
Create a single archive:
# Using Python
python archiver.py archive URL1 URL2 --output-dir ./archive --quality 720p
# Using Docker
docker run --rm \
-v $(pwd)/archive:/app/archive \
ghcr.io/sudo-ivan/archiver-zim:latest archive \
"https://www.youtube.com/watch?v=VIDEO_ID" \
--quality 720p
# Using Docker Compose
docker compose run --rm archiver archive \
"https://www.youtube.com/watch?v=VIDEO_ID" \
--quality 720p
Logs are written to both:
archive_manager.log
fileMIT License
FAQs
A tool to download videos from various platforms and create ZIM archives
We found that archiver-zim demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
ECMAScript 2025 introduces Iterator Helpers, Set methods, JSON modules, and more in its latest spec update approved by Ecma in June 2025.
Security News
A new Node.js homepage button linking to paid support for EOL versions has sparked a heated discussion among contributors and the wider community.
Research
North Korean threat actors linked to the Contagious Interview campaign return with 35 new malicious npm packages using a stealthy multi-stage malware loader.