dlna
4
总安装量
4
周安装量
#48405
全站排名
安装命令
npx skills add https://github.com/xiaotianfotos/skills --skill dlna
Agent 安装分布
gemini-cli
4
github-copilot
4
codex
4
kimi-cli
4
cursor
4
amp
4
Skill 文档
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
| Command | Description |
|---|---|
discover |
Scan for DLNA devices |
play <url> [device] |
Play media URL on device |
stop [device] |
Stop playback |
status [device] |
Get playback status |
config |
Show configuration |
config --device <name> |
Set default device |
config --unset-device |
Clear 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:
- No zombie processes: When Claude Code session ends, the server is automatically terminated
- Clean resource management: Server lifecycle is tied to the session
- 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