@muhammedaksam/easiarr 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +29750 -0
- package/package.json +15 -15
- package/src/VersionInfo.ts +0 -12
- package/src/api/arr-api.ts +0 -521
- package/src/api/auto-setup-types.ts +0 -64
- package/src/api/base-api.ts +0 -216
- package/src/api/bazarr-api.ts +0 -297
- package/src/api/cloudflare-api.ts +0 -493
- package/src/api/custom-format-api.ts +0 -224
- package/src/api/grafana-api.ts +0 -230
- package/src/api/heimdall-api.ts +0 -141
- package/src/api/homarr-api.ts +0 -209
- package/src/api/huntarr-api.ts +0 -457
- package/src/api/index.ts +0 -9
- package/src/api/jellyfin-api.ts +0 -389
- package/src/api/jellyseerr-api.ts +0 -559
- package/src/api/maintainerr-api.ts +0 -461
- package/src/api/naming-config.ts +0 -101
- package/src/api/overseerr-api.ts +0 -392
- package/src/api/plex-api.ts +0 -308
- package/src/api/portainer-api.ts +0 -374
- package/src/api/profilarr-api.ts +0 -391
- package/src/api/prowlarr-api.ts +0 -488
- package/src/api/qbittorrent-api.ts +0 -300
- package/src/api/quality-profile-api.ts +0 -272
- package/src/api/tautulli-api.ts +0 -244
- package/src/api/uptime-kuma-api.ts +0 -343
- package/src/apps/categories.ts +0 -14
- package/src/apps/index.ts +0 -2
- package/src/apps/registry.ts +0 -1275
- package/src/compose/caddy-config.ts +0 -130
- package/src/compose/generator.ts +0 -287
- package/src/compose/index.ts +0 -7
- package/src/compose/templates.ts +0 -78
- package/src/compose/traefik-config.ts +0 -187
- package/src/config/bookmarks-generator.ts +0 -160
- package/src/config/defaults.ts +0 -37
- package/src/config/homepage-config.ts +0 -381
- package/src/config/index.ts +0 -6
- package/src/config/manager.ts +0 -150
- package/src/config/recyclarr-config.ts +0 -181
- package/src/config/schema.ts +0 -310
- package/src/config/slskd-config.ts +0 -86
- package/src/config/soularr-config.ts +0 -105
- package/src/config/trash-quality-definitions.ts +0 -213
- package/src/data/lidarr-custom-formats.ts +0 -127
- package/src/data/trash-profiles.ts +0 -333
- package/src/docker/client.ts +0 -312
- package/src/docker/index.ts +0 -18
- package/src/index.ts +0 -77
- package/src/setup/actions/arr-common.ts +0 -307
- package/src/setup/actions/dashboards.ts +0 -79
- package/src/setup/actions/download-clients.ts +0 -54
- package/src/setup/actions/jellyseerr.ts +0 -331
- package/src/setup/actions/media-servers.ts +0 -68
- package/src/setup/actions/monitoring.ts +0 -120
- package/src/setup/actions/prowlarr.ts +0 -137
- package/src/setup/actions/utilities.ts +0 -490
- package/src/setup/index.ts +0 -78
- package/src/setup/types.ts +0 -144
- package/src/structure/manager.ts +0 -129
- package/src/ui/App.ts +0 -111
- package/src/ui/components/ApplicationSelector.ts +0 -275
- package/src/ui/components/CredentialsForm.ts +0 -180
- package/src/ui/components/DownloadClientForm.ts +0 -114
- package/src/ui/components/FileEditor.ts +0 -91
- package/src/ui/components/FooterHint.ts +0 -119
- package/src/ui/components/PageLayout.ts +0 -160
- package/src/ui/components/UpdateNotification.ts +0 -102
- package/src/ui/index.ts +0 -7
- package/src/ui/screens/AdvancedSettings.ts +0 -188
- package/src/ui/screens/ApiKeyViewer.ts +0 -511
- package/src/ui/screens/AppConfigurator.ts +0 -543
- package/src/ui/screens/AppManager.ts +0 -284
- package/src/ui/screens/ContainerControl.ts +0 -581
- package/src/ui/screens/LogsViewer.ts +0 -478
- package/src/ui/screens/MainMenu.ts +0 -299
- package/src/ui/screens/MonitorDashboard.ts +0 -881
- package/src/ui/screens/SecretsEditor.ts +0 -216
- package/src/ui/screens/SettingsScreen.ts +0 -633
- package/src/ui/screens/index.ts +0 -22
- package/src/ui/screens/setup/BaseAppSetupScreen.ts +0 -375
- package/src/ui/screens/setup/CloudflaredSetup.ts +0 -460
- package/src/ui/screens/setup/FullAutoSetup.ts +0 -766
- package/src/ui/screens/setup/HomepageSetup.ts +0 -165
- package/src/ui/screens/setup/JellyfinSetup.ts +0 -328
- package/src/ui/screens/setup/JellyseerrSetup.ts +0 -242
- package/src/ui/screens/setup/ProwlarrSetup.ts +0 -500
- package/src/ui/screens/setup/QBittorrentSetup.ts +0 -221
- package/src/ui/screens/setup/QuickSetup.ts +0 -1169
- package/src/ui/screens/setup/RecyclarrSetup.ts +0 -270
- package/src/ui/screens/setup/TRaSHProfileSetup.ts +0 -381
- package/src/utils/arch.ts +0 -78
- package/src/utils/browser.ts +0 -27
- package/src/utils/categories.ts +0 -61
- package/src/utils/debug.ts +0 -84
- package/src/utils/env.ts +0 -138
- package/src/utils/index.ts +0 -8
- package/src/utils/logs.ts +0 -119
- package/src/utils/migrations/1765626338_rename_env_variables.ts +0 -102
- package/src/utils/migrations/1765707135_rename_easiarr_status.ts +0 -91
- package/src/utils/migrations/1765732722_remove_cloudflare_dns_api_token.ts +0 -45
- package/src/utils/migrations/1769515650_migrate_to_xdg.ts +0 -114
- package/src/utils/migrations.ts +0 -165
- package/src/utils/password.ts +0 -42
- package/src/utils/paths.ts +0 -33
- package/src/utils/unraid.ts +0 -103
- package/src/utils/update-checker.ts +0 -210
- package/src/utils/url-utils.ts +0 -38
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Slskd Config Generator
|
|
3
|
-
* Generates slskd.yml configuration file with API keys and settings
|
|
4
|
-
* Source: https://github.com/slskd/slskd/blob/master/docs/config.md
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { randomBytes } from "crypto"
|
|
8
|
-
|
|
9
|
-
import type { EasiarrConfig } from "./schema"
|
|
10
|
-
import { readEnvSync } from "~/utils/env"
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Generate a random API key (base64, 48 bytes = ~64 chars)
|
|
14
|
-
* Equivalent to: openssl rand -base64 48
|
|
15
|
-
*/
|
|
16
|
-
export function generateSlskdApiKey(): string {
|
|
17
|
-
return randomBytes(48).toString("base64")
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Generate slskd.yml content
|
|
22
|
-
* This file should be placed in the slskd config directory (/app/slskd.yml)
|
|
23
|
-
*/
|
|
24
|
-
export function generateSlskdConfig(_config: EasiarrConfig): { yaml: string; apiKey: string } {
|
|
25
|
-
const env = readEnvSync()
|
|
26
|
-
|
|
27
|
-
// Generate or use existing API key
|
|
28
|
-
const apiKey = env.API_KEY_SLSKD || generateSlskdApiKey()
|
|
29
|
-
|
|
30
|
-
const yaml = `# Slskd Configuration
|
|
31
|
-
# Generated by Easiarr
|
|
32
|
-
# Docs: https://github.com/slskd/slskd/blob/master/docs/config.md
|
|
33
|
-
|
|
34
|
-
# Directories for downloads
|
|
35
|
-
directories:
|
|
36
|
-
incomplete: /data/slskd_downloads/incomplete
|
|
37
|
-
downloads: /data/slskd_downloads/complete
|
|
38
|
-
|
|
39
|
-
# Shares - music directory for uploading
|
|
40
|
-
shares:
|
|
41
|
-
directories:
|
|
42
|
-
- /data/media/music
|
|
43
|
-
|
|
44
|
-
# Web UI Configuration
|
|
45
|
-
web:
|
|
46
|
-
port: 5030
|
|
47
|
-
authentication:
|
|
48
|
-
disabled: false
|
|
49
|
-
api_keys:
|
|
50
|
-
# API key for Homepage widget and Soularr
|
|
51
|
-
easiarr:
|
|
52
|
-
key: ${apiKey}
|
|
53
|
-
role: readwrite
|
|
54
|
-
cidr: 0.0.0.0/0,::/0
|
|
55
|
-
|
|
56
|
-
# Soulseek Configuration
|
|
57
|
-
# Credentials are set via environment variables:
|
|
58
|
-
# - SLSKD_SLSK_USERNAME
|
|
59
|
-
# - SLSKD_SLSK_PASSWORD
|
|
60
|
-
soulseek:
|
|
61
|
-
listen_port: 50300
|
|
62
|
-
description: "slskd user via Easiarr"
|
|
63
|
-
|
|
64
|
-
# Global limits
|
|
65
|
-
global:
|
|
66
|
-
upload:
|
|
67
|
-
slots: 10
|
|
68
|
-
speed_limit: 1000
|
|
69
|
-
download:
|
|
70
|
-
slots: 100
|
|
71
|
-
speed_limit: 10000
|
|
72
|
-
|
|
73
|
-
# Logging
|
|
74
|
-
logger:
|
|
75
|
-
disk: false
|
|
76
|
-
`
|
|
77
|
-
|
|
78
|
-
return { yaml, apiKey }
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Get the path where slskd.yml should be saved
|
|
83
|
-
*/
|
|
84
|
-
export function getSlskdConfigPath(rootDir: string): string {
|
|
85
|
-
return `${rootDir}/config/slskd/slskd.yml`
|
|
86
|
-
}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Soularr Config Generator
|
|
3
|
-
* Generates config.ini for Soularr based on easiarr configuration
|
|
4
|
-
* Source: https://github.com/mrusse/soularr
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import type { EasiarrConfig } from "./schema"
|
|
8
|
-
import { readEnvSync } from "~/utils/env"
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Generate Soularr config.ini content
|
|
12
|
-
* This file should be placed in the Soularr config directory
|
|
13
|
-
*/
|
|
14
|
-
export function generateSoularrConfig(config: EasiarrConfig): string {
|
|
15
|
-
const env = readEnvSync()
|
|
16
|
-
|
|
17
|
-
const lidarrApiKey = env.API_KEY_LIDARR || "yourlidarrapikeygoeshere"
|
|
18
|
-
const slskdApiKey = env.API_KEY_SLSKD || "yourslskdapikeygoeshere"
|
|
19
|
-
|
|
20
|
-
// Find Lidarr and Slskd ports from config
|
|
21
|
-
const lidarrPort = config.apps.find((a) => a.id === "lidarr")?.port || 8686
|
|
22
|
-
const slskdPort = config.apps.find((a) => a.id === "slskd")?.port || 5030
|
|
23
|
-
|
|
24
|
-
return `[Lidarr]
|
|
25
|
-
# Get from Lidarr: Settings > General > Security
|
|
26
|
-
api_key = ${lidarrApiKey}
|
|
27
|
-
# URL Lidarr uses (internal Docker network)
|
|
28
|
-
host_url = http://lidarr:${lidarrPort}
|
|
29
|
-
# Path to slskd downloads inside the Lidarr container
|
|
30
|
-
download_dir = /data/slskd_downloads
|
|
31
|
-
# If true, Lidarr won't auto-import from Slskd (recommended: True to avoid failed_imports issues)
|
|
32
|
-
disable_sync = True
|
|
33
|
-
|
|
34
|
-
[Slskd]
|
|
35
|
-
# Create manually in Slskd web UI
|
|
36
|
-
api_key = ${slskdApiKey}
|
|
37
|
-
# URL Slskd uses (internal Docker network)
|
|
38
|
-
host_url = http://slskd:${slskdPort}
|
|
39
|
-
url_base = /
|
|
40
|
-
# Download path inside Slskd container
|
|
41
|
-
download_dir = /downloads
|
|
42
|
-
# Delete search after Soularr runs
|
|
43
|
-
delete_searches = False
|
|
44
|
-
# Max seconds to wait for downloads (prevents infinite hangs)
|
|
45
|
-
stalled_timeout = 3600
|
|
46
|
-
|
|
47
|
-
[Release Settings]
|
|
48
|
-
# Pick release with most common track count
|
|
49
|
-
use_most_common_tracknum = True
|
|
50
|
-
allow_multi_disc = True
|
|
51
|
-
# Accepted release countries
|
|
52
|
-
accepted_countries = Europe,Japan,United Kingdom,United States,[Worldwide],Australia,Canada
|
|
53
|
-
# Don't check the region of the release
|
|
54
|
-
skip_region_check = False
|
|
55
|
-
# Accepted formats
|
|
56
|
-
accepted_formats = CD,Digital Media,Vinyl
|
|
57
|
-
|
|
58
|
-
[Search Settings]
|
|
59
|
-
search_timeout = 5000
|
|
60
|
-
maximum_peer_queue = 50
|
|
61
|
-
# Minimum upload speed (bits/sec)
|
|
62
|
-
minimum_peer_upload_speed = 0
|
|
63
|
-
# Minimum match ratio between Lidarr track and Soulseek filename
|
|
64
|
-
minimum_filename_match_ratio = 0.8
|
|
65
|
-
# Preferred file types and qualities (most to least preferred)
|
|
66
|
-
allowed_filetypes = flac 24/192,flac 16/44.1,flac,mp3 320,mp3
|
|
67
|
-
ignored_users =
|
|
68
|
-
# Set to False to only search for album titles
|
|
69
|
-
search_for_tracks = True
|
|
70
|
-
# Prepend artist name when searching
|
|
71
|
-
album_prepend_artist = False
|
|
72
|
-
track_prepend_artist = True
|
|
73
|
-
# Search modes: all, incrementing_page, first_page
|
|
74
|
-
search_type = incrementing_page
|
|
75
|
-
# Albums to process per run
|
|
76
|
-
number_of_albums_to_grab = 10
|
|
77
|
-
# Unmonitor album on failure
|
|
78
|
-
remove_wanted_on_failure = False
|
|
79
|
-
# Blacklist words in album or track titles
|
|
80
|
-
title_blacklist =
|
|
81
|
-
# Lidarr search source: "missing" or "cutoff_unmet"
|
|
82
|
-
search_source = missing
|
|
83
|
-
# Enable search denylist to skip albums that repeatedly fail
|
|
84
|
-
enable_search_denylist = False
|
|
85
|
-
# Number of consecutive search failures before denylisting
|
|
86
|
-
max_search_failures = 3
|
|
87
|
-
|
|
88
|
-
[Download Settings]
|
|
89
|
-
download_filtering = True
|
|
90
|
-
use_extension_whitelist = False
|
|
91
|
-
extensions_whitelist = lrc,nfo,txt
|
|
92
|
-
|
|
93
|
-
[Logging]
|
|
94
|
-
level = INFO
|
|
95
|
-
format = [%(levelname)s|%(module)s|L%(lineno)d] %(asctime)s: %(message)s
|
|
96
|
-
datefmt = %Y-%m-%dT%H:%M:%S%z
|
|
97
|
-
`
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Get the path where Soularr config should be saved
|
|
102
|
-
*/
|
|
103
|
-
export function getSoularrConfigPath(rootDir: string): string {
|
|
104
|
-
return `${rootDir}/config/soularr/config.ini`
|
|
105
|
-
}
|
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TRaSH Guides Quality Definitions (File Size Limits)
|
|
3
|
-
* Min/Preferred/Max in MB/min
|
|
4
|
-
* Source: ../Guides/docs/json/radarr/quality-size/movie.json
|
|
5
|
-
* Source: ../Guides/docs/json/sonarr/quality-size/series.json
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
export interface TrashQualityDefinition {
|
|
9
|
-
quality: string
|
|
10
|
-
min: number
|
|
11
|
-
preferred: number
|
|
12
|
-
max: number
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export const TRASH_RADARR_QUALITY_DEFINITIONS: TrashQualityDefinition[] = [
|
|
16
|
-
{
|
|
17
|
-
quality: "HDTV-720p",
|
|
18
|
-
min: 17.1,
|
|
19
|
-
preferred: 1999,
|
|
20
|
-
max: 2000,
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
quality: "WEBDL-720p",
|
|
24
|
-
min: 12.5,
|
|
25
|
-
preferred: 1999,
|
|
26
|
-
max: 2000,
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
quality: "WEBRip-720p",
|
|
30
|
-
min: 12.5,
|
|
31
|
-
preferred: 1999,
|
|
32
|
-
max: 2000,
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
quality: "Bluray-720p",
|
|
36
|
-
min: 25.7,
|
|
37
|
-
preferred: 1999,
|
|
38
|
-
max: 2000,
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
quality: "HDTV-1080p",
|
|
42
|
-
min: 33.8,
|
|
43
|
-
preferred: 1999,
|
|
44
|
-
max: 2000,
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
quality: "WEBDL-1080p",
|
|
48
|
-
min: 12.5,
|
|
49
|
-
preferred: 1999,
|
|
50
|
-
max: 2000,
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
quality: "WEBRip-1080p",
|
|
54
|
-
min: 12.5,
|
|
55
|
-
preferred: 1999,
|
|
56
|
-
max: 2000,
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
quality: "Bluray-1080p",
|
|
60
|
-
min: 50.8,
|
|
61
|
-
preferred: 1999,
|
|
62
|
-
max: 2000,
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
quality: "Remux-1080p",
|
|
66
|
-
min: 102,
|
|
67
|
-
preferred: 1999,
|
|
68
|
-
max: 2000,
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
quality: "HDTV-2160p",
|
|
72
|
-
min: 85,
|
|
73
|
-
preferred: 1999,
|
|
74
|
-
max: 2000,
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
quality: "WEBDL-2160p",
|
|
78
|
-
min: 34.5,
|
|
79
|
-
preferred: 1999,
|
|
80
|
-
max: 2000,
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
quality: "WEBRip-2160p",
|
|
84
|
-
min: 34.5,
|
|
85
|
-
preferred: 1999,
|
|
86
|
-
max: 2000,
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
quality: "Bluray-2160p",
|
|
90
|
-
min: 102,
|
|
91
|
-
preferred: 1999,
|
|
92
|
-
max: 2000,
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
quality: "Remux-2160p",
|
|
96
|
-
min: 187.4,
|
|
97
|
-
preferred: 1999,
|
|
98
|
-
max: 2000,
|
|
99
|
-
},
|
|
100
|
-
]
|
|
101
|
-
|
|
102
|
-
export const TRASH_SONARR_QUALITY_DEFINITIONS: TrashQualityDefinition[] = [
|
|
103
|
-
{
|
|
104
|
-
quality: "HDTV-720p",
|
|
105
|
-
min: 10,
|
|
106
|
-
preferred: 995,
|
|
107
|
-
max: 1000,
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
quality: "HDTV-1080p",
|
|
111
|
-
min: 15,
|
|
112
|
-
preferred: 995,
|
|
113
|
-
max: 1000,
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
quality: "WEBRip-720p",
|
|
117
|
-
min: 10,
|
|
118
|
-
preferred: 995,
|
|
119
|
-
max: 1000,
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
quality: "WEBDL-720p",
|
|
123
|
-
min: 10,
|
|
124
|
-
preferred: 995,
|
|
125
|
-
max: 1000,
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
quality: "Bluray-720p",
|
|
129
|
-
min: 17.1,
|
|
130
|
-
preferred: 995,
|
|
131
|
-
max: 1000,
|
|
132
|
-
},
|
|
133
|
-
{
|
|
134
|
-
quality: "WEBRip-1080p",
|
|
135
|
-
min: 15,
|
|
136
|
-
preferred: 995,
|
|
137
|
-
max: 1000,
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
quality: "WEBDL-1080p",
|
|
141
|
-
min: 15,
|
|
142
|
-
preferred: 995,
|
|
143
|
-
max: 1000,
|
|
144
|
-
},
|
|
145
|
-
{
|
|
146
|
-
quality: "Bluray-1080p",
|
|
147
|
-
min: 50.4,
|
|
148
|
-
preferred: 995,
|
|
149
|
-
max: 1000,
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
quality: "Bluray-1080p Remux",
|
|
153
|
-
min: 69.1,
|
|
154
|
-
preferred: 995,
|
|
155
|
-
max: 1000,
|
|
156
|
-
},
|
|
157
|
-
{
|
|
158
|
-
quality: "HDTV-2160p",
|
|
159
|
-
min: 25,
|
|
160
|
-
preferred: 995,
|
|
161
|
-
max: 1000,
|
|
162
|
-
},
|
|
163
|
-
{
|
|
164
|
-
quality: "WEBRip-2160p",
|
|
165
|
-
min: 25,
|
|
166
|
-
preferred: 995,
|
|
167
|
-
max: 1000,
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
quality: "WEBDL-2160p",
|
|
171
|
-
min: 25,
|
|
172
|
-
preferred: 995,
|
|
173
|
-
max: 1000,
|
|
174
|
-
},
|
|
175
|
-
{
|
|
176
|
-
quality: "Bluray-2160p",
|
|
177
|
-
min: 94.6,
|
|
178
|
-
preferred: 995,
|
|
179
|
-
max: 1000,
|
|
180
|
-
},
|
|
181
|
-
{
|
|
182
|
-
quality: "Bluray-2160p Remux",
|
|
183
|
-
min: 187.4,
|
|
184
|
-
preferred: 995,
|
|
185
|
-
max: 1000,
|
|
186
|
-
},
|
|
187
|
-
]
|
|
188
|
-
|
|
189
|
-
/**
|
|
190
|
-
* Lidarr Quality Definitions (Davo's Community Guide)
|
|
191
|
-
* Source: https://wiki.servarr.com/lidarr/community-guide
|
|
192
|
-
* Filters out single track rips for entire albums (FLAC/CUE files)
|
|
193
|
-
*/
|
|
194
|
-
export const TRASH_LIDARR_QUALITY_DEFINITIONS: TrashQualityDefinition[] = [
|
|
195
|
-
{
|
|
196
|
-
quality: "FLAC",
|
|
197
|
-
min: 0,
|
|
198
|
-
preferred: 895,
|
|
199
|
-
max: 1400,
|
|
200
|
-
},
|
|
201
|
-
{
|
|
202
|
-
quality: "FLAC 24bit",
|
|
203
|
-
min: 0,
|
|
204
|
-
preferred: 895,
|
|
205
|
-
max: 1495,
|
|
206
|
-
},
|
|
207
|
-
{
|
|
208
|
-
quality: "MP3-320",
|
|
209
|
-
min: 0,
|
|
210
|
-
preferred: 0,
|
|
211
|
-
max: 0, // No size limit for MP3
|
|
212
|
-
},
|
|
213
|
-
]
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Lidarr Custom Formats (Davo's Community Guide)
|
|
3
|
-
* Source: https://wiki.servarr.com/lidarr/community-guide
|
|
4
|
-
*
|
|
5
|
-
* Unlike Radarr/Sonarr, these are NOT from TRaSH Guides.
|
|
6
|
-
* Lidarr custom formats use different implementation types.
|
|
7
|
-
* Uses the same CustomFormat interface from custom-format-api.ts for compatibility.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import type { CustomFormat } from "~/api/custom-format-api"
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Preferred Groups - Release groups that are consistently high quality
|
|
14
|
-
*/
|
|
15
|
-
export const CF_PREFERRED_GROUPS: Omit<CustomFormat, "id"> = {
|
|
16
|
-
name: "Preferred Groups",
|
|
17
|
-
includeCustomFormatWhenRenaming: false,
|
|
18
|
-
specifications: [
|
|
19
|
-
{
|
|
20
|
-
name: "DeVOiD",
|
|
21
|
-
implementation: "ReleaseGroupSpecification",
|
|
22
|
-
negate: false,
|
|
23
|
-
required: false,
|
|
24
|
-
fields: [{ name: "value", value: "\\bDeVOiD\\b" }],
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
name: "PERFECT",
|
|
28
|
-
implementation: "ReleaseGroupSpecification",
|
|
29
|
-
negate: false,
|
|
30
|
-
required: false,
|
|
31
|
-
fields: [{ name: "value", value: "\\bPERFECT\\b" }],
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
name: "ENRiCH",
|
|
35
|
-
implementation: "ReleaseGroupSpecification",
|
|
36
|
-
negate: false,
|
|
37
|
-
required: false,
|
|
38
|
-
fields: [{ name: "value", value: "\\bENRiCH\\b" }],
|
|
39
|
-
},
|
|
40
|
-
],
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* CD - Tag releases that are from CD source
|
|
45
|
-
*/
|
|
46
|
-
export const CF_CD: Omit<CustomFormat, "id"> = {
|
|
47
|
-
name: "CD",
|
|
48
|
-
includeCustomFormatWhenRenaming: false,
|
|
49
|
-
specifications: [
|
|
50
|
-
{
|
|
51
|
-
name: "CD",
|
|
52
|
-
implementation: "ReleaseTitleSpecification",
|
|
53
|
-
negate: false,
|
|
54
|
-
required: false,
|
|
55
|
-
fields: [{ name: "value", value: "\\bCD\\b" }],
|
|
56
|
-
},
|
|
57
|
-
],
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* WEB - Tag releases that are from WEB source
|
|
62
|
-
*/
|
|
63
|
-
export const CF_WEB: Omit<CustomFormat, "id"> = {
|
|
64
|
-
name: "WEB",
|
|
65
|
-
includeCustomFormatWhenRenaming: false,
|
|
66
|
-
specifications: [
|
|
67
|
-
{
|
|
68
|
-
name: "WEB",
|
|
69
|
-
implementation: "ReleaseTitleSpecification",
|
|
70
|
-
negate: false,
|
|
71
|
-
required: false,
|
|
72
|
-
fields: [{ name: "value", value: "\\bWEB\\b" }],
|
|
73
|
-
},
|
|
74
|
-
],
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Lossless - Tag releases that are lossless (flac/flac24)
|
|
79
|
-
*/
|
|
80
|
-
export const CF_LOSSLESS: Omit<CustomFormat, "id"> = {
|
|
81
|
-
name: "Lossless",
|
|
82
|
-
includeCustomFormatWhenRenaming: false,
|
|
83
|
-
specifications: [
|
|
84
|
-
{
|
|
85
|
-
name: "Flac",
|
|
86
|
-
implementation: "ReleaseTitleSpecification",
|
|
87
|
-
negate: false,
|
|
88
|
-
required: false,
|
|
89
|
-
fields: [{ name: "value", value: "\\blossless\\b" }],
|
|
90
|
-
},
|
|
91
|
-
],
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* Vinyl - Tag releases that are from Vinyl source
|
|
96
|
-
*/
|
|
97
|
-
export const CF_VINYL: Omit<CustomFormat, "id"> = {
|
|
98
|
-
name: "Vinyl",
|
|
99
|
-
includeCustomFormatWhenRenaming: false,
|
|
100
|
-
specifications: [
|
|
101
|
-
{
|
|
102
|
-
name: "Vinyl",
|
|
103
|
-
implementation: "ReleaseTitleSpecification",
|
|
104
|
-
negate: false,
|
|
105
|
-
required: false,
|
|
106
|
-
fields: [{ name: "value", value: "\\bVinyl\\b" }],
|
|
107
|
-
},
|
|
108
|
-
],
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* All Lidarr custom formats from Davo's guide
|
|
113
|
-
*/
|
|
114
|
-
export const LIDARR_CUSTOM_FORMATS: Omit<CustomFormat, "id">[] = [
|
|
115
|
-
CF_PREFERRED_GROUPS,
|
|
116
|
-
CF_CD,
|
|
117
|
-
CF_WEB,
|
|
118
|
-
CF_LOSSLESS,
|
|
119
|
-
CF_VINYL,
|
|
120
|
-
]
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Get all Lidarr custom format names
|
|
124
|
-
*/
|
|
125
|
-
export function getLidarrCFNames(): string[] {
|
|
126
|
-
return LIDARR_CUSTOM_FORMATS.map((cf) => cf.name)
|
|
127
|
-
}
|