mcp-arr-server 1.0.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/LICENSE +21 -0
- package/README.md +244 -0
- package/dist/arr-client.d.ts +407 -0
- package/dist/arr-client.d.ts.map +1 -0
- package/dist/arr-client.js +291 -0
- package/dist/arr-client.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +699 -0
- package/dist/index.js.map +1 -0
- package/package.json +49 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Jim Christian
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
# MCP *arr Server
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/mcp-arr-server)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
[](https://modelcontextprotocol.io)
|
|
6
|
+
|
|
7
|
+
MCP server for the [*arr media management suite](https://wiki.servarr.com/) - Sonarr, Radarr, Lidarr, Readarr, and Prowlarr.
|
|
8
|
+
|
|
9
|
+
## Why Use This?
|
|
10
|
+
|
|
11
|
+
- **Unified media management** - Control all your *arr applications from one interface
|
|
12
|
+
- **Natural language queries** - Ask about your library in plain English
|
|
13
|
+
- **Cross-service search** - Find content across TV, movies, music, and books simultaneously
|
|
14
|
+
- **Download monitoring** - Check queue status and progress across all services
|
|
15
|
+
- **Calendar integration** - See upcoming releases for all media types
|
|
16
|
+
- **Flexible configuration** - Enable only the services you use
|
|
17
|
+
|
|
18
|
+
## Features
|
|
19
|
+
|
|
20
|
+
| Category | Capabilities |
|
|
21
|
+
|----------|-------------|
|
|
22
|
+
| **Sonarr (TV)** | List series, search shows, check queue, view calendar |
|
|
23
|
+
| **Radarr (Movies)** | List movies, search films, check queue, view releases |
|
|
24
|
+
| **Lidarr (Music)** | List artists, search musicians, check queue |
|
|
25
|
+
| **Readarr (Books)** | List authors, search writers, check queue |
|
|
26
|
+
| **Prowlarr (Indexers)** | List indexers, search across all trackers |
|
|
27
|
+
| **Cross-Service** | Status check, unified search across all configured services |
|
|
28
|
+
|
|
29
|
+
## Prerequisites
|
|
30
|
+
|
|
31
|
+
- Node.js 18+
|
|
32
|
+
- At least one *arr application running with API access:
|
|
33
|
+
- [Sonarr](https://sonarr.tv/) for TV series
|
|
34
|
+
- [Radarr](https://radarr.video/) for movies
|
|
35
|
+
- [Lidarr](https://lidarr.audio/) for music
|
|
36
|
+
- [Readarr](https://readarr.com/) for books
|
|
37
|
+
- [Prowlarr](https://prowlarr.com/) for indexer management
|
|
38
|
+
|
|
39
|
+
## Installation
|
|
40
|
+
|
|
41
|
+
### Using npm (Recommended)
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npx mcp-arr-server
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### From Source
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
git clone https://github.com/aplaceforallmystuff/mcp-arr.git
|
|
51
|
+
cd mcp-arr
|
|
52
|
+
npm install
|
|
53
|
+
npm run build
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Configuration
|
|
57
|
+
|
|
58
|
+
### Getting API Keys
|
|
59
|
+
|
|
60
|
+
Each *arr application has an API key in Settings > General > Security:
|
|
61
|
+
|
|
62
|
+
1. Open your *arr application's web interface
|
|
63
|
+
2. Go to **Settings** > **General**
|
|
64
|
+
3. Find the **API Key** under the Security section
|
|
65
|
+
4. Copy the API key for use in configuration
|
|
66
|
+
|
|
67
|
+
### For Claude Desktop
|
|
68
|
+
|
|
69
|
+
Add to your Claude Desktop config file:
|
|
70
|
+
|
|
71
|
+
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
72
|
+
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
73
|
+
|
|
74
|
+
```json
|
|
75
|
+
{
|
|
76
|
+
"mcpServers": {
|
|
77
|
+
"arr": {
|
|
78
|
+
"command": "npx",
|
|
79
|
+
"args": ["-y", "mcp-arr-server"],
|
|
80
|
+
"env": {
|
|
81
|
+
"SONARR_URL": "http://localhost:8989",
|
|
82
|
+
"SONARR_API_KEY": "your-sonarr-api-key",
|
|
83
|
+
"RADARR_URL": "http://localhost:7878",
|
|
84
|
+
"RADARR_API_KEY": "your-radarr-api-key",
|
|
85
|
+
"LIDARR_URL": "http://localhost:8686",
|
|
86
|
+
"LIDARR_API_KEY": "your-lidarr-api-key",
|
|
87
|
+
"READARR_URL": "http://localhost:8787",
|
|
88
|
+
"READARR_API_KEY": "your-readarr-api-key",
|
|
89
|
+
"PROWLARR_URL": "http://localhost:9696",
|
|
90
|
+
"PROWLARR_API_KEY": "your-prowlarr-api-key"
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### For Claude Code
|
|
98
|
+
|
|
99
|
+
Add to `~/.claude.json`:
|
|
100
|
+
|
|
101
|
+
```json
|
|
102
|
+
{
|
|
103
|
+
"mcpServers": {
|
|
104
|
+
"arr": {
|
|
105
|
+
"command": "npx",
|
|
106
|
+
"args": ["-y", "mcp-arr-server"],
|
|
107
|
+
"env": {
|
|
108
|
+
"SONARR_URL": "http://localhost:8989",
|
|
109
|
+
"SONARR_API_KEY": "your-sonarr-api-key",
|
|
110
|
+
"RADARR_URL": "http://localhost:7878",
|
|
111
|
+
"RADARR_API_KEY": "your-radarr-api-key"
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**Note**: Only configure the services you have running. The server automatically detects which services are available based on the environment variables you provide.
|
|
119
|
+
|
|
120
|
+
## Usage Examples
|
|
121
|
+
|
|
122
|
+
### Library Management
|
|
123
|
+
- "Show me all my TV series"
|
|
124
|
+
- "What movies do I have in Radarr?"
|
|
125
|
+
- "List all artists in my music library"
|
|
126
|
+
- "How many books do I have by Stephen King?"
|
|
127
|
+
|
|
128
|
+
### Searching for Content
|
|
129
|
+
- "Search for Breaking Bad on Sonarr"
|
|
130
|
+
- "Find the movie Inception"
|
|
131
|
+
- "Search for Taylor Swift albums"
|
|
132
|
+
- "Look up books by Brandon Sanderson"
|
|
133
|
+
|
|
134
|
+
### Download Queue
|
|
135
|
+
- "What's downloading right now?"
|
|
136
|
+
- "Check the Sonarr queue"
|
|
137
|
+
- "Show Radarr download progress"
|
|
138
|
+
|
|
139
|
+
### Upcoming Releases
|
|
140
|
+
- "What TV episodes are coming this week?"
|
|
141
|
+
- "Show upcoming movie releases"
|
|
142
|
+
|
|
143
|
+
### Cross-Service
|
|
144
|
+
- "Check status of all my *arr services"
|
|
145
|
+
- "Search for 'The Office' across all services"
|
|
146
|
+
|
|
147
|
+
## Available Tools
|
|
148
|
+
|
|
149
|
+
### General Tools
|
|
150
|
+
|
|
151
|
+
| Tool | Description |
|
|
152
|
+
|------|-------------|
|
|
153
|
+
| `arr_status` | Get connection status for all configured *arr services |
|
|
154
|
+
| `arr_search_all` | Search across all configured services simultaneously |
|
|
155
|
+
|
|
156
|
+
### Sonarr Tools (TV)
|
|
157
|
+
|
|
158
|
+
| Tool | Description |
|
|
159
|
+
|------|-------------|
|
|
160
|
+
| `sonarr_get_series` | List all TV series in your library |
|
|
161
|
+
| `sonarr_search` | Search for TV series to add |
|
|
162
|
+
| `sonarr_get_queue` | View current download queue |
|
|
163
|
+
| `sonarr_get_calendar` | See upcoming episodes |
|
|
164
|
+
|
|
165
|
+
### Radarr Tools (Movies)
|
|
166
|
+
|
|
167
|
+
| Tool | Description |
|
|
168
|
+
|------|-------------|
|
|
169
|
+
| `radarr_get_movies` | List all movies in your library |
|
|
170
|
+
| `radarr_search` | Search for movies to add |
|
|
171
|
+
| `radarr_get_queue` | View current download queue |
|
|
172
|
+
| `radarr_get_calendar` | See upcoming releases |
|
|
173
|
+
|
|
174
|
+
### Lidarr Tools (Music)
|
|
175
|
+
|
|
176
|
+
| Tool | Description |
|
|
177
|
+
|------|-------------|
|
|
178
|
+
| `lidarr_get_artists` | List all artists in your library |
|
|
179
|
+
| `lidarr_search` | Search for artists to add |
|
|
180
|
+
| `lidarr_get_queue` | View current download queue |
|
|
181
|
+
|
|
182
|
+
### Readarr Tools (Books)
|
|
183
|
+
|
|
184
|
+
| Tool | Description |
|
|
185
|
+
|------|-------------|
|
|
186
|
+
| `readarr_get_authors` | List all authors in your library |
|
|
187
|
+
| `readarr_search` | Search for authors to add |
|
|
188
|
+
| `readarr_get_queue` | View current download queue |
|
|
189
|
+
|
|
190
|
+
### Prowlarr Tools (Indexers)
|
|
191
|
+
|
|
192
|
+
| Tool | Description |
|
|
193
|
+
|------|-------------|
|
|
194
|
+
| `prowlarr_get_indexers` | List all configured indexers |
|
|
195
|
+
| `prowlarr_search` | Search across all indexers |
|
|
196
|
+
|
|
197
|
+
## Development
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
# Watch mode for development
|
|
201
|
+
npm run watch
|
|
202
|
+
|
|
203
|
+
# Build TypeScript
|
|
204
|
+
npm run build
|
|
205
|
+
|
|
206
|
+
# Run locally
|
|
207
|
+
SONARR_URL="http://localhost:8989" SONARR_API_KEY="your-key" node dist/index.js
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## Troubleshooting
|
|
211
|
+
|
|
212
|
+
### "No *arr services configured"
|
|
213
|
+
Ensure you have set at least one pair of URL and API_KEY environment variables:
|
|
214
|
+
```bash
|
|
215
|
+
SONARR_URL="http://localhost:8989"
|
|
216
|
+
SONARR_API_KEY="your-api-key"
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### "API error: 401 Unauthorized"
|
|
220
|
+
The API key is incorrect. Verify it in your *arr application under Settings > General > Security.
|
|
221
|
+
|
|
222
|
+
### "fetch failed" or "ECONNREFUSED"
|
|
223
|
+
The *arr application is not running or the URL is incorrect. Verify:
|
|
224
|
+
- The application is running
|
|
225
|
+
- The URL and port are correct
|
|
226
|
+
- There's no firewall blocking the connection
|
|
227
|
+
|
|
228
|
+
### "Sonarr/Radarr/etc not configured"
|
|
229
|
+
You tried to use a tool for a service that isn't configured. Add the corresponding URL and API_KEY environment variables.
|
|
230
|
+
|
|
231
|
+
## Contributing
|
|
232
|
+
|
|
233
|
+
Contributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
234
|
+
|
|
235
|
+
## License
|
|
236
|
+
|
|
237
|
+
MIT - see [LICENSE](LICENSE) for details.
|
|
238
|
+
|
|
239
|
+
## Links
|
|
240
|
+
|
|
241
|
+
- [Servarr Wiki](https://wiki.servarr.com/) - Documentation for all *arr applications
|
|
242
|
+
- [Sonarr API Docs](https://sonarr.tv/docs/api/)
|
|
243
|
+
- [Model Context Protocol](https://modelcontextprotocol.io)
|
|
244
|
+
- [GitHub Repository](https://github.com/aplaceforallmystuff/mcp-arr)
|
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* *arr Suite API Client
|
|
3
|
+
*
|
|
4
|
+
* All *arr applications (Sonarr, Radarr, Lidarr, Readarr, Prowlarr) use
|
|
5
|
+
* the same REST API pattern with X-Api-Key header authentication.
|
|
6
|
+
*/
|
|
7
|
+
export type ArrService = 'sonarr' | 'radarr' | 'lidarr' | 'readarr' | 'prowlarr';
|
|
8
|
+
export interface ArrConfig {
|
|
9
|
+
url: string;
|
|
10
|
+
apiKey: string;
|
|
11
|
+
}
|
|
12
|
+
export interface SystemStatus {
|
|
13
|
+
appName: string;
|
|
14
|
+
version: string;
|
|
15
|
+
buildTime: string;
|
|
16
|
+
isDebug: boolean;
|
|
17
|
+
isProduction: boolean;
|
|
18
|
+
isAdmin: boolean;
|
|
19
|
+
isUserInteractive: boolean;
|
|
20
|
+
startupPath: string;
|
|
21
|
+
appData: string;
|
|
22
|
+
osName: string;
|
|
23
|
+
isDocker: boolean;
|
|
24
|
+
isLinux: boolean;
|
|
25
|
+
isOsx: boolean;
|
|
26
|
+
isWindows: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface QueueItem {
|
|
29
|
+
id: number;
|
|
30
|
+
title: string;
|
|
31
|
+
status: string;
|
|
32
|
+
trackedDownloadStatus: string;
|
|
33
|
+
trackedDownloadState: string;
|
|
34
|
+
statusMessages: Array<{
|
|
35
|
+
title: string;
|
|
36
|
+
messages: string[];
|
|
37
|
+
}>;
|
|
38
|
+
downloadId: string;
|
|
39
|
+
protocol: string;
|
|
40
|
+
downloadClient: string;
|
|
41
|
+
outputPath: string;
|
|
42
|
+
sizeleft: number;
|
|
43
|
+
size: number;
|
|
44
|
+
timeleft: string;
|
|
45
|
+
estimatedCompletionTime: string;
|
|
46
|
+
}
|
|
47
|
+
export interface Series {
|
|
48
|
+
id: number;
|
|
49
|
+
title: string;
|
|
50
|
+
sortTitle: string;
|
|
51
|
+
status: string;
|
|
52
|
+
overview: string;
|
|
53
|
+
network: string;
|
|
54
|
+
airTime: string;
|
|
55
|
+
images: Array<{
|
|
56
|
+
coverType: string;
|
|
57
|
+
url: string;
|
|
58
|
+
}>;
|
|
59
|
+
seasons: Array<{
|
|
60
|
+
seasonNumber: number;
|
|
61
|
+
monitored: boolean;
|
|
62
|
+
}>;
|
|
63
|
+
year: number;
|
|
64
|
+
path: string;
|
|
65
|
+
qualityProfileId: number;
|
|
66
|
+
seasonFolder: boolean;
|
|
67
|
+
monitored: boolean;
|
|
68
|
+
runtime: number;
|
|
69
|
+
tvdbId: number;
|
|
70
|
+
tvRageId: number;
|
|
71
|
+
tvMazeId: number;
|
|
72
|
+
firstAired: string;
|
|
73
|
+
seriesType: string;
|
|
74
|
+
cleanTitle: string;
|
|
75
|
+
imdbId: string;
|
|
76
|
+
titleSlug: string;
|
|
77
|
+
genres: string[];
|
|
78
|
+
tags: number[];
|
|
79
|
+
added: string;
|
|
80
|
+
ratings: {
|
|
81
|
+
votes: number;
|
|
82
|
+
value: number;
|
|
83
|
+
};
|
|
84
|
+
statistics: {
|
|
85
|
+
seasonCount: number;
|
|
86
|
+
episodeFileCount: number;
|
|
87
|
+
episodeCount: number;
|
|
88
|
+
totalEpisodeCount: number;
|
|
89
|
+
sizeOnDisk: number;
|
|
90
|
+
percentOfEpisodes: number;
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
export interface Movie {
|
|
94
|
+
id: number;
|
|
95
|
+
title: string;
|
|
96
|
+
sortTitle: string;
|
|
97
|
+
sizeOnDisk: number;
|
|
98
|
+
status: string;
|
|
99
|
+
overview: string;
|
|
100
|
+
inCinemas: string;
|
|
101
|
+
physicalRelease: string;
|
|
102
|
+
digitalRelease: string;
|
|
103
|
+
images: Array<{
|
|
104
|
+
coverType: string;
|
|
105
|
+
url: string;
|
|
106
|
+
}>;
|
|
107
|
+
website: string;
|
|
108
|
+
year: number;
|
|
109
|
+
hasFile: boolean;
|
|
110
|
+
youTubeTrailerId: string;
|
|
111
|
+
studio: string;
|
|
112
|
+
path: string;
|
|
113
|
+
qualityProfileId: number;
|
|
114
|
+
monitored: boolean;
|
|
115
|
+
minimumAvailability: string;
|
|
116
|
+
isAvailable: boolean;
|
|
117
|
+
folderName: string;
|
|
118
|
+
runtime: number;
|
|
119
|
+
cleanTitle: string;
|
|
120
|
+
imdbId: string;
|
|
121
|
+
tmdbId: number;
|
|
122
|
+
titleSlug: string;
|
|
123
|
+
genres: string[];
|
|
124
|
+
tags: number[];
|
|
125
|
+
added: string;
|
|
126
|
+
ratings: {
|
|
127
|
+
votes: number;
|
|
128
|
+
value: number;
|
|
129
|
+
};
|
|
130
|
+
movieFile?: {
|
|
131
|
+
id: number;
|
|
132
|
+
relativePath: string;
|
|
133
|
+
path: string;
|
|
134
|
+
size: number;
|
|
135
|
+
dateAdded: string;
|
|
136
|
+
quality: {
|
|
137
|
+
quality: {
|
|
138
|
+
id: number;
|
|
139
|
+
name: string;
|
|
140
|
+
};
|
|
141
|
+
};
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
export interface Artist {
|
|
145
|
+
id: number;
|
|
146
|
+
artistName: string;
|
|
147
|
+
sortName: string;
|
|
148
|
+
status: string;
|
|
149
|
+
overview: string;
|
|
150
|
+
artistType: string;
|
|
151
|
+
disambiguation: string;
|
|
152
|
+
links: Array<{
|
|
153
|
+
url: string;
|
|
154
|
+
name: string;
|
|
155
|
+
}>;
|
|
156
|
+
images: Array<{
|
|
157
|
+
coverType: string;
|
|
158
|
+
url: string;
|
|
159
|
+
}>;
|
|
160
|
+
path: string;
|
|
161
|
+
qualityProfileId: number;
|
|
162
|
+
metadataProfileId: number;
|
|
163
|
+
monitored: boolean;
|
|
164
|
+
monitorNewItems: string;
|
|
165
|
+
genres: string[];
|
|
166
|
+
cleanName: string;
|
|
167
|
+
foreignArtistId: string;
|
|
168
|
+
tags: number[];
|
|
169
|
+
added: string;
|
|
170
|
+
ratings: {
|
|
171
|
+
votes: number;
|
|
172
|
+
value: number;
|
|
173
|
+
};
|
|
174
|
+
statistics: {
|
|
175
|
+
albumCount: number;
|
|
176
|
+
trackFileCount: number;
|
|
177
|
+
trackCount: number;
|
|
178
|
+
totalTrackCount: number;
|
|
179
|
+
sizeOnDisk: number;
|
|
180
|
+
percentOfTracks: number;
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
export interface Author {
|
|
184
|
+
id: number;
|
|
185
|
+
authorName: string;
|
|
186
|
+
sortName: string;
|
|
187
|
+
status: string;
|
|
188
|
+
overview: string;
|
|
189
|
+
links: Array<{
|
|
190
|
+
url: string;
|
|
191
|
+
name: string;
|
|
192
|
+
}>;
|
|
193
|
+
images: Array<{
|
|
194
|
+
coverType: string;
|
|
195
|
+
url: string;
|
|
196
|
+
}>;
|
|
197
|
+
path: string;
|
|
198
|
+
qualityProfileId: number;
|
|
199
|
+
metadataProfileId: number;
|
|
200
|
+
monitored: boolean;
|
|
201
|
+
monitorNewItems: string;
|
|
202
|
+
genres: string[];
|
|
203
|
+
cleanName: string;
|
|
204
|
+
foreignAuthorId: string;
|
|
205
|
+
tags: number[];
|
|
206
|
+
added: string;
|
|
207
|
+
ratings: {
|
|
208
|
+
votes: number;
|
|
209
|
+
value: number;
|
|
210
|
+
popularity: number;
|
|
211
|
+
};
|
|
212
|
+
statistics: {
|
|
213
|
+
bookFileCount: number;
|
|
214
|
+
bookCount: number;
|
|
215
|
+
totalBookCount: number;
|
|
216
|
+
sizeOnDisk: number;
|
|
217
|
+
percentOfBooks: number;
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
export interface Indexer {
|
|
221
|
+
id: number;
|
|
222
|
+
name: string;
|
|
223
|
+
enableRss: boolean;
|
|
224
|
+
enableAutomaticSearch: boolean;
|
|
225
|
+
enableInteractiveSearch: boolean;
|
|
226
|
+
protocol: string;
|
|
227
|
+
priority: number;
|
|
228
|
+
added: string;
|
|
229
|
+
}
|
|
230
|
+
export interface SearchResult {
|
|
231
|
+
title: string;
|
|
232
|
+
sortTitle: string;
|
|
233
|
+
status: string;
|
|
234
|
+
overview: string;
|
|
235
|
+
year: number;
|
|
236
|
+
images: Array<{
|
|
237
|
+
coverType: string;
|
|
238
|
+
url: string;
|
|
239
|
+
}>;
|
|
240
|
+
remotePoster?: string;
|
|
241
|
+
tvdbId?: number;
|
|
242
|
+
tmdbId?: number;
|
|
243
|
+
imdbId?: string;
|
|
244
|
+
foreignArtistId?: string;
|
|
245
|
+
foreignAuthorId?: string;
|
|
246
|
+
}
|
|
247
|
+
export declare class ArrClient {
|
|
248
|
+
private config;
|
|
249
|
+
private serviceName;
|
|
250
|
+
constructor(serviceName: ArrService, config: ArrConfig);
|
|
251
|
+
/**
|
|
252
|
+
* Make an API request
|
|
253
|
+
*/
|
|
254
|
+
private request;
|
|
255
|
+
/**
|
|
256
|
+
* Get system status
|
|
257
|
+
*/
|
|
258
|
+
getStatus(): Promise<SystemStatus>;
|
|
259
|
+
/**
|
|
260
|
+
* Get download queue
|
|
261
|
+
*/
|
|
262
|
+
getQueue(): Promise<{
|
|
263
|
+
records: QueueItem[];
|
|
264
|
+
totalRecords: number;
|
|
265
|
+
}>;
|
|
266
|
+
/**
|
|
267
|
+
* Get calendar items (upcoming releases)
|
|
268
|
+
*/
|
|
269
|
+
getCalendar(start?: string, end?: string): Promise<unknown[]>;
|
|
270
|
+
/**
|
|
271
|
+
* Get all root folders
|
|
272
|
+
*/
|
|
273
|
+
getRootFolders(): Promise<Array<{
|
|
274
|
+
id: number;
|
|
275
|
+
path: string;
|
|
276
|
+
freeSpace: number;
|
|
277
|
+
}>>;
|
|
278
|
+
/**
|
|
279
|
+
* Get quality profiles
|
|
280
|
+
*/
|
|
281
|
+
getQualityProfiles(): Promise<Array<{
|
|
282
|
+
id: number;
|
|
283
|
+
name: string;
|
|
284
|
+
}>>;
|
|
285
|
+
/**
|
|
286
|
+
* Test connection
|
|
287
|
+
*/
|
|
288
|
+
testConnection(): Promise<boolean>;
|
|
289
|
+
}
|
|
290
|
+
export declare class SonarrClient extends ArrClient {
|
|
291
|
+
constructor(config: ArrConfig);
|
|
292
|
+
/**
|
|
293
|
+
* Get all series
|
|
294
|
+
*/
|
|
295
|
+
getSeries(): Promise<Series[]>;
|
|
296
|
+
/**
|
|
297
|
+
* Get a specific series
|
|
298
|
+
*/
|
|
299
|
+
getSeriesById(id: number): Promise<Series>;
|
|
300
|
+
/**
|
|
301
|
+
* Search for series
|
|
302
|
+
*/
|
|
303
|
+
searchSeries(term: string): Promise<SearchResult[]>;
|
|
304
|
+
/**
|
|
305
|
+
* Add a series
|
|
306
|
+
*/
|
|
307
|
+
addSeries(series: Partial<Series> & {
|
|
308
|
+
tvdbId: number;
|
|
309
|
+
rootFolderPath: string;
|
|
310
|
+
qualityProfileId: number;
|
|
311
|
+
}): Promise<Series>;
|
|
312
|
+
/**
|
|
313
|
+
* Trigger a search for missing episodes
|
|
314
|
+
*/
|
|
315
|
+
searchMissing(seriesId: number): Promise<void>;
|
|
316
|
+
}
|
|
317
|
+
export declare class RadarrClient extends ArrClient {
|
|
318
|
+
constructor(config: ArrConfig);
|
|
319
|
+
/**
|
|
320
|
+
* Get all movies
|
|
321
|
+
*/
|
|
322
|
+
getMovies(): Promise<Movie[]>;
|
|
323
|
+
/**
|
|
324
|
+
* Get a specific movie
|
|
325
|
+
*/
|
|
326
|
+
getMovieById(id: number): Promise<Movie>;
|
|
327
|
+
/**
|
|
328
|
+
* Search for movies
|
|
329
|
+
*/
|
|
330
|
+
searchMovies(term: string): Promise<SearchResult[]>;
|
|
331
|
+
/**
|
|
332
|
+
* Add a movie
|
|
333
|
+
*/
|
|
334
|
+
addMovie(movie: Partial<Movie> & {
|
|
335
|
+
tmdbId: number;
|
|
336
|
+
rootFolderPath: string;
|
|
337
|
+
qualityProfileId: number;
|
|
338
|
+
}): Promise<Movie>;
|
|
339
|
+
/**
|
|
340
|
+
* Trigger a search for a movie
|
|
341
|
+
*/
|
|
342
|
+
searchMovie(movieId: number): Promise<void>;
|
|
343
|
+
}
|
|
344
|
+
export declare class LidarrClient extends ArrClient {
|
|
345
|
+
constructor(config: ArrConfig);
|
|
346
|
+
/**
|
|
347
|
+
* Get all artists
|
|
348
|
+
*/
|
|
349
|
+
getArtists(): Promise<Artist[]>;
|
|
350
|
+
/**
|
|
351
|
+
* Get a specific artist
|
|
352
|
+
*/
|
|
353
|
+
getArtistById(id: number): Promise<Artist>;
|
|
354
|
+
/**
|
|
355
|
+
* Search for artists
|
|
356
|
+
*/
|
|
357
|
+
searchArtists(term: string): Promise<SearchResult[]>;
|
|
358
|
+
/**
|
|
359
|
+
* Add an artist
|
|
360
|
+
*/
|
|
361
|
+
addArtist(artist: Partial<Artist> & {
|
|
362
|
+
foreignArtistId: string;
|
|
363
|
+
rootFolderPath: string;
|
|
364
|
+
qualityProfileId: number;
|
|
365
|
+
metadataProfileId: number;
|
|
366
|
+
}): Promise<Artist>;
|
|
367
|
+
}
|
|
368
|
+
export declare class ReadarrClient extends ArrClient {
|
|
369
|
+
constructor(config: ArrConfig);
|
|
370
|
+
/**
|
|
371
|
+
* Get all authors
|
|
372
|
+
*/
|
|
373
|
+
getAuthors(): Promise<Author[]>;
|
|
374
|
+
/**
|
|
375
|
+
* Get a specific author
|
|
376
|
+
*/
|
|
377
|
+
getAuthorById(id: number): Promise<Author>;
|
|
378
|
+
/**
|
|
379
|
+
* Search for authors
|
|
380
|
+
*/
|
|
381
|
+
searchAuthors(term: string): Promise<SearchResult[]>;
|
|
382
|
+
/**
|
|
383
|
+
* Add an author
|
|
384
|
+
*/
|
|
385
|
+
addAuthor(author: Partial<Author> & {
|
|
386
|
+
foreignAuthorId: string;
|
|
387
|
+
rootFolderPath: string;
|
|
388
|
+
qualityProfileId: number;
|
|
389
|
+
metadataProfileId: number;
|
|
390
|
+
}): Promise<Author>;
|
|
391
|
+
}
|
|
392
|
+
export declare class ProwlarrClient extends ArrClient {
|
|
393
|
+
constructor(config: ArrConfig);
|
|
394
|
+
/**
|
|
395
|
+
* Get all indexers
|
|
396
|
+
*/
|
|
397
|
+
getIndexers(): Promise<Indexer[]>;
|
|
398
|
+
/**
|
|
399
|
+
* Test all indexers
|
|
400
|
+
*/
|
|
401
|
+
testAllIndexers(): Promise<void>;
|
|
402
|
+
/**
|
|
403
|
+
* Search across all indexers
|
|
404
|
+
*/
|
|
405
|
+
search(query: string, categories?: number[]): Promise<unknown[]>;
|
|
406
|
+
}
|
|
407
|
+
//# sourceMappingURL=arr-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arr-client.d.ts","sourceRoot":"","sources":["../src/arr-client.ts"],"names":[],"mappings":"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"}
|