بنقرة واحدة
dlna
// Control DLNA MediaRenderer devices. Discover devices and play media URLs on DLNA-compatible TVs, speakers, and media players. Supports default device configuration.
// Control DLNA MediaRenderer devices. Discover devices and play media URLs on DLNA-compatible TVs, speakers, and media players. Supports default device configuration.
Run Claude Code CLI inside tmux sessions within Docker containers. Use this skill when the user wants to run Claude Code in a tmux session, check running tmux sessions, read logs from tmux sessions, or manage claude.sh wrapper script in OpenClaw agent containers.
一对一辅导老师技能,用于解答数学题,生成HTML讲解文档和带配音的Manim动画视频。 核心工作流:数学分析 → HTML可视化 → 分镜脚本 → TTS音频 → 验证更新 → 脚手架 → Manim代码 → 渲染验证 触发条件:学生粘贴数学题图片、需要教学视频、需要HTML讲解资料
| name | dlna |
| description | Control DLNA MediaRenderer devices. Discover devices and play media URLs on DLNA-compatible TVs, speakers, and media players. Supports default device configuration. |
Control DLNA/UPnP MediaRenderer devices on your local network.
# 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
| 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 |
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
DLNA devices can only play URLs, not local file paths. To play local files, you need to serve them via HTTP.
Always use a background task (Bash with run_in_background) to start the HTTP server. This ensures:
# 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
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())