backend env url

This commit is contained in:
Lars Behrends
2026-04-10 14:32:54 +02:00
parent 04156486e2
commit 07c3270e12
6 changed files with 28 additions and 17 deletions

View File

@@ -3,6 +3,9 @@
# Used for self-referential links, OAuth callbacks, and API endpoints. # Used for self-referential links, OAuth callbacks, and API endpoints.
APP_URL="MY_APP_URL" APP_URL="MY_APP_URL"
# Backend API URL
VITE_API_URL="http://192.168.1.102:6400"
# Importer Configurations # Importer Configurations
# XBVR Importer # XBVR Importer
VITE_XBVR_URL="" VITE_XBVR_URL=""

View File

@@ -1,6 +1,6 @@
import { Media, Staff, UserSettings, MediaCategory } from './types'; import { Media, Staff, UserSettings, MediaCategory } from './types';
const BASE_URL = 'http://192.168.1.102:6400'; const BASE_URL = import.meta.env.VITE_API_URL;
function normalizeUrl(url: string | null): string { function normalizeUrl(url: string | null): string {
if (!url) return ''; if (!url) return '';

View File

@@ -7,9 +7,11 @@ import { importFromXBVR, XBVRConfig, ImportProgress } from '@/lib/xbvrImporter';
import { importFromStashAPP, StashAPPConfig, updateActorsFromStashAPP } from '@/lib/stashappImporter'; import { importFromStashAPP, StashAPPConfig, updateActorsFromStashAPP } from '@/lib/stashappImporter';
import { importFromPlaynite, PlayniteConfig } from '@/lib/playniteImporter'; import { importFromPlaynite, PlayniteConfig } from '@/lib/playniteImporter';
const BASE_URL = import.meta.env.VITE_BASE_URL || 'http://localhost:3000';
export default function ImporterView() { export default function ImporterView() {
const navigate = useNavigate(); const navigate = useNavigate();
const [xbvrConfig, setXbvrConfig] = useState<XBVRConfig>({ url: import.meta.env.VITE_XBVR_URL || '' }); const [xbvrConfig, setXbvrConfig] = useState<XBVRConfig>({ url: import.meta.env.VITE_XBVR_URL || BASE_URL });
const [stashappConfig, setStashappConfig] = useState<StashAPPConfig>({ const [stashappConfig, setStashappConfig] = useState<StashAPPConfig>({
url: import.meta.env.VITE_STASHAPP_URL || '', url: import.meta.env.VITE_STASHAPP_URL || '',
apiKey: import.meta.env.VITE_STASHAPP_API_KEY || '' apiKey: import.meta.env.VITE_STASHAPP_API_KEY || ''

View File

@@ -1,3 +1,5 @@
const BASE_URL = import.meta.env.VITE_API_URL;
export interface PlayniteConfig { export interface PlayniteConfig {
ip: string; ip: string;
apiToken: string; apiToken: string;
@@ -108,7 +110,7 @@ export async function importFromPlaynite(
// Step 0: Fetch existing media to check for duplicates and enable updates // Step 0: Fetch existing media to check for duplicates and enable updates
logCallback('Fetching existing media from Kyoo API...'); logCallback('Fetching existing media from Kyoo API...');
const existingMediaResponse = await fetch('http://192.168.1.102:6400/api/media?limit=1000'); const existingMediaResponse = await fetch(`${BASE_URL}/api/media?limit=1000`);
const existingMediaData = await existingMediaResponse.json(); const existingMediaData = await existingMediaResponse.json();
const existingMedia = new Map( const existingMedia = new Map(
(existingMediaData.data?.items || []).map((m: any) => [m.title, m]) (existingMediaData.data?.items || []).map((m: any) => [m.title, m])
@@ -279,13 +281,13 @@ export async function importFromPlaynite(
let response; let response;
if (isUpdate) { if (isUpdate) {
response = await fetch(`http://192.168.1.102:6400/api/media/${(existingGame as any).id}`, { response = await fetch(`${BASE_URL}/api/media/${(existingGame as any).id}`, {
method: 'PUT', method: 'PUT',
headers: { 'Content-Type': 'application/json' }, headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(mediaData) body: JSON.stringify(mediaData)
}); });
} else { } else {
response = await fetch('http://192.168.1.102:6400/api/media', { response = await fetch(`${BASE_URL}/api/media`, {
method: 'POST', method: 'POST',
headers: { 'Content-Type': 'application/json' }, headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(mediaData) body: JSON.stringify(mediaData)

View File

@@ -1,3 +1,5 @@
const BASE_URL = import.meta.env.VITE_API_URL;
export interface StashAPPConfig { export interface StashAPPConfig {
url: string; url: string;
apiKey?: string; apiKey?: string;
@@ -155,7 +157,7 @@ export async function updateActorsFromStashAPP(
// Fetch existing cast from Kyoo API // Fetch existing cast from Kyoo API
logCallback('Fetching existing cast from Kyoo API...'); logCallback('Fetching existing cast from Kyoo API...');
const existingCastResponse = await fetch('http://192.168.1.102:6400/api/cast'); const existingCastResponse = await fetch(`${BASE_URL}/api/cast`);
const existingCastData = await existingCastResponse.json(); const existingCastData = await existingCastResponse.json();
const existingActors = new Map( const existingActors = new Map(
(existingCastData.data?.items || []).map((c: any) => [c.name, c]) (existingCastData.data?.items || []).map((c: any) => [c.name, c])
@@ -274,7 +276,7 @@ export async function updateActorsFromStashAPP(
updateData.birthPlace = performer.country; updateData.birthPlace = performer.country;
} }
const response = await fetch(`http://192.168.1.102:6400/api/cast/${existingActor.id}`, { const response = await fetch(`${BASE_URL}/api/cast/${existingActor.id}`, {
method: 'PUT', method: 'PUT',
headers: { 'Content-Type': 'application/json' }, headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(updateData) body: JSON.stringify(updateData)
@@ -290,7 +292,7 @@ export async function updateActorsFromStashAPP(
} }
} else { } else {
// Create new actor // Create new actor
const response = await fetch('http://192.168.1.102:6400/api/cast/adult', { const response = await fetch(`${BASE_URL}/api/cast/adult`, {
method: 'POST', method: 'POST',
headers: { 'Content-Type': 'application/json' }, headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ body: JSON.stringify({
@@ -377,7 +379,7 @@ export async function importFromStashAPP(
// Step 0: Fetch existing media and cast to check for duplicates // Step 0: Fetch existing media and cast to check for duplicates
logCallback('Fetching existing media from Kyoo API...'); logCallback('Fetching existing media from Kyoo API...');
const existingMediaResponse = await fetch('http://192.168.1.102:6400/api/media'); const existingMediaResponse = await fetch(`${BASE_URL}/api/media`);
const existingMediaData = await existingMediaResponse.json(); const existingMediaData = await existingMediaResponse.json();
const existingTitles = new Set( const existingTitles = new Set(
existingMediaData.data?.items?.map((m: any) => m.title) || [] existingMediaData.data?.items?.map((m: any) => m.title) || []
@@ -385,7 +387,7 @@ export async function importFromStashAPP(
logCallback(`Found ${existingTitles.size} existing videos in database`); logCallback(`Found ${existingTitles.size} existing videos in database`);
logCallback('Fetching existing cast from Kyoo API...'); logCallback('Fetching existing cast from Kyoo API...');
const existingCastResponse = await fetch('http://192.168.1.102:6400/api/cast'); const existingCastResponse = await fetch(`${BASE_URL}/api/cast`, {});
const existingCastData = await existingCastResponse.json(); const existingCastData = await existingCastResponse.json();
const existingActors = new Map( const existingActors = new Map(
(existingCastData.data?.items || []).map((c: any) => [c.name, c]) (existingCastData.data?.items || []).map((c: any) => [c.name, c])
@@ -550,7 +552,7 @@ export async function importFromStashAPP(
updateData.birthPlace = performer.country; updateData.birthPlace = performer.country;
} }
const response = await fetch(`http://192.168.1.102:6400/api/cast/${existingActor.id}`, { const response = await fetch(`${BASE_URL}/api/cast/${existingActor.id}`, {
method: 'PUT', method: 'PUT',
headers: { 'Content-Type': 'application/json' }, headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(updateData) body: JSON.stringify(updateData)
@@ -566,7 +568,7 @@ export async function importFromStashAPP(
} }
} else { } else {
// Create new actor // Create new actor
const response = await fetch('http://192.168.1.102:6400/api/cast/adult', { const response = await fetch(`${BASE_URL}/api/cast/adult`, {
method: 'POST', method: 'POST',
headers: { 'Content-Type': 'application/json' }, headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ body: JSON.stringify({
@@ -706,7 +708,7 @@ export async function importFromStashAPP(
staff: staff staff: staff
}; };
const response = await fetch('http://192.168.1.102:6400/api/media', { const response = await fetch(`${BASE_URL}/api/media`, {
method: 'POST', method: 'POST',
headers: { 'Content-Type': 'application/json' }, headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(mediaData) body: JSON.stringify(mediaData)

View File

@@ -1,3 +1,5 @@
const BASE_URL = import.meta.env.VITE_API_URL;
export interface XBVRConfig { export interface XBVRConfig {
url: string; url: string;
apiKey?: string; apiKey?: string;
@@ -74,7 +76,7 @@ export async function importFromXBVR(
// Step 0: Fetch existing media and cast to check for duplicates // Step 0: Fetch existing media and cast to check for duplicates
logCallback('Fetching existing media from Kyoo API...'); logCallback('Fetching existing media from Kyoo API...');
const existingMediaResponse = await fetch('http://192.168.1.102:6400/api/media?limit=1000'); const existingMediaResponse = await fetch(`${BASE_URL}/api/media?limit=1000`);
const existingMediaData = await existingMediaResponse.json(); const existingMediaData = await existingMediaResponse.json();
const existingTitles = new Set( const existingTitles = new Set(
existingMediaData.data?.items?.map((m: any) => m.title) || [] existingMediaData.data?.items?.map((m: any) => m.title) || []
@@ -82,7 +84,7 @@ export async function importFromXBVR(
logCallback(`Found ${existingTitles.size} existing videos in database`); logCallback(`Found ${existingTitles.size} existing videos in database`);
logCallback('Fetching existing cast from Kyoo API...'); logCallback('Fetching existing cast from Kyoo API...');
const existingCastResponse = await fetch('http://192.168.1.102:6400/api/cast?limit=1000'); const existingCastResponse = await fetch(`${BASE_URL}/api/cast?limit=1000`);
const existingCastData = await existingCastResponse.json(); const existingCastData = await existingCastResponse.json();
const existingActors = new Map( const existingActors = new Map(
(existingCastData.data?.items || []).map((c: any) => [c.name, c]) (existingCastData.data?.items || []).map((c: any) => [c.name, c])
@@ -194,7 +196,7 @@ export async function importFromXBVR(
logCallback(`⊘ Actor already exists: ${actor.name}`); logCallback(`⊘ Actor already exists: ${actor.name}`);
} else { } else {
// Create new actor // Create new actor
const response = await fetch('http://192.168.1.102:6400/api/cast', { const response = await fetch(`${BASE_URL}/api/cast`, {
method: 'POST', method: 'POST',
headers: { 'Content-Type': 'application/json' }, headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ body: JSON.stringify({
@@ -312,7 +314,7 @@ export async function importFromXBVR(
staff: staff staff: staff
}; };
const response = await fetch('http://192.168.1.102:6400/api/media', { const response = await fetch(`${BASE_URL}/api/media`, {
method: 'POST', method: 'POST',
headers: { 'Content-Type': 'application/json' }, headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(mediaData) body: JSON.stringify(mediaData)