first commit

This commit is contained in:
Lars Behrends
2025-10-17 13:29:28 +02:00
commit 929ee43001
85 changed files with 10361 additions and 0 deletions

154
setup_adult_source.php Normal file
View File

@@ -0,0 +1,154 @@
<?php
require_once __DIR__ . '/vendor/autoload.php';
// Load helper functions
require_once __DIR__ . '/app/helpers.php';
// Load environment variables
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
// Load database configuration
$dbConfig = require __DIR__ . '/config/database.php';
// Set up database connection
try {
\App\Database\Database::setConfig($dbConfig);
$pdo = \App\Database\Database::getInstance();
echo "Database connection established successfully.\n";
} catch (Exception $e) {
die('Database connection failed: ' . $e->getMessage() . "\n");
}
echo "Setting up Adult Video Media Source...\n";
try {
// Check if adult source already exists
$stmt = $pdo->prepare("SELECT id FROM sources WHERE name = 'adult' LIMIT 1");
$stmt->execute();
$existingSource = $stmt->fetch(PDO::FETCH_ASSOC);
// Create adult_videos table if it doesn't exist
$stmt = $pdo->query("SHOW TABLES LIKE 'adult_videos'");
if ($stmt->rowCount() == 0) {
echo "Creating adult_videos table...\n";
$pdo->exec("
CREATE TABLE adult_videos (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
overview TEXT,
poster_url VARCHAR(500),
backdrop_url VARCHAR(500),
rating DECIMAL(3,1),
runtime_minutes INT,
release_date DATE,
director VARCHAR(255),
writer VARCHAR(255),
cast TEXT,
genre VARCHAR(255),
metadata JSON,
watched BOOLEAN DEFAULT FALSE,
watch_count INT DEFAULT 0,
is_favorite BOOLEAN DEFAULT FALSE,
source_id BIGINT UNSIGNED NOT NULL,
external_id VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (source_id) REFERENCES sources(id) ON DELETE CASCADE,
INDEX idx_source_external (source_id, external_id),
INDEX idx_title (title)
)
");
echo "✓ Created adult_videos table\n";
} else {
echo "✓ adult_videos table already exists\n";
}
// Check for XBVR sources and migrate their data
$stmt = $pdo->prepare("SELECT id, display_name FROM sources WHERE name = 'xbvr' AND is_active = 1");
$stmt->execute();
$xbvrSources = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (!empty($xbvrSources)) {
echo "\nFound XBVR sources:\n";
foreach ($xbvrSources as $xbvrSource) {
echo "- {$xbvrSource['display_name']} (ID: {$xbvrSource['id']})\n";
// Count movies to migrate
$countStmt = $pdo->prepare("SELECT COUNT(*) as count FROM movies WHERE source_id = ?");
$countStmt->execute([$xbvrSource['id']]);
$count = $countStmt->fetch(PDO::FETCH_ASSOC)['count'];
if ($count > 0) {
echo " Migrating {$count} movies...\n";
// Migrate XBVR movies to adult source
$migrateStmt = $pdo->prepare("
UPDATE movies
SET source_id = (SELECT id FROM sources WHERE name = 'adult' LIMIT 1), updated_at = NOW()
WHERE source_id = ?
");
$migrateStmt->execute([$xbvrSource['id']]);
echo " ✓ Migrated {$count} XBVR movies to adult source\n";
} else {
echo " No movies to migrate\n";
}
}
} else {
echo "\nNo active XBVR sources found\n";
}
// Check for Stash sources and migrate their data
$stmt = $pdo->prepare("SELECT id, display_name FROM sources WHERE name = 'stash' AND is_active = 1");
$stmt->execute();
$stashSources = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (!empty($stashSources)) {
echo "\nFound Stash sources:\n";
foreach ($stashSources as $stashSource) {
echo "- {$stashSource['display_name']} (ID: {$stashSource['id']})\n";
// Count movies to migrate
$countStmt = $pdo->prepare("SELECT COUNT(*) as count FROM movies WHERE source_id = ?");
$countStmt->execute([$stashSource['id']]);
$count = $countStmt->fetch(PDO::FETCH_ASSOC)['count'];
if ($count > 0) {
echo " Migrating {$count} movies...\n";
// Migrate Stash movies to adult source
$migrateStmt = $pdo->prepare("
UPDATE movies
SET source_id = (SELECT id FROM sources WHERE name = 'adult' LIMIT 1), updated_at = NOW()
WHERE source_id = ?
");
$migrateStmt->execute([$stashSource['id']]);
echo " ✓ Migrated {$count} Stash movies to adult source\n";
} else {
echo " No movies to migrate\n";
}
}
} else {
echo "\nNo active Stash sources found\n";
}
// Show final adult source stats
$adultSourceId = $pdo->query("SELECT id FROM sources WHERE name = 'adult' LIMIT 1")->fetch(PDO::FETCH_ASSOC)['id'];
$countStmt = $pdo->prepare("SELECT COUNT(*) as count FROM movies WHERE source_id = ?");
$countStmt->execute([$adultSourceId]);
$adultCount = $countStmt->fetch(PDO::FETCH_ASSOC)['count'];
echo "\n✅ Adult Video Media Source Setup Complete!\n";
echo "Adult source now contains {$adultCount} videos\n";
echo "\nYou can now sync adult content through the Admin Dashboard!\n";
} catch (Exception $e) {
echo "Error: " . $e->getMessage() . "\n";
exit(1);
}