fix: rename TranscriptorIO to Transcriptarr
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
# ============================================
|
# ============================================
|
||||||
# TranscriptorIO Configuration
|
# Transcriptarr Configuration
|
||||||
# ============================================
|
# ============================================
|
||||||
#
|
#
|
||||||
# IMPORTANT: Most configuration is now stored in the database
|
# IMPORTANT: Most configuration is now stored in the database
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# 🎬 TranscriptorIO
|
# 🎬 Transcriptarr
|
||||||
|
|
||||||
**AI-powered subtitle transcription service with REST API and Web UI**
|
**AI-powered subtitle transcription service with REST API and Web UI**
|
||||||
|
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
[](https://vuejs.org/)
|
[](https://vuejs.org/)
|
||||||
[](LICENSE)
|
[](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.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
## 🚀 Inicio Rápido
|
||||||
|
|
||||||
@@ -33,7 +33,7 @@ Información básica de la API.
|
|||||||
**Response:**
|
**Response:**
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"name": "TranscriptorIO API",
|
"name": "Transcriptarr API",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"status": "running"
|
"status": "running"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
"""TranscriptorIO Backend Package."""
|
"""Transcriptarr Backend Package."""
|
||||||
|
|||||||
@@ -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.workers import router as workers_router
|
||||||
from backend.api.jobs import router as jobs_router
|
from backend.api.jobs import router as jobs_router
|
||||||
from backend.api.scan_rules import router as scan_rules_router
|
from backend.api.scan_rules import router as scan_rules_router
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
"""Main FastAPI application for TranscriptorIO backend."""
|
"""Main FastAPI application for Transcriptarr backend."""
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
from contextlib import asynccontextmanager
|
from contextlib import asynccontextmanager
|
||||||
@@ -47,7 +47,7 @@ async def lifespan(app: FastAPI):
|
|||||||
- Graceful shutdown
|
- Graceful shutdown
|
||||||
"""
|
"""
|
||||||
# === STARTUP ===
|
# === STARTUP ===
|
||||||
logger.info("=== TranscriptorIO Backend Starting ===")
|
logger.info("=== Transcriptarr Backend Starting ===")
|
||||||
|
|
||||||
# Initialize database
|
# Initialize database
|
||||||
logger.info("Initializing database...")
|
logger.info("Initializing database...")
|
||||||
@@ -158,12 +158,12 @@ async def lifespan(app: FastAPI):
|
|||||||
else:
|
else:
|
||||||
logger.info("File watcher enabled but no library paths configured")
|
logger.info("File watcher enabled but no library paths configured")
|
||||||
|
|
||||||
logger.info("=== TranscriptorIO Backend Started ===")
|
logger.info("=== Transcriptarr Backend Started ===")
|
||||||
|
|
||||||
yield
|
yield
|
||||||
|
|
||||||
# === SHUTDOWN ===
|
# === SHUTDOWN ===
|
||||||
logger.info("=== TranscriptorIO Backend Shutting Down ===")
|
logger.info("=== Transcriptarr Backend Shutting Down ===")
|
||||||
|
|
||||||
# Stop library scanner first (quick operations)
|
# Stop library scanner first (quick operations)
|
||||||
logger.info("Stopping library scanner...")
|
logger.info("Stopping library scanner...")
|
||||||
@@ -180,12 +180,12 @@ async def lifespan(app: FastAPI):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warning(f"Error stopping worker pool: {e}")
|
logger.warning(f"Error stopping worker pool: {e}")
|
||||||
|
|
||||||
logger.info("=== TranscriptorIO Backend Stopped ===")
|
logger.info("=== Transcriptarr Backend Stopped ===")
|
||||||
|
|
||||||
|
|
||||||
# Create FastAPI app
|
# Create FastAPI app
|
||||||
app = FastAPI(
|
app = FastAPI(
|
||||||
title="TranscriptorIO API",
|
title="Transcriptarr API",
|
||||||
description="AI-powered subtitle transcription service",
|
description="AI-powered subtitle transcription service",
|
||||||
version="1.0.0",
|
version="1.0.0",
|
||||||
lifespan=lifespan
|
lifespan=lifespan
|
||||||
@@ -278,7 +278,7 @@ else:
|
|||||||
async def root():
|
async def root():
|
||||||
"""Root endpoint - API info."""
|
"""Root endpoint - API info."""
|
||||||
return {
|
return {
|
||||||
"name": "TranscriptorIO API",
|
"name": "Transcriptarr API",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"status": "running",
|
"status": "running",
|
||||||
"message": "Frontend not built. Access API docs at /docs"
|
"message": "Frontend not built. Access API docs at /docs"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
"""CLI entry point for TranscriptorIO backend."""
|
"""CLI entry point for Transcriptarr backend."""
|
||||||
import argparse
|
import argparse
|
||||||
import logging
|
import logging
|
||||||
import sys
|
import sys
|
||||||
@@ -15,7 +15,7 @@ def main():
|
|||||||
"""Main CLI entry point."""
|
"""Main CLI entry point."""
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(
|
parser = argparse.ArgumentParser(
|
||||||
description="TranscriptorIO - AI-powered subtitle transcription service"
|
description="Transcriptarr - AI-powered subtitle transcription service"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Subcommands
|
# Subcommands
|
||||||
@@ -113,7 +113,7 @@ def main():
|
|||||||
|
|
||||||
def run_server(args):
|
def run_server(args):
|
||||||
"""Run FastAPI server."""
|
"""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")
|
print(f"📖 API docs available at: http://{args.host}:{args.port}/docs")
|
||||||
|
|
||||||
uvicorn.run(
|
uvicorn.run(
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
"""Configuration management for TranscriptorIO.
|
"""Configuration management for Transcriptarr.
|
||||||
|
|
||||||
Most configuration is now stored in the database and managed through the
|
Most configuration is now stored in the database and managed through the
|
||||||
Settings service. Only DATABASE_URL is loaded from environment variables.
|
Settings service. Only DATABASE_URL is loaded from environment variables.
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
"""TranscriptorIO Core Module."""
|
"""Transcriptarr Core Module."""
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
"""Database models for TranscriptorIO."""
|
"""Database models for Transcriptarr."""
|
||||||
import uuid
|
import uuid
|
||||||
from datetime import datetime, timezone
|
from datetime import datetime, timezone
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ class SetupWizard:
|
|||||||
True if setup completed successfully
|
True if setup completed successfully
|
||||||
"""
|
"""
|
||||||
print("\n" + "=" * 70)
|
print("\n" + "=" * 70)
|
||||||
print(" 🎬 TranscriptorIO - First Run Setup Wizard")
|
print(" 🎬 Transcriptarr - First Run Setup Wizard")
|
||||||
print("=" * 70 + "\n")
|
print("=" * 70 + "\n")
|
||||||
|
|
||||||
# Step 1: Select mode
|
# Step 1: Select mode
|
||||||
|
|||||||
@@ -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
|
## Table of Contents
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ Root endpoint - API info or frontend (if built).
|
|||||||
**Response (API mode):**
|
**Response (API mode):**
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"name": "TranscriptorIO API",
|
"name": "Transcriptarr API",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"status": "running",
|
"status": "running",
|
||||||
"message": "Frontend not built. Access API docs at /docs"
|
"message": "Frontend not built. Access API docs at /docs"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# TranscriptorIO Backend Architecture
|
# Transcriptarr Backend Architecture
|
||||||
|
|
||||||
Technical documentation of the backend architecture, components, and data flow.
|
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
|
## 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
|
- **FastAPI Server**: REST API with 45+ endpoints
|
||||||
- **Worker Pool**: Multiprocessing-based transcription workers (CPU/GPU)
|
- **Worker Pool**: Multiprocessing-based transcription workers (CPU/GPU)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# TranscriptorIO Configuration
|
# Transcriptarr Configuration
|
||||||
|
|
||||||
Complete documentation for the configuration system.
|
Complete documentation for the configuration system.
|
||||||
|
|
||||||
@@ -16,7 +16,7 @@ Complete documentation for the configuration system.
|
|||||||
|
|
||||||
## Overview
|
## 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)
|
1. **Setup Wizard** (first run)
|
||||||
2. **Web UI** (Settings page)
|
2. **Web UI** (Settings page)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# TranscriptorIO Frontend
|
# Transcriptarr Frontend
|
||||||
|
|
||||||
Technical documentation for the Vue 3 frontend application.
|
Technical documentation for the Vue 3 frontend application.
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ Technical documentation for the Vue 3 frontend application.
|
|||||||
|
|
||||||
## Overview
|
## 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
|
- **6 Complete Views**: Dashboard, Queue, Scanner, Rules, Workers, Settings
|
||||||
- **Real-time Updates**: Polling-based status updates
|
- **Real-time Updates**: Polling-based status updates
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# TranscriptorIO Frontend
|
# Transcriptarr Frontend
|
||||||
|
|
||||||
Vue 3 + TypeScript + Vite frontend for TranscriptorIO.
|
Vue 3 + TypeScript + Vite frontend for Transcriptarr.
|
||||||
|
|
||||||
## 🚀 Quick Start
|
## 🚀 Quick Start
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<link rel="icon" href="/favicon.ico">
|
<link rel="icon" href="/favicon.ico">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>TranscriptorIO</title>
|
<title>Transcriptarr</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="app"></div>
|
<div id="app"></div>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "transcriptorio-ui",
|
"name": "transcriptorio-ui",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"description": "TranscriptorIO Web UI - Vue 3 Frontend",
|
"description": "Transcriptarr Web UI - Vue 3 Frontend",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
echo "🎬 TranscriptorIO Frontend - Setup Script"
|
echo "🎬 Transcriptarr Frontend - Setup Script"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="header-content">
|
<div class="header-content">
|
||||||
<div class="logo">
|
<div class="logo">
|
||||||
<h1>🎬 TranscriptorIO</h1>
|
<h1>🎬 Transcriptarr</h1>
|
||||||
<span class="subtitle">AI-Powered Subtitle Transcription</span>
|
<span class="subtitle">AI-Powered Subtitle Transcription</span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="main-nav">
|
<nav class="main-nav">
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
|
|
||||||
<footer class="app-footer">
|
<footer class="app-footer">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<p>© 2026 TranscriptorIO | Powered by Whisper AI</p>
|
<p>© 2026 Transcriptarr | Powered by Whisper AI</p>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -2,14 +2,14 @@
|
|||||||
<div class="setup-wizard-overlay">
|
<div class="setup-wizard-overlay">
|
||||||
<div class="wizard-container">
|
<div class="wizard-container">
|
||||||
<div class="wizard-header">
|
<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>
|
<p>Let's get you set up in just a few steps</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Step 1: Choose Mode -->
|
<!-- Step 1: Choose Mode -->
|
||||||
<div v-if="currentStep === 1" class="wizard-step">
|
<div v-if="currentStep === 1" class="wizard-step">
|
||||||
<h2>Choose Operation Mode</h2>
|
<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 class="mode-cards">
|
||||||
<div
|
<div
|
||||||
@@ -150,7 +150,7 @@
|
|||||||
<!-- Scanner Configuration -->
|
<!-- Scanner Configuration -->
|
||||||
<div class="config-section">
|
<div class="config-section">
|
||||||
<h3 class="section-title">⏰ Automatic Scanning</h3>
|
<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="scanner-config">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
@@ -298,7 +298,7 @@
|
|||||||
<!-- Step 2b: Bazarr Slave Configuration -->
|
<!-- Step 2b: Bazarr Slave Configuration -->
|
||||||
<div v-if="currentStep === 2 && selectedMode === 'bazarr_slave'" class="wizard-step">
|
<div v-if="currentStep === 2 && selectedMode === 'bazarr_slave'" class="wizard-step">
|
||||||
<h2>Bazarr Provider Configuration</h2>
|
<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 v-if="bazarrInfo" class="bazarr-info-card">
|
||||||
<div class="info-section">
|
<div class="info-section">
|
||||||
@@ -319,7 +319,7 @@
|
|||||||
|
|
||||||
<div class="info-section">
|
<div class="info-section">
|
||||||
<h3>Provider Type</h3>
|
<h3>Provider Type</h3>
|
||||||
<code>TranscriptorIO (Whisper AI)</code>
|
<code>Transcriptarr (Whisper AI)</code>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="info-instructions">
|
<div class="info-instructions">
|
||||||
@@ -346,7 +346,7 @@
|
|||||||
<div v-if="currentStep === 5" class="wizard-step completion">
|
<div v-if="currentStep === 5" class="wizard-step completion">
|
||||||
<div class="completion-icon">✅</div>
|
<div class="completion-icon">✅</div>
|
||||||
<h2>Setup Complete!</h2>
|
<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">
|
<button @click="finishSetup" class="btn btn-primary btn-lg">
|
||||||
Go to Dashboard →
|
Go to Dashboard →
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ const router = createRouter({
|
|||||||
})
|
})
|
||||||
|
|
||||||
router.beforeEach((to, _from, next) => {
|
router.beforeEach((to, _from, next) => {
|
||||||
document.title = `${to.meta.title || 'TranscriptorIO'} - TranscriptorIO`
|
document.title = `${to.meta.title || 'Transcriptarr'} - Transcriptarr`
|
||||||
next()
|
next()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user