mirror of
https://github.com/ceratic/MediaCollectorLibary.git
synced 2026-05-13 23:56:46 +02:00
155 lines
5.7 KiB
PHP
155 lines
5.7 KiB
PHP
<?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);
|
|
}
|