Files
LBRY-Downloader/docs/PER_CHANNEL_PATHS.md
T
thePR0M3TH3AN e707400ffd Complete LBRY Downloader implementation v1.0.0
Features:
- Incremental sync with version tracking (sd_hash)
- Per-channel download paths
- Download limit (default: 10 most recent per channel)
- Interactive setup script with user prompts
- Uninstall script for clean removal
- Comprehensive test suite (42 tests)
- Full documentation suite

Files:
- 9 Python core modules (main, models, utils, config, client, state, planner, downloader, init)
- 3 Setup scripts (setup.py, uninstall.py, install.sh)
- 5 Test files (42 tests, all passing)
- 9 Documentation files
- 4 Build/config files

Total: 31 files, ~4,500 lines
2026-03-15 18:10:56 -04:00

3.1 KiB

Per-Channel Download Paths Example

This example shows how to configure different download locations for each channel.

Use Case: Organize by Content Type

lbrynet:
  api_url: "http://127.0.0.1:5279"

general:
  base_dir: "~/Documents/lbry-downloads"
  max_workers: 2

channels:
  # Tech videos go to external drive
  - input: "https://odysee.com/@TechChannel:1"
    enabled: true
    download_path: "/mnt/media/videos/tech"
  
  # Music goes to Music folder
  - input: "https://odysee.com/@MusicChannel:1"
    enabled: true
    download_path: "~/Music/LBRY"
  
  # Podcasts go to Podcasts folder  
  - input: "https://odysee.com/@PodcastChannel:1"
    enabled: true
    download_path: "~/Podcasts"
  
  # Everything else goes to default location
  - input: "https://odysee.com/@MiscChannel:1"
    enabled: true
    # No download_path - uses general.base_dir/channels/

Use Case: Manage Disk Space

channels:
  # Large archive channel goes to big external drive
  - input: "https://odysee.com/@Archive:1"
    enabled: true
    download_path: "/mnt/8tb-drive/archive"
  
  # Frequently accessed channel goes to fast SSD
  - input: "https://odysee.com/@DailyUpdates:1"
    enabled: true
    download_path: "~/Videos/daily"

Use Case: Separate Personal and Work

channels:
  # Work-related content
  - input: "https://odysee.com/@TechTalks:1"
    enabled: true
    download_path: "~/Work/Videos"
  
  # Personal entertainment
  - input: "https://odysee.com/@Entertainment:1"
    enabled: true
    download_path: "~/Videos/entertainment"

Setting Up Custom Paths

1. Create the directories

# External drive example
sudo mkdir -p /mnt/media/videos/tech
sudo chown $USER:$USER /mnt/media/videos/tech

# Home directory example
mkdir -p ~/Music/LBRY
mkdir -p ~/Podcasts

2. Edit config.yaml

nano ~/Documents/lbry-downloads/config.yaml

3. Test with dry-run

python main.py --dry-run

Check the output to see where files would be downloaded.

4. Run the download

python main.py

Resulting Directory Structure

With the example above, your files will be organized as:

/mnt/media/videos/tech/
  TechChannel__abc123/
    channel.json
    claims/
      video1__def456/
        versions/
          sd_xyz789/
            video.mp4

~/Music/LBRY/
  MusicChannel__ghi789/
    channel.json
    claims/
      song1__jkl012/
        versions/
          sd_mno345/
            song.mp3

~/Podcasts/
  PodcastChannel__pqr678/
    ...

~/Documents/lbry-downloads/channels/
  MiscChannel__stu901/
    ...

Tips

  1. Path expansion: Use ~ for home directory - it will be expanded automatically
  2. Absolute paths: Always use absolute paths for external drives
  3. Permissions: Ensure you have write permissions to custom paths
  4. Existing downloads: If you move a channel's download location after files have been downloaded, the tool will redownload them to the new location

State Management

The state database still lives in ~/Documents/lbry-downloads/state/ regardless of where you download files. This keeps all metadata and tracking in one place.