跳到正文
FunCoding

dlna

Control DLNA MediaRenderer devices. Discover devices and play media URLs on DLNA-compatible TVs, speakers, and media players. Supports default device configuration.

Star
585
分类
其他
许可证
MIT
最近提交
2026年3月23日

dlna/SKILL.md

在 GitHub 上查看

DLNA - Media Device Control

Control DLNA/UPnP MediaRenderer devices on your local network.

Quick Start

# Discover devices
uv run dlna discover

# Set default device (optional but convenient)
uv run dlna config --device "HT-Z9F"

# Play with default device (no need to specify device name)
uv run dlna play "http://example.com/video.mp4"

# Or play with specific device
uv run dlna play "http://example.com/video.mp4" "Living Room TV"

# Stop playback
uv run dlna stop

Commands

CommandDescription
discoverScan for DLNA devices
play <url> [device]Play media URL on device
stop [device]Stop playback
status [device]Get playback status
configShow configuration
config --device <name>Set default device
config --unset-deviceClear default device

Configuration

Default device is saved in .dlna/config.json inside the skill directory.

# Set default device
uv run dlna config --device "HT-Z9F"

# Show current config
uv run dlna config

# Clear default device
uv run dlna config --unset-device

Playing Local Files

DLNA devices can only play URLs, not local file paths. To play local files, you need to serve them via HTTP.

IMPORTANT: Use Background Task for HTTP Server

Always use a background task (Bash with run_in_background) to start the HTTP server. This ensures:

  1. No zombie processes: When Claude Code session ends, the server is automatically terminated
  2. Clean resource management: Server lifecycle is tied to the session
  3. No port conflicts: Server stops when done, freeing the port

Example: Play Local File

# Step 1: Start HTTP server in background
# This runs in background and auto-stops when session ends

# Step 2: Get your local IP
import socket
def get_ip():
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.connect(("8.8.8.8", 80))
    ip = s.getsockname()[0]
    s.close()
    return ip

# Step 3: Construct URL and play
url = f"http://{get_ip()}:8000/video.mp4"
# uv run dlna play url

Python API

import asyncio
from dlna import discover_devices, find_device, play_url, set_default_device

async def main():
    # Set default device
    set_default_device("Living Room TV")

    # Find device (uses default if no name provided)
    device = await find_device()  # Uses default
    if device:
        # Play remote URL
        await play_url(device, "http://example.com/video.mp4")

asyncio.run(main())

Supported Devices

  • Smart TVs (Sony, Samsung, LG, etc.)
  • Soundbars and speakers with DLNA support
  • Any UPnP MediaRenderer device

相似的 Skill

software-factory

MAmattpocock/skills318k近 7 天新增 9,301 个 star

claude-handoff

MAmattpocock/skills318k近 7 天新增 9,301 个 star

bengali-nlp

AFaffaan-m/ECC299k近 7 天新增 5,106 个 star

agent-self-evaluation

AFaffaan-m/ECC299k近 7 天新增 5,106 个 star

agent-payment-x402

AFaffaan-m/ECC299k近 7 天新增 5,106 个 star

ponytail-gain

DIDietrichGebert/ponytail186k近 7 天新增 4,868 个 star