Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ All notable user-visible changes to this project are documented in this file.

- Discover skills dynamically in the startup header and show analyzed episodes from `dist/analysis/`, so returning users can see what already exists.
- Remove the unused `[outputs]`, `[transcription]`, and `[video_scan]` sections from `podguy.example.toml`; document which sections are read by code vs. by the agent.
- Require Python 3.11+ (managed automatically by uv) and parse `podguy.toml` with the standard-library TOML parser.

### Fixed

Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "podguy"
version = "0.1.0"
description = "Small tooling repo for repeatable podcast and video-podcast post-production tasks."
requires-python = ">=3.9"
requires-python = ">=3.11"
dependencies = []

[dependency-groups]
Expand Down
55 changes: 4 additions & 51 deletions scripts/youtube_publish.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
import os
import re
import sys
import tomllib
from pathlib import Path
from typing import Any, Optional

Expand Down Expand Up @@ -87,60 +88,12 @@ def fail(message: str) -> "NoReturn": # noqa: F821 - py39 compat, comment only
# ---------------------------------------------------------------------------


def strip_toml_comment(line: str) -> str:
"""Drop a trailing # comment, ignoring # characters inside quoted strings."""
in_quote = ""
for index, char in enumerate(line):
if in_quote:
if char == in_quote:
in_quote = ""
elif char in "\"'":
in_quote = char
elif char == "#":
return line[:index]
return line


def parse_toml_youtube_section(text: str) -> dict[str, Any]:
"""Read the [youtube] table from podguy.toml.

Uses tomllib when available (Python 3.11+) and falls back to a minimal
flat-key parser for older interpreters. Only simple keys are supported;
the fallback does not handle [youtube.*] subtables, multiline strings,
or array items containing quote characters.
"""
"""Read the [youtube] table from podguy.toml."""
try:
import tomllib

return dict(tomllib.loads(text).get("youtube", {}))
except ModuleNotFoundError:
pass

section: dict[str, Any] = {}
in_youtube = False
for raw_line in text.splitlines():
line = strip_toml_comment(raw_line).strip()
if not line:
continue
if line.startswith("["):
in_youtube = line == "[youtube]"
continue
if not in_youtube or "=" not in line:
continue
key, value = (part.strip() for part in line.split("=", 1))
if value in ("true", "false"):
section[key] = value == "true"
elif value.startswith("[") and value.endswith("]"):
items = re.findall(r"[\"']([^\"']*)[\"']", value)
section[key] = items
elif len(value) >= 2 and value[0] in "\"'" and value[-1] == value[0]:
section[key] = value[1:-1]
else:
try:
section[key] = int(value)
except ValueError:
section[key] = value
return section
except tomllib.TOMLDecodeError as error:
fail(f"error: could not parse profile TOML: {error}")


def load_profile_defaults(profile_path: Optional[str]) -> dict[str, Any]:
Expand Down
2 changes: 1 addition & 1 deletion src/podguy-post-production/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: podguy-post-production
description: Use for generic podcast and video-podcast post-production. Run the repo's transcript and optional visual scanner tools on episode media, prepare transcript artifacts, propose YouTube/podcast chapters, and give editorial feedback such as cuts, clips, show notes, quotes, highlights, and proper noun cleanup.
compatibility: Launch pi from the repository root. The visual scanner requires macOS and Swift. The transcript CLI requires Python 3.9+, uv, and an installed transcription backend.
compatibility: Launch pi from the repository root. The visual scanner requires macOS and Swift. The transcript CLI requires Python 3.11+, uv, and an installed transcription backend.
---

# podguy Post Production
Expand Down
Loading
Loading