refactor: rename project videnc-vibe -> av1dae
Rename the Go module, the cmd/ entrypoint dir, the binary, the default config dir (~/.config/av1dae/), the Docker image/compose service, and all docs and the dashboard wordmark. No behavioral change — import paths and identifiers only.
This commit is contained in:
+1
-1
@@ -1,4 +1,4 @@
|
||||
videnc-vibe
|
||||
av1dae
|
||||
*.mkv
|
||||
*.mp4
|
||||
*.wav
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
videnc-vibe
|
||||
videnc-vibe-dev
|
||||
av1dae
|
||||
av1dae-dev
|
||||
*.mkv
|
||||
*.mp4
|
||||
*.wav
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# AGENTS.md
|
||||
|
||||
This file provides guidance for agents operating in the videnc-vibe repository.
|
||||
This file provides guidance for agents operating in the av1dae repository.
|
||||
|
||||
## Project Overview
|
||||
|
||||
@@ -10,14 +10,14 @@ Go-based CLI tool for transcoding DVD/Blu-ray to SVT-AV1 with automatic metadata
|
||||
|
||||
```bash
|
||||
# Build binary
|
||||
go build -o videnc-vibe ./cmd/videnc/
|
||||
go build -o av1dae ./cmd/av1dae/
|
||||
|
||||
# Run binary
|
||||
./videnc-vibe
|
||||
./av1dae
|
||||
|
||||
# With flags
|
||||
./videnc-vibe -d # Delete original after encode
|
||||
./videnc-vibe -c /path/to/config.yaml
|
||||
./av1dae -d # Delete original after encode
|
||||
./av1dae -c /path/to/config.yaml
|
||||
```
|
||||
|
||||
## Code Style Guidelines
|
||||
@@ -29,7 +29,7 @@ go build -o videnc-vibe ./cmd/videnc/
|
||||
|
||||
### Imports
|
||||
- Group imports: standard library, external packages, internal packages
|
||||
- Use aliases for packages: `"videnc-vibe/pkg/types"`
|
||||
- Use aliases for packages: `"av1dae/pkg/types"`
|
||||
|
||||
```go
|
||||
import (
|
||||
@@ -37,7 +37,7 @@ import (
|
||||
"os"
|
||||
|
||||
"gopkg.in/yaml.v3"
|
||||
"videnc-vibe/pkg/types"
|
||||
"av1dae/pkg/types"
|
||||
)
|
||||
```
|
||||
|
||||
@@ -84,7 +84,7 @@ Example: `add: add command line argument support`
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
cmd/videnc/main.go # CLI entrypoint
|
||||
cmd/av1dae/main.go # CLI entrypoint
|
||||
internal/
|
||||
config/ # Config loading
|
||||
watcher/ # Folder polling
|
||||
|
||||
+3
-3
@@ -4,15 +4,15 @@ WORKDIR /src
|
||||
COPY go.mod go.sum ./
|
||||
RUN go mod download
|
||||
COPY . .
|
||||
RUN CGO_ENABLED=1 go build -ldflags="-s -w" -o /videnc-vibe ./cmd/videnc/
|
||||
RUN CGO_ENABLED=1 go build -ldflags="-s -w" -o /av1dae ./cmd/av1dae/
|
||||
|
||||
FROM debian:bookworm-slim
|
||||
# ffmpeg gives ffmpeg+ffprobe; opus-tools gives opusenc; ca-certificates for OMDb/TVmaze HTTPS.
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
ffmpeg opus-tools ca-certificates \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=build /videnc-vibe /usr/local/bin/videnc-vibe
|
||||
COPY --from=build /av1dae /usr/local/bin/av1dae
|
||||
# logs.db + log files land in the working dir — make it the mounted /data so they persist.
|
||||
WORKDIR /data
|
||||
EXPOSE 8080
|
||||
ENTRYPOINT ["videnc-vibe", "-c", "/config/config.yaml"]
|
||||
ENTRYPOINT ["av1dae", "-c", "/config/config.yaml"]
|
||||
|
||||
+14
-14
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>videnc·vibe — User Manual</title>
|
||||
<title>av1dae — User Manual</title>
|
||||
<style>
|
||||
:root {
|
||||
--bg:#0d1117; --panel:#151b23; --panel-2:#1a2230; --line:#26303f;
|
||||
@@ -216,7 +216,7 @@
|
||||
|
||||
<header class="hero">
|
||||
<div class="hero-inner">
|
||||
<h1 class="wordmark"><span class="prompt">$ </span>videnc<span class="vibe">·vibe</span></h1>
|
||||
<h1 class="wordmark"><span class="prompt">$ </span>av<span class="vibe">1</span>dae</h1>
|
||||
<p class="thesis">A folder-watching daemon that turns <b>.mkv</b> rips into <b>SVT-AV1 + Opus</b>, tags them with metadata from OMDb and TVmaze, and files the results — untouched by you after the drop.</p>
|
||||
|
||||
<div class="flow" aria-label="Processing flow">
|
||||
@@ -284,14 +284,14 @@
|
||||
<section id="build">
|
||||
<p class="eyebrow">02 — Compile</p>
|
||||
<h2>Build</h2>
|
||||
<div class="pre"><pre><code>go build -o videnc-vibe ./cmd/videnc/</code></pre></div>
|
||||
<p>This produces a self-contained binary <code>./videnc-vibe</code> (cgo is used for the SQLite logger, so it links against the system libc). To skip installing Go and the encoders on the host entirely, build the container instead — <a href="#docker">§12</a>.</p>
|
||||
<div class="pre"><pre><code>go build -o av1dae ./cmd/av1dae/</code></pre></div>
|
||||
<p>This produces a self-contained binary <code>./av1dae</code> (cgo is used for the SQLite logger, so it links against the system libc). To skip installing Go and the encoders on the host entirely, build the container instead — <a href="#docker">§12</a>.</p>
|
||||
</section>
|
||||
|
||||
<section id="config">
|
||||
<p class="eyebrow">03 — Setup</p>
|
||||
<h2>Configuration</h2>
|
||||
<p>By default the config loads from <code>~/.config/videnc-vibe/config.yaml</code>. Pass <code>-c /path/to/config.yaml</code> to override.</p>
|
||||
<p>By default the config loads from <code>~/.config/av1dae/config.yaml</code>. Pass <code>-c /path/to/config.yaml</code> to override.</p>
|
||||
|
||||
<div class="pre is-file"><pre><code>omdb_api_key: "YOUR_API_KEY_HERE"
|
||||
|
||||
@@ -353,10 +353,10 @@ paths:
|
||||
<section id="running">
|
||||
<p class="eyebrow">04 — Operate</p>
|
||||
<h2>Running</h2>
|
||||
<div class="pre"><pre><code>./videnc-vibe <span class="cm"># default config, keep originals</span>
|
||||
./videnc-vibe -d <span class="cm"># delete originals after success</span>
|
||||
./videnc-vibe -c /etc/videnc.yaml <span class="cm"># custom config</span>
|
||||
./videnc-vibe -c /etc/videnc.yaml -d</code></pre></div>
|
||||
<div class="pre"><pre><code>./av1dae <span class="cm"># default config, keep originals</span>
|
||||
./av1dae -d <span class="cm"># delete originals after success</span>
|
||||
./av1dae -c /etc/av1dae.yaml <span class="cm"># custom config</span>
|
||||
./av1dae -c /etc/av1dae.yaml -d</code></pre></div>
|
||||
<div class="tablewrap">
|
||||
<table>
|
||||
<thead><tr><th>Flag</th><th>Effect</th></tr></thead>
|
||||
@@ -549,7 +549,7 @@ old.broadcast.tvrip.tt0066026.mkv</code></pre></div>
|
||||
<section id="layout">
|
||||
<p class="eyebrow">11 — Source map</p>
|
||||
<h2>Project layout</h2>
|
||||
<div class="pre is-file"><pre><code>cmd/videnc/main.go <span class="cm">CLI entrypoint and per-file orchestration</span>
|
||||
<div class="pre is-file"><pre><code>cmd/av1dae/main.go <span class="cm">CLI entrypoint and per-file orchestration</span>
|
||||
internal/config/ <span class="cm">YAML config load + defaults + mkdir</span>
|
||||
internal/watcher/ <span class="cm">Polling loop, media-type detection by pixel count</span>
|
||||
internal/encoder/ <span class="cm">ffprobe/ffmpeg/opusenc wrapper, transcode pipeline</span>
|
||||
@@ -609,17 +609,17 @@ docker compose up -d --build</code></pre></div>
|
||||
|
||||
<h3>Without compose</h3>
|
||||
<p>Same thing with plain <code>docker</code>:</p>
|
||||
<div class="pre"><pre><code>docker build -t videnc-vibe .
|
||||
docker run -d --name videnc-vibe --restart unless-stopped \
|
||||
<div class="pre"><pre><code>docker build -t av1dae .
|
||||
docker run -d --name av1dae --restart unless-stopped \
|
||||
-v "$PWD/config.yaml:/config/config.yaml:ro" \
|
||||
-v "$PWD/media:/data" \
|
||||
videnc-vibe</code></pre></div>
|
||||
av1dae</code></pre></div>
|
||||
</section>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<footer>videnc·vibe — DVD/Blu-ray → SVT-AV1 transcoding daemon · single-file manual, no dependencies</footer>
|
||||
<footer>av1dae — DVD/Blu-ray → SVT-AV1 transcoding daemon · single-file manual, no dependencies</footer>
|
||||
|
||||
<script>
|
||||
// Copy buttons on every code block — native clipboard, no deps.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# videnc-vibe — User Manual
|
||||
# av1dae — User Manual
|
||||
|
||||
A Go CLI that watches a folder for `.mkv` rips, transcodes them to SVT-AV1 video + Opus audio, embeds metadata fetched from OMDb (movies) or TVmaze (series), and files the results into output/originals/failed directories.
|
||||
|
||||
@@ -25,16 +25,16 @@ API keys:
|
||||
## 2. Build
|
||||
|
||||
```bash
|
||||
go build -o videnc-vibe ./cmd/videnc/
|
||||
go build -o av1dae ./cmd/av1dae/
|
||||
```
|
||||
|
||||
This produces a single static binary `./videnc-vibe`.
|
||||
This produces a single static binary `./av1dae`.
|
||||
|
||||
---
|
||||
|
||||
## 3. Configuration
|
||||
|
||||
By default the config is loaded from `~/.config/videnc-vibe/config.yaml`. Pass `-c /path/to/config.yaml` to override.
|
||||
By default the config is loaded from `~/.config/av1dae/config.yaml`. Pass `-c /path/to/config.yaml` to override.
|
||||
|
||||
Example (`config.example.yaml`):
|
||||
|
||||
@@ -89,10 +89,10 @@ All five directories are created on startup if they don't exist.
|
||||
## 4. Running
|
||||
|
||||
```bash
|
||||
./videnc-vibe # default config path, keep originals
|
||||
./videnc-vibe -d # delete originals after successful encode
|
||||
./videnc-vibe -c /etc/videnc.yaml # custom config
|
||||
./videnc-vibe -c /etc/videnc.yaml -d
|
||||
./av1dae # default config path, keep originals
|
||||
./av1dae -d # delete originals after successful encode
|
||||
./av1dae -c /etc/av1dae.yaml # custom config
|
||||
./av1dae -c /etc/av1dae.yaml -d
|
||||
```
|
||||
|
||||
Flags:
|
||||
@@ -268,7 +268,7 @@ The watcher continues with the next file; one bad rip won't stop the daemon.
|
||||
## 11. Project layout
|
||||
|
||||
```
|
||||
cmd/videnc/main.go CLI entrypoint and per-file orchestration
|
||||
cmd/av1dae/main.go CLI entrypoint and per-file orchestration
|
||||
internal/config/ YAML config load + defaults + mkdir
|
||||
internal/watcher/ Polling loop, media-type detection by pixel count
|
||||
internal/encoder/ ffprobe/ffmpeg/opusenc wrapper, transcode pipeline
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
# videnc-vibe Specification
|
||||
# av1dae Specification
|
||||
|
||||
## Overview
|
||||
FFmpeg-based video transcoder for DVD/Blu-ray to SVT-AV1 with automatic metadata fetching.
|
||||
|
||||
## Configuration
|
||||
|
||||
Config path: `-c` flag or `~/.config/videnc-vibe/config.yaml`
|
||||
Config path: `-c` flag or `~/.config/av1dae/config.yaml`
|
||||
|
||||
```yaml
|
||||
omdb_api_key: "your-key-here"
|
||||
@@ -27,7 +27,7 @@ paths:
|
||||
|
||||
## Flags
|
||||
- `-d` : Delete original after successful encode (default: move to originals/)
|
||||
- `-c` : Config file path (default: ~/.config/videnc-vibe/config.yaml)
|
||||
- `-c` : Config file path (default: ~/.config/av1dae/config.yaml)
|
||||
|
||||
## Input Parsing
|
||||
|
||||
|
||||
@@ -15,15 +15,15 @@ import (
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"videnc-vibe/internal/config"
|
||||
"videnc-vibe/internal/encoder"
|
||||
"videnc-vibe/internal/logger"
|
||||
"videnc-vibe/internal/metadata"
|
||||
"videnc-vibe/internal/mover"
|
||||
"videnc-vibe/internal/server"
|
||||
"videnc-vibe/internal/status"
|
||||
"videnc-vibe/internal/watcher"
|
||||
"videnc-vibe/pkg/types"
|
||||
"av1dae/internal/config"
|
||||
"av1dae/internal/encoder"
|
||||
"av1dae/internal/logger"
|
||||
"av1dae/internal/metadata"
|
||||
"av1dae/internal/mover"
|
||||
"av1dae/internal/server"
|
||||
"av1dae/internal/status"
|
||||
"av1dae/internal/watcher"
|
||||
"av1dae/pkg/types"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -33,7 +33,7 @@ var (
|
||||
|
||||
func init() {
|
||||
flag.BoolVar(&deleteOrigin, "d", false, "Delete original after successful encode")
|
||||
flag.StringVar(&configPath, "c", "", "Config file path (default: ~/.config/videnc-vibe/config.yaml)")
|
||||
flag.StringVar(&configPath, "c", "", "Config file path (default: ~/.config/av1dae/config.yaml)")
|
||||
}
|
||||
|
||||
func main() {
|
||||
@@ -91,7 +91,7 @@ func main() {
|
||||
return processFile(ctx, inputPath, cfg, enc, metaClient, log, tracker)
|
||||
})
|
||||
|
||||
log.Info("videnc-vibe started")
|
||||
log.Info("av1dae started")
|
||||
}
|
||||
|
||||
func processFile(ctx context.Context, inputPath string, cfg *types.Config, enc *encoder.Encoder, metaClient *metadata.Client, log *logger.Logger, tracker *status.Tracker) error {
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
services:
|
||||
videnc:
|
||||
av1dae:
|
||||
build: .
|
||||
container_name: videnc-vibe
|
||||
container_name: av1dae
|
||||
restart: unless-stopped
|
||||
# Cap CPU/RAM so a long SVT-AV1 encode can't starve the host. Tune to taste.
|
||||
# `podman compose` honors deploy.resources; `podman-compose` (python) wants
|
||||
|
||||
@@ -5,12 +5,12 @@ import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"av1dae/pkg/types"
|
||||
"gopkg.in/yaml.v3"
|
||||
"videnc-vibe/pkg/types"
|
||||
)
|
||||
|
||||
const (
|
||||
appName = "videnc-vibe"
|
||||
appName = "av1dae"
|
||||
configName = "config.yaml"
|
||||
)
|
||||
|
||||
|
||||
@@ -13,9 +13,9 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"videnc-vibe/internal/logger"
|
||||
"videnc-vibe/internal/status"
|
||||
"videnc-vibe/pkg/types"
|
||||
"av1dae/internal/logger"
|
||||
"av1dae/internal/status"
|
||||
"av1dae/pkg/types"
|
||||
)
|
||||
|
||||
var idetSummaryRegex = regexp.MustCompile(`Multi frame detection:\s+TFF:\s*(\d+)\s+BFF:\s*(\d+)\s+Progressive:\s*(\d+)\s+Undetermined:\s*(\d+)`)
|
||||
|
||||
@@ -12,8 +12,8 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"videnc-vibe/internal/logger"
|
||||
"videnc-vibe/pkg/types"
|
||||
"av1dae/internal/logger"
|
||||
"av1dae/pkg/types"
|
||||
)
|
||||
|
||||
const (
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>videnc·vibe — status</title>
|
||||
<title>av1dae — status</title>
|
||||
<style>
|
||||
:root {
|
||||
--bg:#0d1117; --panel:#151b23; --panel-2:#1a2230; --line:#26303f;
|
||||
@@ -117,7 +117,7 @@
|
||||
<body>
|
||||
|
||||
<header>
|
||||
<span class="wordmark"><span class="prompt">$ </span>videnc<span class="vibe">·vibe</span></span>
|
||||
<span class="wordmark"><span class="prompt">$ </span>av<span class="vibe">1</span>dae</span>
|
||||
<span class="live"><span class="dot" id="dot"></span><span id="livetext">connecting</span></span>
|
||||
</header>
|
||||
|
||||
|
||||
@@ -8,9 +8,9 @@ import (
|
||||
"net/http"
|
||||
"path/filepath"
|
||||
|
||||
"videnc-vibe/internal/logger"
|
||||
"videnc-vibe/internal/status"
|
||||
"videnc-vibe/internal/watcher"
|
||||
"av1dae/internal/logger"
|
||||
"av1dae/internal/status"
|
||||
"av1dae/internal/watcher"
|
||||
)
|
||||
|
||||
//go:embed index.html
|
||||
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
"sort"
|
||||
"time"
|
||||
|
||||
"videnc-vibe/pkg/types"
|
||||
"av1dae/pkg/types"
|
||||
)
|
||||
|
||||
// failureBackoff is how long we skip a file after processFn returned an error
|
||||
|
||||
Reference in New Issue
Block a user