ワンクリックで
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.
| 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())
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讲解资料