diff --git a/.idea/reiverr.iml b/.idea/reiverr.iml
index 24643cc..c681724 100644
--- a/.idea/reiverr.iml
+++ b/.idea/reiverr.iml
@@ -5,6 +5,8 @@
+
+
diff --git a/src/lib/jellyfin/jellyfin-types.d.ts b/src/lib/apis/jellyfin/jellyfin.generated.d.ts
similarity index 100%
rename from src/lib/jellyfin/jellyfin-types.d.ts
rename to src/lib/apis/jellyfin/jellyfin.generated.d.ts
diff --git a/src/lib/jellyfin/jellyfin.ts b/src/lib/apis/jellyfin/jellyfinApi.ts
similarity index 95%
rename from src/lib/jellyfin/jellyfin.ts
rename to src/lib/apis/jellyfin/jellyfinApi.ts
index cfd9542..34d4807 100644
--- a/src/lib/jellyfin/jellyfin.ts
+++ b/src/lib/apis/jellyfin/jellyfinApi.ts
@@ -1,8 +1,8 @@
import createClient from 'openapi-fetch';
-import type { paths } from '$lib/jellyfin/jellyfin-types';
+import type { paths } from '$lib/apis/jellyfin/jellyfin.generated';
import { PUBLIC_JELLYFIN_API_KEY, PUBLIC_JELLYFIN_URL } from '$env/static/public';
import { request } from '$lib/utils';
-import type { DeviceProfile } from '$lib/jellyfin/playback-profiles';
+import type { DeviceProfile } from '$lib/apis/jellyfin/playback-profiles';
export const JELLYFIN_DEVICE_ID = 'Reiverr Client';
export const JELLYFIN_USER_ID = '75dcb061c9404115a7acdc893ea6bbbc';
diff --git a/src/lib/jellyfin/playback-profiles/directplay-profile.ts b/src/lib/apis/jellyfin/playback-profiles/directplay-profile.ts
similarity index 100%
rename from src/lib/jellyfin/playback-profiles/directplay-profile.ts
rename to src/lib/apis/jellyfin/playback-profiles/directplay-profile.ts
diff --git a/src/lib/jellyfin/playback-profiles/helpers/audio-formats.ts b/src/lib/apis/jellyfin/playback-profiles/helpers/audio-formats.ts
similarity index 100%
rename from src/lib/jellyfin/playback-profiles/helpers/audio-formats.ts
rename to src/lib/apis/jellyfin/playback-profiles/helpers/audio-formats.ts
diff --git a/src/lib/jellyfin/playback-profiles/helpers/codec-profiles.ts b/src/lib/apis/jellyfin/playback-profiles/helpers/codec-profiles.ts
similarity index 100%
rename from src/lib/jellyfin/playback-profiles/helpers/codec-profiles.ts
rename to src/lib/apis/jellyfin/playback-profiles/helpers/codec-profiles.ts
diff --git a/src/lib/jellyfin/playback-profiles/helpers/fmp4-audio-formats.ts b/src/lib/apis/jellyfin/playback-profiles/helpers/fmp4-audio-formats.ts
similarity index 100%
rename from src/lib/jellyfin/playback-profiles/helpers/fmp4-audio-formats.ts
rename to src/lib/apis/jellyfin/playback-profiles/helpers/fmp4-audio-formats.ts
diff --git a/src/lib/jellyfin/playback-profiles/helpers/fmp4-video-formats.ts b/src/lib/apis/jellyfin/playback-profiles/helpers/fmp4-video-formats.ts
similarity index 100%
rename from src/lib/jellyfin/playback-profiles/helpers/fmp4-video-formats.ts
rename to src/lib/apis/jellyfin/playback-profiles/helpers/fmp4-video-formats.ts
diff --git a/src/lib/jellyfin/playback-profiles/helpers/hls-formats.ts b/src/lib/apis/jellyfin/playback-profiles/helpers/hls-formats.ts
similarity index 100%
rename from src/lib/jellyfin/playback-profiles/helpers/hls-formats.ts
rename to src/lib/apis/jellyfin/playback-profiles/helpers/hls-formats.ts
diff --git a/src/lib/jellyfin/playback-profiles/helpers/mp4-audio-formats.ts b/src/lib/apis/jellyfin/playback-profiles/helpers/mp4-audio-formats.ts
similarity index 100%
rename from src/lib/jellyfin/playback-profiles/helpers/mp4-audio-formats.ts
rename to src/lib/apis/jellyfin/playback-profiles/helpers/mp4-audio-formats.ts
diff --git a/src/lib/jellyfin/playback-profiles/helpers/mp4-video-formats.ts b/src/lib/apis/jellyfin/playback-profiles/helpers/mp4-video-formats.ts
similarity index 100%
rename from src/lib/jellyfin/playback-profiles/helpers/mp4-video-formats.ts
rename to src/lib/apis/jellyfin/playback-profiles/helpers/mp4-video-formats.ts
diff --git a/src/lib/jellyfin/playback-profiles/helpers/transcoding-formats.ts b/src/lib/apis/jellyfin/playback-profiles/helpers/transcoding-formats.ts
similarity index 100%
rename from src/lib/jellyfin/playback-profiles/helpers/transcoding-formats.ts
rename to src/lib/apis/jellyfin/playback-profiles/helpers/transcoding-formats.ts
diff --git a/src/lib/jellyfin/playback-profiles/helpers/ts-audio-formats.ts b/src/lib/apis/jellyfin/playback-profiles/helpers/ts-audio-formats.ts
similarity index 100%
rename from src/lib/jellyfin/playback-profiles/helpers/ts-audio-formats.ts
rename to src/lib/apis/jellyfin/playback-profiles/helpers/ts-audio-formats.ts
diff --git a/src/lib/jellyfin/playback-profiles/helpers/ts-video-formats.ts b/src/lib/apis/jellyfin/playback-profiles/helpers/ts-video-formats.ts
similarity index 100%
rename from src/lib/jellyfin/playback-profiles/helpers/ts-video-formats.ts
rename to src/lib/apis/jellyfin/playback-profiles/helpers/ts-video-formats.ts
diff --git a/src/lib/jellyfin/playback-profiles/helpers/webm-audio-formats.ts b/src/lib/apis/jellyfin/playback-profiles/helpers/webm-audio-formats.ts
similarity index 100%
rename from src/lib/jellyfin/playback-profiles/helpers/webm-audio-formats.ts
rename to src/lib/apis/jellyfin/playback-profiles/helpers/webm-audio-formats.ts
diff --git a/src/lib/jellyfin/playback-profiles/helpers/webm-video-formats.ts b/src/lib/apis/jellyfin/playback-profiles/helpers/webm-video-formats.ts
similarity index 100%
rename from src/lib/jellyfin/playback-profiles/helpers/webm-video-formats.ts
rename to src/lib/apis/jellyfin/playback-profiles/helpers/webm-video-formats.ts
diff --git a/src/lib/jellyfin/playback-profiles/index.ts b/src/lib/apis/jellyfin/playback-profiles/index.ts
similarity index 100%
rename from src/lib/jellyfin/playback-profiles/index.ts
rename to src/lib/apis/jellyfin/playback-profiles/index.ts
diff --git a/src/lib/jellyfin/playback-profiles/response-profile.ts b/src/lib/apis/jellyfin/playback-profiles/response-profile.ts
similarity index 100%
rename from src/lib/jellyfin/playback-profiles/response-profile.ts
rename to src/lib/apis/jellyfin/playback-profiles/response-profile.ts
diff --git a/src/lib/jellyfin/playback-profiles/subtitle-profile.ts b/src/lib/apis/jellyfin/playback-profiles/subtitle-profile.ts
similarity index 100%
rename from src/lib/jellyfin/playback-profiles/subtitle-profile.ts
rename to src/lib/apis/jellyfin/playback-profiles/subtitle-profile.ts
diff --git a/src/lib/jellyfin/playback-profiles/transcoding-profile.ts b/src/lib/apis/jellyfin/playback-profiles/transcoding-profile.ts
similarity index 100%
rename from src/lib/jellyfin/playback-profiles/transcoding-profile.ts
rename to src/lib/apis/jellyfin/playback-profiles/transcoding-profile.ts
diff --git a/src/lib/radarr/radarr-types.d.ts b/src/lib/apis/radarr/radarr.generated.d.ts
similarity index 100%
rename from src/lib/radarr/radarr-types.d.ts
rename to src/lib/apis/radarr/radarr.generated.d.ts
diff --git a/src/lib/radarr/radarr.ts b/src/lib/apis/radarr/radarrApi.ts
similarity index 78%
rename from src/lib/radarr/radarr.ts
rename to src/lib/apis/radarr/radarrApi.ts
index d2cea19..e7492a3 100644
--- a/src/lib/radarr/radarr.ts
+++ b/src/lib/apis/radarr/radarrApi.ts
@@ -1,13 +1,14 @@
import createClient from 'openapi-fetch';
import { log, request } from '$lib/utils';
-import type { paths } from '$lib/radarr/radarr-types';
-import type { components } from '$lib/radarr/radarr-types';
-import { fetchTmdbMovie } from '$lib/tmdb-api';
-import { RADARR_API_KEY, RADARR_BASE_URL } from '$env/static/private';
+import type { paths } from '$lib/apis/radarr/radarr.generated';
+import type { components } from '$lib/apis/radarr/radarr.generated';
+import { fetchTmdbMovie } from '$lib/apis/tmdbApi';
+import { PUBLIC_RADARR_API_KEY, PUBLIC_RADARR_BASE_URL } from '$env/static/public';
export type RadarrMovie = components['schemas']['MovieResource'];
export type MovieFileResource = components['schemas']['MovieFileResource'];
export type ReleaseResource = components['schemas']['ReleaseResource'];
+export type RadarrDownload = components['schemas']['QueueResource'] & { movie: RadarrMovie };
export interface RadarrMovieOptions {
title: string;
@@ -23,20 +24,20 @@ export interface RadarrMovieOptions {
}
export const RadarrApi = createClient({
- baseUrl: RADARR_BASE_URL,
+ baseUrl: PUBLIC_RADARR_BASE_URL,
headers: {
- 'X-Api-Key': RADARR_API_KEY
+ 'X-Api-Key': PUBLIC_RADARR_API_KEY
}
});
-export const getRadarrMovies = () =>
+export const getRadarrMovies = (): Promise =>
RadarrApi.get('/api/v3/movie', {
params: {}
- }).then((r) => r.data);
+ }).then((r) => r.data || []);
export const requestRadarrMovie = () => request(getRadarrMovie);
-export const getRadarrMovie = (tmdbId: string) =>
+export const getRadarrMovie = (tmdbId: string): Promise =>
RadarrApi.get('/api/v3/movie', {
params: {
query: {
@@ -121,16 +122,17 @@ export const deleteRadarrMovie = (id: number) =>
export const requestRadarrQueuedById = () => request(getRadarrDownload);
-export const getRadarrDownload = (id: string) =>
+export const getRadarrDownloads = (): Promise =>
RadarrApi.get('/api/v3/queue', {
params: {
query: {
includeMovie: true
}
}
- })
- .then((r) => r.data)
- .then((queue) => queue?.records?.filter((r) => (r?.movie?.id as any) == id));
+ }).then((r) => (r.data?.records?.filter((record) => record.movie) as RadarrDownload[]) || []);
+
+export const getRadarrDownload = (id: string) =>
+ getRadarrDownloads().then((downloads) => downloads.find((d) => d.movie.id === Number(id)));
const getMovieByTmdbIdByTmdbId = (tmdbId: string) =>
RadarrApi.get('/api/v3/movie/lookup/tmdb', {
diff --git a/src/lib/sonarr/sonarr-types.d.ts b/src/lib/apis/sonarr/sonarr.generated.d.ts
similarity index 100%
rename from src/lib/sonarr/sonarr-types.d.ts
rename to src/lib/apis/sonarr/sonarr.generated.d.ts
diff --git a/src/lib/apis/sonarr/sonarrApi.ts b/src/lib/apis/sonarr/sonarrApi.ts
new file mode 100644
index 0000000..05c765c
--- /dev/null
+++ b/src/lib/apis/sonarr/sonarrApi.ts
@@ -0,0 +1,10 @@
+import createClient from 'openapi-fetch';
+import type { paths } from '$lib/apis/sonarr/sonarr.generated';
+import { PUBLIC_SONARR_API_KEY, PUBLIC_SONARR_BASE_URL } from '$env/static/public';
+
+export const SonarrApi = createClient({
+ baseUrl: PUBLIC_SONARR_BASE_URL,
+ headers: {
+ 'X-Api-Key': PUBLIC_SONARR_API_KEY
+ }
+});
diff --git a/src/lib/tmdb-api.ts b/src/lib/apis/tmdbApi.ts
similarity index 100%
rename from src/lib/tmdb-api.ts
rename to src/lib/apis/tmdbApi.ts
diff --git a/src/routes/components/Ui/Button.svelte b/src/lib/components/Button.svelte
similarity index 100%
rename from src/routes/components/Ui/Button.svelte
rename to src/lib/components/Button.svelte
diff --git a/src/routes/components/Card/Card.svelte b/src/lib/components/Card/Card.svelte
similarity index 97%
rename from src/routes/components/Card/Card.svelte
rename to src/lib/components/Card/Card.svelte
index f894fbb..7135029 100644
--- a/src/routes/components/Card/Card.svelte
+++ b/src/lib/components/Card/Card.svelte
@@ -14,7 +14,6 @@
export let available = true;
export let progress = 0;
- export let progressType: 'watched' | 'downloading' = 'watched';
export let type: 'dynamic' | 'normal' | 'large' = 'normal';
export let randomProgress = false;
if (randomProgress) {
diff --git a/src/routes/components/Card/CardPlaceholder.svelte b/src/lib/components/Card/CardPlaceholder.svelte
similarity index 100%
rename from src/routes/components/Card/CardPlaceholder.svelte
rename to src/lib/components/Card/CardPlaceholder.svelte
diff --git a/src/routes/components/Card/CardProvider.svelte b/src/lib/components/Card/CardProvider.svelte
similarity index 85%
rename from src/routes/components/Card/CardProvider.svelte
rename to src/lib/components/Card/CardProvider.svelte
index 21a380b..4e729d8 100644
--- a/src/routes/components/Card/CardProvider.svelte
+++ b/src/lib/components/Card/CardProvider.svelte
@@ -1,9 +1,9 @@
@@ -219,29 +220,29 @@