dlna

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

506 stars

Best use case

dlna is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

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

Teams using dlna should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/dlna/SKILL.md --create-dirs "https://raw.githubusercontent.com/xiaotianfotos/skills/main/dlna/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/dlna/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How dlna Compares

Feature / AgentdlnaStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

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

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# DLNA - Media Device Control

Control DLNA/UPnP MediaRenderer devices on your local network.

## Quick Start

```bash
# 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.

```bash
# 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

```python
# 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

```python
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

Related Skills

video-understand 技能

506
from xiaotianfotos/skills

## 概述

tutor

506
from xiaotianfotos/skills

一对一辅导老师技能,用于解答数学题,生成HTML讲解文档和带配音的Manim动画视频。 核心工作流:数学分析 → HTML可视化 → 分镜脚本 → TTS音频 → 验证更新 → 脚手架 → Manim代码 → 渲染验证 触发条件:学生粘贴数学题图片、需要教学视频、需要HTML讲解资料

claude-in-tmux

506
from xiaotianfotos/skills

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.

compose-multiplatform-patterns

144923
from affaan-m/everything-claude-code

KMP项目中的Compose Multiplatform和Jetpack Compose模式——状态管理、导航、主题化、性能优化和平台特定UI。

java-coding-standards

144923
from affaan-m/everything-claude-code

Spring Bootサービス向けのJavaコーディング標準:命名、不変性、Optional使用、ストリーム、例外、ジェネリクス、プロジェクトレイアウト。

continuous-learning

144923
from affaan-m/everything-claude-code

Claude Codeセッションから再利用可能なパターンを自動的に抽出し、将来の使用のために学習済みスキルとして保存します。

nextjs-best-practices

31392
from sickn33/antigravity-awesome-skills

Next.js App Router principles. Server Components, data fetching, routing patterns.

network-101

31392
from sickn33/antigravity-awesome-skills

Configure and test common network services (HTTP, HTTPS, SNMP, SMB) for penetration testing lab environments. Enable hands-on practice with service enumeration, log analysis, and security testing against properly configured target systems.

neon-postgres

31392
from sickn33/antigravity-awesome-skills

Expert patterns for Neon serverless Postgres, branching, connection pooling, and Prisma/Drizzle integration

nanobanana-ppt-skills

31392
from sickn33/antigravity-awesome-skills

AI-powered PPT generation with document analysis and styled images

multi-agent-patterns

31392
from sickn33/antigravity-awesome-skills

This skill should be used when the user asks to "design multi-agent system", "implement supervisor pattern", "create swarm architecture", "coordinate multiple agents", or mentions multi-agent patterns, context isolation, agent handoffs, sub-agents, or parallel agent execution.

monorepo-management

31392
from sickn33/antigravity-awesome-skills

Build efficient, scalable monorepos that enable code sharing, consistent tooling, and atomic changes across multiple packages and applications.