Compare commits

...

2 Commits

Author SHA1 Message Date
ac7241b1b9 fix: rename TranscriptorIO to Transcriptarr 2026-01-16 17:07:04 +01:00
b7628ab316 chore: remove empty github workflows directory 2026-01-16 17:05:40 +01:00
25 changed files with 45 additions and 189 deletions

View File

@@ -1,5 +1,5 @@
# ============================================
# TranscriptorIO Configuration
# Transcriptarr Configuration
# ============================================
#
# IMPORTANT: Most configuration is now stored in the database

View File

@@ -1,50 +0,0 @@
name: Build_Subgen_Dockerfile_CPU
on:
push:
paths:
- 'requirements.txt'
- 'Dockerfile.cpu'
workflow_dispatch:
jobs:
docker:
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Get version from transcriptarr.py
id: get_version
run: |
version=$(grep -oP "subgen_version\s*=\s*'\K[^']+" subgen.py)
echo "version=$version" >> $GITHUB_ENV
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
#platforms: all
image: tonistiigi/binfmt:qemu-v7.0.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push CPU Docker image
uses: docker/build-push-action@v5
with:
context: .
platforms: linux/amd64,linux/arm64
file: ./Dockerfile.cpu
push: true
tags: |
mccloud/subgen:cpu
mccloud/subgen:${{ env.version }}-cpu

View File

@@ -1,39 +0,0 @@
name: Build_Subgen_Dockerfile_GPU
on:
push:
paths:
- 'requirements.txt'
- 'Dockerfile'
workflow_dispatch:
jobs:
docker:
runs-on: [self-hosted]
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Get version from transcriptarr.py
id: get_version
run: |
version=$(grep -oP "subgen_version\s*=\s*'\K[^']+" subgen.py)
echo "version=$version" >> $GITHUB_ENV
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push GPU Docker image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: |
mccloud/subgen:latest
mccloud/subgen:${{ env.version }}

View File

@@ -1,55 +0,0 @@
name: Update_CalVer_Amend
on:
push:
branches:
- 'main'
paths:
- '../../transcriptarr.py'
workflow_dispatch: # Allow manual triggering
jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0 # Crucial for getting full history
- name: Calculate version
id: version
run: |
YEAR=$(date +%Y)
MONTH=$(date +%m)
COMMIT_COUNT=$(git rev-list --count HEAD --since="$YEAR-$MONTH-01")
echo "COMMIT_COUNT=$COMMIT_COUNT"
echo "VERSION=${YEAR}.${MONTH}.${COMMIT_COUNT}" >> $GITHUB_ENV
- name: Update transcriptarr.py with version
run: |
sed -i "s/subgen_version =.*/subgen_version = '${{ env.VERSION }}'/" subgen.py
- name: Check if transcriptarr.py was actually changed (compare with HEAD)
id: check_change
run: |
if git diff --quiet HEAD subgen.py; then
echo "::set-output name=changed::false"
else
echo "::set-output name=changed::true"
fi
- name: Amend commit if transcriptarr.py changed
if: steps.check_change.outputs.changed == 'true'
env:
GIT_AUTHOR_NAME: "McCloudS"
GIT_AUTHOR_EMAIL: "scott@mccloud.dev"
run: |
git config user.name "${GIT_AUTHOR_NAME}"
git config user.email "${GIT_AUTHOR_EMAIL}"
git add subgen.py
git commit --amend --reuse-message=HEAD --author="${GIT_AUTHOR_NAME} <${GIT_AUTHOR_EMAIL}>" # Amend the last commit
# Push with force-with-lease (safer than --force)
git push --force-with-lease origin HEAD:main

View File

@@ -1,4 +1,4 @@
# 🎬 TranscriptorIO
# 🎬 Transcriptarr
**AI-powered subtitle transcription service with REST API and Web UI**
@@ -7,7 +7,7 @@
[![Vue.js](https://img.shields.io/badge/Vue.js-3.x-brightgreen.svg)](https://vuejs.org/)
[![License](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
TranscriptorIO is an AI-powered subtitle transcription service based on [Subgen](https://github.com/McCloudS/subgen), featuring a modern FastAPI backend with 45+ REST endpoints, a Vue 3 web interface, and a distributed worker pool architecture.
Transcriptarr is an AI-powered subtitle transcription service based on [Subgen](https://github.com/McCloudS/subgen), featuring a modern FastAPI backend with 45+ REST endpoints, a Vue 3 web interface, and a distributed worker pool architecture.
---

View File

@@ -1,6 +1,6 @@
# TranscriptorIO REST API
# Transcriptarr REST API
Documentación completa de las APIs REST del backend de TranscriptorIO.
Documentación completa de las APIs REST del backend de Transcriptarr.
## 🚀 Inicio Rápido
@@ -33,7 +33,7 @@ Información básica de la API.
**Response:**
```json
{
"name": "TranscriptorIO API",
"name": "Transcriptarr API",
"version": "1.0.0",
"status": "running"
}

View File

@@ -1 +1 @@
"""TranscriptorIO Backend Package."""
"""Transcriptarr Backend Package."""

View File

@@ -1,4 +1,4 @@
"""API module for TranscriptorIO backend."""
"""API module for Transcriptarr backend."""
from backend.api.workers import router as workers_router
from backend.api.jobs import router as jobs_router
from backend.api.scan_rules import router as scan_rules_router

View File

@@ -1,4 +1,4 @@
"""Main FastAPI application for TranscriptorIO backend."""
"""Main FastAPI application for Transcriptarr backend."""
import logging
import os
from contextlib import asynccontextmanager
@@ -47,7 +47,7 @@ async def lifespan(app: FastAPI):
- Graceful shutdown
"""
# === STARTUP ===
logger.info("=== TranscriptorIO Backend Starting ===")
logger.info("=== Transcriptarr Backend Starting ===")
# Initialize database
logger.info("Initializing database...")
@@ -158,12 +158,12 @@ async def lifespan(app: FastAPI):
else:
logger.info("File watcher enabled but no library paths configured")
logger.info("=== TranscriptorIO Backend Started ===")
logger.info("=== Transcriptarr Backend Started ===")
yield
# === SHUTDOWN ===
logger.info("=== TranscriptorIO Backend Shutting Down ===")
logger.info("=== Transcriptarr Backend Shutting Down ===")
# Stop library scanner first (quick operations)
logger.info("Stopping library scanner...")
@@ -180,12 +180,12 @@ async def lifespan(app: FastAPI):
except Exception as e:
logger.warning(f"Error stopping worker pool: {e}")
logger.info("=== TranscriptorIO Backend Stopped ===")
logger.info("=== Transcriptarr Backend Stopped ===")
# Create FastAPI app
app = FastAPI(
title="TranscriptorIO API",
title="Transcriptarr API",
description="AI-powered subtitle transcription service",
version="1.0.0",
lifespan=lifespan
@@ -278,7 +278,7 @@ else:
async def root():
"""Root endpoint - API info."""
return {
"name": "TranscriptorIO API",
"name": "Transcriptarr API",
"version": "1.0.0",
"status": "running",
"message": "Frontend not built. Access API docs at /docs"

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env python3
"""CLI entry point for TranscriptorIO backend."""
"""CLI entry point for Transcriptarr backend."""
import argparse
import logging
import sys
@@ -15,7 +15,7 @@ def main():
"""Main CLI entry point."""
parser = argparse.ArgumentParser(
description="TranscriptorIO - AI-powered subtitle transcription service"
description="Transcriptarr - AI-powered subtitle transcription service"
)
# Subcommands
@@ -113,7 +113,7 @@ def main():
def run_server(args):
"""Run FastAPI server."""
print(f"🚀 Starting TranscriptorIO server on {args.host}:{args.port}")
print(f"🚀 Starting Transcriptarr server on {args.host}:{args.port}")
print(f"📖 API docs available at: http://{args.host}:{args.port}/docs")
uvicorn.run(

View File

@@ -1,4 +1,4 @@
"""Configuration management for TranscriptorIO.
"""Configuration management for Transcriptarr.
Most configuration is now stored in the database and managed through the
Settings service. Only DATABASE_URL is loaded from environment variables.

View File

@@ -1 +1 @@
"""TranscriptorIO Core Module."""
"""Transcriptarr Core Module."""

View File

@@ -1,4 +1,4 @@
"""Database models for TranscriptorIO."""
"""Database models for Transcriptarr."""
import uuid
from datetime import datetime, timezone
from enum import Enum

View File

@@ -36,7 +36,7 @@ class SetupWizard:
True if setup completed successfully
"""
print("\n" + "=" * 70)
print(" 🎬 TranscriptorIO - First Run Setup Wizard")
print(" 🎬 Transcriptarr - First Run Setup Wizard")
print("=" * 70 + "\n")
# Step 1: Select mode

View File

@@ -1,6 +1,6 @@
# TranscriptorIO REST API
# Transcriptarr REST API
Complete documentation for the TranscriptorIO backend REST API.
Complete documentation for the Transcriptarr backend REST API.
## Table of Contents
@@ -52,7 +52,7 @@ Root endpoint - API info or frontend (if built).
**Response (API mode):**
```json
{
"name": "TranscriptorIO API",
"name": "Transcriptarr API",
"version": "1.0.0",
"status": "running",
"message": "Frontend not built. Access API docs at /docs"

View File

@@ -1,4 +1,4 @@
# TranscriptorIO Backend Architecture
# Transcriptarr Backend Architecture
Technical documentation of the backend architecture, components, and data flow.
@@ -22,7 +22,7 @@ Technical documentation of the backend architecture, components, and data flow.
## Overview
TranscriptorIO is built with a modular architecture consisting of:
Transcriptarr is built with a modular architecture consisting of:
- **FastAPI Server**: REST API with 45+ endpoints
- **Worker Pool**: Multiprocessing-based transcription workers (CPU/GPU)

View File

@@ -1,4 +1,4 @@
# TranscriptorIO Configuration
# Transcriptarr Configuration
Complete documentation for the configuration system.
@@ -16,7 +16,7 @@ Complete documentation for the configuration system.
## Overview
TranscriptorIO uses a **database-backed configuration system**. All settings are stored in the `system_settings` table and can be managed through:
Transcriptarr uses a **database-backed configuration system**. All settings are stored in the `system_settings` table and can be managed through:
1. **Setup Wizard** (first run)
2. **Web UI** (Settings page)

View File

@@ -1,4 +1,4 @@
# TranscriptorIO Frontend
# Transcriptarr Frontend
Technical documentation for the Vue 3 frontend application.
@@ -20,7 +20,7 @@ Technical documentation for the Vue 3 frontend application.
## Overview
The TranscriptorIO frontend is a Single Page Application (SPA) built with Vue 3, featuring:
The Transcriptarr frontend is a Single Page Application (SPA) built with Vue 3, featuring:
- **6 Complete Views**: Dashboard, Queue, Scanner, Rules, Workers, Settings
- **Real-time Updates**: Polling-based status updates

View File

@@ -1,6 +1,6 @@
# TranscriptorIO Frontend
# Transcriptarr Frontend
Vue 3 + TypeScript + Vite frontend for TranscriptorIO.
Vue 3 + TypeScript + Vite frontend for Transcriptarr.
## 🚀 Quick Start

View File

@@ -4,7 +4,7 @@
<meta charset="UTF-8">
<link rel="icon" href="/favicon.ico">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>TranscriptorIO</title>
<title>Transcriptarr</title>
</head>
<body>
<div id="app"></div>

View File

@@ -1,7 +1,7 @@
{
"name": "transcriptorio-ui",
"version": "1.0.0",
"description": "TranscriptorIO Web UI - Vue 3 Frontend",
"description": "Transcriptarr Web UI - Vue 3 Frontend",
"type": "module",
"scripts": {
"dev": "vite",

View File

@@ -1,6 +1,6 @@
#!/bin/bash
echo "🎬 TranscriptorIO Frontend - Setup Script"
echo "🎬 Transcriptarr Frontend - Setup Script"
echo "=========================================="
echo ""

View File

@@ -10,7 +10,7 @@
<div class="container">
<div class="header-content">
<div class="logo">
<h1>🎬 TranscriptorIO</h1>
<h1>🎬 Transcriptarr</h1>
<span class="subtitle">AI-Powered Subtitle Transcription</span>
</div>
<nav class="main-nav">
@@ -41,7 +41,7 @@
<footer class="app-footer">
<div class="container">
<p>&copy; 2026 TranscriptorIO | Powered by Whisper AI</p>
<p>&copy; 2026 Transcriptarr | Powered by Whisper AI</p>
</div>
</footer>
</div>

View File

@@ -2,14 +2,14 @@
<div class="setup-wizard-overlay">
<div class="wizard-container">
<div class="wizard-header">
<h1>🎬 Welcome to TranscriptorIO</h1>
<h1>🎬 Welcome to Transcriptarr</h1>
<p>Let's get you set up in just a few steps</p>
</div>
<!-- Step 1: Choose Mode -->
<div v-if="currentStep === 1" class="wizard-step">
<h2>Choose Operation Mode</h2>
<p class="step-description">How would you like to use TranscriptorIO?</p>
<p class="step-description">How would you like to use Transcriptarr?</p>
<div class="mode-cards">
<div
@@ -150,7 +150,7 @@
<!-- Scanner Configuration -->
<div class="config-section">
<h3 class="section-title">⏰ Automatic Scanning</h3>
<p class="section-description">How often should TranscriptorIO scan your libraries for new content?</p>
<p class="section-description">How often should Transcriptarr scan your libraries for new content?</p>
<div class="scanner-config">
<div class="form-group">
@@ -298,7 +298,7 @@
<!-- Step 2b: Bazarr Slave Configuration -->
<div v-if="currentStep === 2 && selectedMode === 'bazarr_slave'" class="wizard-step">
<h2>Bazarr Provider Configuration</h2>
<p class="step-description">Use these details to add TranscriptorIO as a provider in Bazarr</p>
<p class="step-description">Use these details to add Transcriptarr as a provider in Bazarr</p>
<div v-if="bazarrInfo" class="bazarr-info-card">
<div class="info-section">
@@ -319,7 +319,7 @@
<div class="info-section">
<h3>Provider Type</h3>
<code>TranscriptorIO (Whisper AI)</code>
<code>Transcriptarr (Whisper AI)</code>
</div>
<div class="info-instructions">
@@ -346,7 +346,7 @@
<div v-if="currentStep === 5" class="wizard-step completion">
<div class="completion-icon">✅</div>
<h2>Setup Complete!</h2>
<p>TranscriptorIO is ready to use</p>
<p>Transcriptarr is ready to use</p>
<button @click="finishSetup" class="btn btn-primary btn-lg">
Go to Dashboard →
</button>

View File

@@ -46,7 +46,7 @@ const router = createRouter({
})
router.beforeEach((to, _from, next) => {
document.title = `${to.meta.title || 'TranscriptorIO'} - TranscriptorIO`
document.title = `${to.meta.title || 'Transcriptarr'} - Transcriptarr`
next()
})