@thelord/mcp-arr 1.0.0 → 1.2.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.
@@ -0,0 +1,212 @@
1
+ /**
2
+ * Bazarr API Client
3
+ *
4
+ * Client for interacting with Bazarr subtitle management API.
5
+ * Bazarr is a companion application to Sonarr and Radarr that manages
6
+ * and downloads subtitles based on your requirements.
7
+ */
8
+ export interface BazarrConfig {
9
+ url: string;
10
+ apiKey: string;
11
+ }
12
+ export interface BazarrStatus {
13
+ bazarr_version: string;
14
+ sonarr_version: string;
15
+ radarr_version: string;
16
+ operating_system: string;
17
+ python_version: string;
18
+ start_time: number;
19
+ timezone: string;
20
+ }
21
+ export interface BazarrLanguage {
22
+ name: string;
23
+ code2: string;
24
+ code3: string;
25
+ enabled: boolean;
26
+ }
27
+ export interface BazarrSubtitle {
28
+ name: string;
29
+ code2: string;
30
+ code3: string;
31
+ path?: string;
32
+ forced: boolean;
33
+ hi: boolean;
34
+ file_size?: number;
35
+ }
36
+ export interface BazarrSeries {
37
+ title: string;
38
+ alternativeTitles: string[];
39
+ path: string;
40
+ sonarrSeriesId: number;
41
+ tvdbId: number;
42
+ imdbId: string;
43
+ poster: string;
44
+ fanart: string;
45
+ year: string;
46
+ overview: string;
47
+ seriesType: string;
48
+ monitored: boolean;
49
+ ended: boolean;
50
+ episodeFileCount: number;
51
+ episodeMissingCount: number;
52
+ profileId: number;
53
+ tags: string[];
54
+ audio_language: any[];
55
+ }
56
+ export interface BazarrEpisode {
57
+ title: string;
58
+ path: string;
59
+ season: number;
60
+ episode: number;
61
+ sonarrSeriesId: number;
62
+ sonarrEpisodeId: number;
63
+ monitored: boolean;
64
+ sceneName: string | null;
65
+ subtitles: BazarrSubtitle[];
66
+ missing_subtitles: BazarrSubtitle[];
67
+ audio_language: {
68
+ name: string;
69
+ code2: string;
70
+ code3: string;
71
+ }[];
72
+ }
73
+ export interface BazarrMovie {
74
+ title: string;
75
+ alternativeTitles: string[];
76
+ path: string;
77
+ radarrId: number;
78
+ tmdbId: number;
79
+ imdbId: string;
80
+ poster: string;
81
+ fanart: string;
82
+ year: string;
83
+ overview: string;
84
+ monitored: boolean;
85
+ profileId: number;
86
+ tags: string[];
87
+ subtitles: BazarrSubtitle[];
88
+ missing_subtitles: BazarrSubtitle[];
89
+ audio_language: any[];
90
+ sceneName: string | null;
91
+ }
92
+ export interface BazarrWantedEpisode {
93
+ seriesTitle: string;
94
+ episode_number: string;
95
+ episodeTitle: string;
96
+ sonarrSeriesId: number;
97
+ sonarrEpisodeId: number;
98
+ sceneName: string | null;
99
+ tags: string[];
100
+ seriesType: string;
101
+ missing_subtitles: BazarrSubtitle[];
102
+ }
103
+ export interface BazarrWantedMovie {
104
+ title: string;
105
+ radarrId: number;
106
+ sceneName: string | null;
107
+ tags: string[];
108
+ missing_subtitles: BazarrSubtitle[];
109
+ }
110
+ export interface BazarrTask {
111
+ job_id: string;
112
+ name: string;
113
+ interval: string;
114
+ next_run_in: string;
115
+ next_run_time: string;
116
+ job_running: boolean;
117
+ }
118
+ export interface BazarrBadges {
119
+ episodes: number;
120
+ movies: number;
121
+ providers: number;
122
+ status: number;
123
+ sonarr_signalr: string;
124
+ radarr_signalr: string;
125
+ announcements: number;
126
+ }
127
+ export interface BazarrHistoryItem {
128
+ action: number;
129
+ description: string;
130
+ language: {
131
+ name: string;
132
+ code2: string;
133
+ code3: string;
134
+ };
135
+ path: string;
136
+ provider: string;
137
+ score: string;
138
+ seriesTitle?: string;
139
+ episode_number?: string;
140
+ episodeTitle?: string;
141
+ sonarrSeriesId?: number;
142
+ sonarrEpisodeId?: number;
143
+ title?: string;
144
+ radarrId?: number;
145
+ timestamp: string;
146
+ upgradable: boolean;
147
+ }
148
+ export interface BazarrProvider {
149
+ name: string;
150
+ status: string;
151
+ retry: string;
152
+ }
153
+ export interface SubtitleSearchResult {
154
+ provider: string;
155
+ release_info: string[];
156
+ subtitle: string;
157
+ matches: string[];
158
+ score: number;
159
+ uploader: string;
160
+ url: string;
161
+ language: {
162
+ name: string;
163
+ code2: string;
164
+ code3: string;
165
+ };
166
+ forced: boolean;
167
+ hearing_impaired: boolean;
168
+ }
169
+ export declare class BazarrClient {
170
+ private config;
171
+ constructor(config: BazarrConfig);
172
+ private request;
173
+ getStatus(): Promise<BazarrStatus>;
174
+ getHealth(): Promise<any[]>;
175
+ getLanguages(): Promise<BazarrLanguage[]>;
176
+ getEnabledLanguages(): Promise<BazarrLanguage[]>;
177
+ getTasks(): Promise<BazarrTask[]>;
178
+ runTask(taskId: string): Promise<void>;
179
+ getBadges(): Promise<BazarrBadges>;
180
+ getProviders(): Promise<BazarrProvider[]>;
181
+ getSeries(): Promise<BazarrSeries[]>;
182
+ getSeriesById(seriesId: number): Promise<BazarrSeries>;
183
+ getEpisodes(seriesId: number): Promise<BazarrEpisode[]>;
184
+ getEpisodeById(episodeId: number): Promise<BazarrEpisode>;
185
+ getWantedEpisodes(page?: number, pageSize?: number): Promise<{
186
+ data: BazarrWantedEpisode[];
187
+ total: number;
188
+ }>;
189
+ searchEpisodeSubtitles(episodeId: number, language: string): Promise<SubtitleSearchResult[]>;
190
+ downloadEpisodeSubtitle(episodeId: number, provider: string, subtitle: string, language: string, forced?: boolean, hi?: boolean): Promise<void>;
191
+ searchMissingEpisodeSubtitles(seriesId?: number): Promise<void>;
192
+ getMovies(): Promise<BazarrMovie[]>;
193
+ getMovieById(movieId: number): Promise<BazarrMovie>;
194
+ getWantedMovies(page?: number, pageSize?: number): Promise<{
195
+ data: BazarrWantedMovie[];
196
+ total: number;
197
+ }>;
198
+ searchMovieSubtitles(movieId: number, language: string): Promise<SubtitleSearchResult[]>;
199
+ downloadMovieSubtitle(movieId: number, provider: string, subtitle: string, language: string, forced?: boolean, hi?: boolean): Promise<void>;
200
+ searchMissingMovieSubtitles(movieId?: number): Promise<void>;
201
+ getSeriesHistory(page?: number, pageSize?: number): Promise<{
202
+ data: BazarrHistoryItem[];
203
+ total: number;
204
+ }>;
205
+ getMovieHistory(page?: number, pageSize?: number): Promise<{
206
+ data: BazarrHistoryItem[];
207
+ total: number;
208
+ }>;
209
+ syncSeries(): Promise<void>;
210
+ syncMovies(): Promise<void>;
211
+ }
212
+ //# sourceMappingURL=bazarr-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bazarr-client.d.ts","sourceRoot":"","sources":["../src/bazarr-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Bazarr API Client
3
+ *
4
+ * Client for interacting with Bazarr subtitle management API.
5
+ * Bazarr is a companion application to Sonarr and Radarr that manages
6
+ * and downloads subtitles based on your requirements.
7
+ */
8
+ export class BazarrClient {
9
+ config;
10
+ constructor(config) {
11
+ this.config = config;
12
+ }
13
+ async request(endpoint, options = {}) {
14
+ const url = `${this.config.url}/api${endpoint}${endpoint.includes('?') ? '&' : '?'}apikey=${this.config.apiKey}`;
15
+ const response = await fetch(url, {
16
+ ...options,
17
+ headers: {
18
+ 'Content-Type': 'application/json',
19
+ ...options.headers,
20
+ },
21
+ });
22
+ if (!response.ok) {
23
+ const errorText = await response.text();
24
+ throw new Error(`Bazarr API error: ${response.status} ${response.statusText} - ${errorText}`);
25
+ }
26
+ return response.json();
27
+ }
28
+ // System endpoints
29
+ async getStatus() {
30
+ const result = await this.request('/system/status');
31
+ return result.data;
32
+ }
33
+ async getHealth() {
34
+ const result = await this.request('/system/health');
35
+ return result.data;
36
+ }
37
+ async getLanguages() {
38
+ return this.request('/system/languages');
39
+ }
40
+ async getEnabledLanguages() {
41
+ const languages = await this.getLanguages();
42
+ return languages.filter(lang => lang.enabled);
43
+ }
44
+ async getTasks() {
45
+ const result = await this.request('/system/tasks');
46
+ return result.data;
47
+ }
48
+ async runTask(taskId) {
49
+ await this.request(`/system/tasks?taskid=${taskId}`, { method: 'POST' });
50
+ }
51
+ async getBadges() {
52
+ return this.request('/badges');
53
+ }
54
+ async getProviders() {
55
+ const result = await this.request('/system/providers');
56
+ return result.data;
57
+ }
58
+ // Series endpoints
59
+ async getSeries() {
60
+ const result = await this.request('/series');
61
+ return result.data;
62
+ }
63
+ async getSeriesById(seriesId) {
64
+ const result = await this.request(`/series?seriesid[]=${seriesId}`);
65
+ return result.data[0];
66
+ }
67
+ async getEpisodes(seriesId) {
68
+ const result = await this.request(`/episodes?seriesid[]=${seriesId}`);
69
+ return result.data;
70
+ }
71
+ async getEpisodeById(episodeId) {
72
+ const result = await this.request(`/episodes?episodeid[]=${episodeId}`);
73
+ return result.data[0];
74
+ }
75
+ async getWantedEpisodes(page = 1, pageSize = 50) {
76
+ const start = (page - 1) * pageSize;
77
+ return this.request(`/episodes/wanted?start=${start}&length=${pageSize}`);
78
+ }
79
+ async searchEpisodeSubtitles(episodeId, language) {
80
+ const result = await this.request(`/providers/episodes?episodeid=${episodeId}&language=${language}`);
81
+ return result.data;
82
+ }
83
+ async downloadEpisodeSubtitle(episodeId, provider, subtitle, language, forced = false, hi = false) {
84
+ await this.request('/providers/episodes', {
85
+ method: 'POST',
86
+ body: JSON.stringify({
87
+ episodeid: episodeId,
88
+ provider,
89
+ subtitle,
90
+ language,
91
+ forced,
92
+ hi,
93
+ }),
94
+ });
95
+ }
96
+ async searchMissingEpisodeSubtitles(seriesId) {
97
+ const endpoint = seriesId
98
+ ? `/episodes/subtitles?seriesid=${seriesId}`
99
+ : '/episodes/subtitles';
100
+ await this.request(endpoint, { method: 'POST' });
101
+ }
102
+ // Movie endpoints
103
+ async getMovies() {
104
+ const result = await this.request('/movies');
105
+ return result.data;
106
+ }
107
+ async getMovieById(movieId) {
108
+ const result = await this.request(`/movies?radarrid[]=${movieId}`);
109
+ return result.data[0];
110
+ }
111
+ async getWantedMovies(page = 1, pageSize = 50) {
112
+ const start = (page - 1) * pageSize;
113
+ return this.request(`/movies/wanted?start=${start}&length=${pageSize}`);
114
+ }
115
+ async searchMovieSubtitles(movieId, language) {
116
+ const result = await this.request(`/providers/movies?radarrid=${movieId}&language=${language}`);
117
+ return result.data;
118
+ }
119
+ async downloadMovieSubtitle(movieId, provider, subtitle, language, forced = false, hi = false) {
120
+ await this.request('/providers/movies', {
121
+ method: 'POST',
122
+ body: JSON.stringify({
123
+ radarrid: movieId,
124
+ provider,
125
+ subtitle,
126
+ language,
127
+ forced,
128
+ hi,
129
+ }),
130
+ });
131
+ }
132
+ async searchMissingMovieSubtitles(movieId) {
133
+ const endpoint = movieId
134
+ ? `/movies/subtitles?radarrid=${movieId}`
135
+ : '/movies/subtitles';
136
+ await this.request(endpoint, { method: 'POST' });
137
+ }
138
+ // History endpoints
139
+ async getSeriesHistory(page = 1, pageSize = 50) {
140
+ const start = (page - 1) * pageSize;
141
+ return this.request(`/history/series?start=${start}&length=${pageSize}`);
142
+ }
143
+ async getMovieHistory(page = 1, pageSize = 50) {
144
+ const start = (page - 1) * pageSize;
145
+ return this.request(`/history/movies?start=${start}&length=${pageSize}`);
146
+ }
147
+ // Sync endpoints
148
+ async syncSeries() {
149
+ await this.runTask('update_series');
150
+ }
151
+ async syncMovies() {
152
+ await this.runTask('update_movies');
153
+ }
154
+ }
155
+ //# sourceMappingURL=bazarr-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bazarr-client.js","sourceRoot":"","sources":["../src/bazarr-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Bazarr MCP Tool Handlers
3
+ *
4
+ * Handles execution of Bazarr MCP tools.
5
+ */
6
+ import { BazarrClient } from "./bazarr-client.js";
7
+ export declare function handleBazarrTool(client: BazarrClient, toolName: string, args: Record<string, unknown>): Promise<string>;
8
+ //# sourceMappingURL=bazarr-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bazarr-handlers.d.ts","sourceRoot":"","sources":["../src/bazarr-handlers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,MAAM,CAAC,CAoYjB"}