fix(ui): Capitalization, punctuation, and grammar inconsistences & errors (#731)
This commit is contained in:
@@ -165,7 +165,7 @@ This version can break any moment. Be prepared to troubleshoot any issues that a
|
|||||||
{% endtab %}
|
{% endtab %}
|
||||||
|
|
||||||
{% tab title="Swizzin" %}
|
{% tab title="Swizzin" %}
|
||||||
The installation is not implemented via docker, but barebones. The latest released version of overseerr will be used.
|
The installation is not implemented via Docker, but barebones. The latest release version of Overseerr will be used.
|
||||||
Please see the [swizzin documentation](https://swizzin.ltd/applications/overseerr) for more information.
|
Please see the [swizzin documentation](https://swizzin.ltd/applications/overseerr) for more information.
|
||||||
|
|
||||||
To install, run the following:
|
To install, run the following:
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ The most secure method, but also the most inconvenient, is to set up a VPN tunne
|
|||||||
|
|
||||||
### Some media is missing from Overseerr that I know is in Plex!
|
### Some media is missing from Overseerr that I know is in Plex!
|
||||||
|
|
||||||
**A:** Overseerr supports the new Plex Movie, Legacy Plex Movie, TheTVDB agent, and the TMDb agent. Please verify that your library is using one of the agents previously listed. If you are changing agents, a full metadata refresh will need to be performed. Caution, this can take a long time depending on how many items you have in your movie library.
|
**A:** Overseerr supports the new Plex Movie, legacy Plex Movie, TheTVDB, and TMDb agents. Please verify that your library is using one of the agents previously listed. If you are changing agents, a full metadata refresh will need to be performed. Caution, this can take a long time depending on how many items you have in your movie library.
|
||||||
|
|
||||||
**Troubleshooting Steps:**
|
**Troubleshooting Steps:**
|
||||||
|
|
||||||
@@ -55,8 +55,8 @@ Perform these steps to verify the media item has a guid Overseerr can match.
|
|||||||
|
|
||||||
**Examples:**
|
**Examples:**
|
||||||
|
|
||||||
1. TMDB agent `guid="com.plexapp.agents.themoviedb://1705"`
|
1. TMDb agent `guid="com.plexapp.agents.themoviedb://1705"`
|
||||||
2. The new Plex Movie agent `<Guid id="tmdb://464052"/>`
|
2. New Plex Movie agent `<Guid id="tmdb://464052"/>`
|
||||||
3. TheTVDB agent `guid="com.plexapp.agents.thetvdb://78874/1/1"`
|
3. TheTVDB agent `guid="com.plexapp.agents.thetvdb://78874/1/1"`
|
||||||
4. Legacy Plex Movie agent `guid="com.plexapp.agents.imdb://tt0765446"`
|
4. Legacy Plex Movie agent `guid="com.plexapp.agents.imdb://tt0765446"`
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ Perform these steps to verify the media item has a guid Overseerr can match.
|
|||||||
|
|
||||||
### Why can't I see all my Plex users?
|
### Why can't I see all my Plex users?
|
||||||
|
|
||||||
**A:** Navigate to your **User List** in Overseerr and click **Import Users From Plex** button. Don't forget to check the default user permissions in the **Settings -> General Settings** page beforehand.
|
**A:** Navigate to your **User List** in Overseerr and click **Import Users from Plex** button. Don't forget to check the default user permissions in the **Settings -> General Settings** page beforehand.
|
||||||
|
|
||||||
### Can I create local users in Overseerr?
|
### Can I create local users in Overseerr?
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ Overseerr already supports a good number of notification agents, such as **Disco
|
|||||||
- Pushover
|
- Pushover
|
||||||
- [Webhooks](./webhooks.md)
|
- [Webhooks](./webhooks.md)
|
||||||
|
|
||||||
## Setting up Notifications
|
## Setting Up Notifications
|
||||||
|
|
||||||
Configuring your notifications is _very simple_. First, you will need to visit the **Settings** page and click **Notifications** in the menu. This will present you with all of the currently available notification agents. Click on each one individually to configure them.
|
Configuring your notifications is _very simple_. First, you will need to visit the **Settings** page and click **Notifications** in the menu. This will present you with all of the currently available notification agents. Click on each one individually to configure them.
|
||||||
|
|
||||||
|
|||||||
@@ -42,8 +42,8 @@ These variables are usually the target user of the notification.
|
|||||||
These variables are only included in media related notifications, such as requests.
|
These variables are only included in media related notifications, such as requests.
|
||||||
|
|
||||||
- `{{media_type}}` Media type. Either `movie` or `tv`.
|
- `{{media_type}}` Media type. Either `movie` or `tv`.
|
||||||
- `{{media_tmdbid}}` Media's TMDB ID.
|
- `{{media_tmdbid}}` Media's TMDb ID.
|
||||||
- `{{media_imdbid}}` Media's IMDB ID.
|
- `{{media_imdbid}}` Media's IMDb ID.
|
||||||
- `{{media_tvdbid}}` Media's TVDB ID.
|
- `{{media_tvdbid}}` Media's TVDB ID.
|
||||||
- `{{media_status}}` Media's availability status. (Ex. `AVAILABLE` or `PENDING`)
|
- `{{media_status}}` Media's availability status. (Ex. `AVAILABLE` or `PENDING`)
|
||||||
- `{{media_status4k}}` Media's 4K availability status. (Ex. `AVAILABLE` or `PENDING`)
|
- `{{media_status4k}}` Media's 4K availability status. (Ex. `AVAILABLE` or `PENDING`)
|
||||||
|
|||||||
@@ -1431,8 +1431,8 @@ components:
|
|||||||
paths:
|
paths:
|
||||||
/status:
|
/status:
|
||||||
get:
|
get:
|
||||||
summary: Return Overseerr version
|
summary: Get Overseerr version
|
||||||
description: Returns the current Overseerr version in JSON format
|
description: Returns the current Overseerr version in a JSON object.
|
||||||
security: []
|
security: []
|
||||||
tags:
|
tags:
|
||||||
- public
|
- public
|
||||||
@@ -1451,8 +1451,8 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
/settings/main:
|
/settings/main:
|
||||||
get:
|
get:
|
||||||
summary: Returns main settings
|
summary: Get main settings
|
||||||
description: Retrieves all main settings in JSON format
|
description: Retrieves all main settings in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
responses:
|
responses:
|
||||||
@@ -1464,7 +1464,7 @@ paths:
|
|||||||
$ref: '#/components/schemas/MainSettings'
|
$ref: '#/components/schemas/MainSettings'
|
||||||
post:
|
post:
|
||||||
summary: Update main settings
|
summary: Update main settings
|
||||||
description: Update current main settings with provided values
|
description: Updates main settings with the provided values.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
requestBody:
|
requestBody:
|
||||||
@@ -1482,8 +1482,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/MainSettings'
|
$ref: '#/components/schemas/MainSettings'
|
||||||
/settings/main/regenerate:
|
/settings/main/regenerate:
|
||||||
get:
|
get:
|
||||||
summary: Returns main settings with newly generated API Key
|
summary: Get main settings with newly-generated API key
|
||||||
description: Retreives all main settings in JSON format with new API Key
|
description: Returns main settings in a JSON object, using the new API key.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
responses:
|
responses:
|
||||||
@@ -1495,8 +1495,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/MainSettings'
|
$ref: '#/components/schemas/MainSettings'
|
||||||
/settings/plex:
|
/settings/plex:
|
||||||
get:
|
get:
|
||||||
summary: Returns plex settings
|
summary: Get Plex settings
|
||||||
description: Retrieves current Plex settings
|
description: Retrieves current Plex settings.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
responses:
|
responses:
|
||||||
@@ -1507,8 +1507,8 @@ paths:
|
|||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/PlexSettings'
|
$ref: '#/components/schemas/PlexSettings'
|
||||||
post:
|
post:
|
||||||
summary: Update plex settings
|
summary: Update Plex settings
|
||||||
description: Update the current plex settings with provided values
|
description: Updates Plex settings with the provided values.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
requestBody:
|
requestBody:
|
||||||
@@ -1526,14 +1526,14 @@ paths:
|
|||||||
$ref: '#/components/schemas/PlexSettings'
|
$ref: '#/components/schemas/PlexSettings'
|
||||||
/settings/plex/library:
|
/settings/plex/library:
|
||||||
get:
|
get:
|
||||||
summary: Get a list of current plex libraries
|
summary: Get Plex libraries
|
||||||
description: Returns a list of plex libraries in a JSON array
|
description: Returns a list of Plex libraries in a JSON array.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
parameters:
|
parameters:
|
||||||
- in: query
|
- in: query
|
||||||
name: sync
|
name: sync
|
||||||
description: Syncs the current libraries with the current plex server
|
description: Syncs the current libraries with the current Plex server
|
||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
nullable: true
|
nullable: true
|
||||||
@@ -1556,8 +1556,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/PlexLibrary'
|
$ref: '#/components/schemas/PlexLibrary'
|
||||||
/settings/plex/sync:
|
/settings/plex/sync:
|
||||||
get:
|
get:
|
||||||
summary: Start a full Plex Library sync
|
summary: Start full Plex library sync
|
||||||
description: Runs a full plex library sync and returns the progress in a JSON array
|
description: Runs a full Plex library sync and returns the progress in a JSON array.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
parameters:
|
parameters:
|
||||||
@@ -1573,7 +1573,7 @@ paths:
|
|||||||
example: false
|
example: false
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: Status of Plex Sync
|
description: Status of Plex sync
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
@@ -1611,8 +1611,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/PlexDevice'
|
$ref: '#/components/schemas/PlexDevice'
|
||||||
/settings/radarr:
|
/settings/radarr:
|
||||||
get:
|
get:
|
||||||
summary: Get all radarr settings
|
summary: Get Radarr settings
|
||||||
description: Returns all radarr settings in a JSON array
|
description: Returns all Radarr settings in a JSON array.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
responses:
|
responses:
|
||||||
@@ -1625,8 +1625,8 @@ paths:
|
|||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/RadarrSettings'
|
$ref: '#/components/schemas/RadarrSettings'
|
||||||
post:
|
post:
|
||||||
summary: Create new radarr instance
|
summary: Create Radarr instance
|
||||||
description: Creates a new radarr instance from the request body
|
description: Creates a new Radarr instance from the request body.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
requestBody:
|
requestBody:
|
||||||
@@ -1644,8 +1644,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/RadarrSettings'
|
$ref: '#/components/schemas/RadarrSettings'
|
||||||
/settings/radarr/test:
|
/settings/radarr/test:
|
||||||
post:
|
post:
|
||||||
summary: Test radarr configuration
|
summary: Test Radarr configuration
|
||||||
description: Test if the provided Radarr configuration values are valid. Returns profiles and root folders on success
|
description: Tests if the Radarr configuration is valid. Returns profiles and root folders on success.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
requestBody:
|
requestBody:
|
||||||
@@ -1688,8 +1688,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/ServiceProfile'
|
$ref: '#/components/schemas/ServiceProfile'
|
||||||
/settings/radarr/{radarrId}:
|
/settings/radarr/{radarrId}:
|
||||||
put:
|
put:
|
||||||
summary: Update existing radarr instance
|
summary: Update Radarr instance
|
||||||
description: Updates an existing radarr instance with values from request body
|
description: Updates an existing Radarr instance with the provided values.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
parameters:
|
parameters:
|
||||||
@@ -1713,8 +1713,8 @@ paths:
|
|||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/RadarrSettings'
|
$ref: '#/components/schemas/RadarrSettings'
|
||||||
delete:
|
delete:
|
||||||
summary: Delete existing radarr instance
|
summary: Delete Radarr instance
|
||||||
description: Deletes an existing radarr instance based on id parameter
|
description: Deletes an existing Radarr instance based on the radarrId parameter.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
parameters:
|
parameters:
|
||||||
@@ -1723,7 +1723,7 @@ paths:
|
|||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
type: integer
|
type: integer
|
||||||
description: Radarr Instance ID
|
description: Radarr instance ID
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: 'Radarr instance updated'
|
description: 'Radarr instance updated'
|
||||||
@@ -1733,8 +1733,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/RadarrSettings'
|
$ref: '#/components/schemas/RadarrSettings'
|
||||||
/settings/radarr/{radarrId}/profiles:
|
/settings/radarr/{radarrId}/profiles:
|
||||||
get:
|
get:
|
||||||
summary: Retrieve available profiles for the Radarr instance
|
summary: Get available Radarr profiles
|
||||||
description: Returns an array of profile available on the Radarr server instance in JSON format
|
description: Returns a list of profiles available on the Radarr server instance in a JSON array.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
parameters:
|
parameters:
|
||||||
@@ -1743,7 +1743,7 @@ paths:
|
|||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
type: integer
|
type: integer
|
||||||
description: Radarr Instance ID
|
description: Radarr instance ID
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: Returned list of profiles
|
description: Returned list of profiles
|
||||||
@@ -1755,8 +1755,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/ServiceProfile'
|
$ref: '#/components/schemas/ServiceProfile'
|
||||||
/settings/sonarr:
|
/settings/sonarr:
|
||||||
get:
|
get:
|
||||||
summary: Get all sonarr settings
|
summary: Get Sonarr settings
|
||||||
description: Returns all sonarr settings in a JSON array
|
description: Returns all Sonarr settings in a JSON array.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
responses:
|
responses:
|
||||||
@@ -1769,8 +1769,8 @@ paths:
|
|||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/SonarrSettings'
|
$ref: '#/components/schemas/SonarrSettings'
|
||||||
post:
|
post:
|
||||||
summary: Create new Sonarr instance
|
summary: Create Sonarr instance
|
||||||
description: Creates a new Sonarr instance from the request body
|
description: Creates a new Sonarr instance from the request body.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
requestBody:
|
requestBody:
|
||||||
@@ -1789,7 +1789,7 @@ paths:
|
|||||||
/settings/sonarr/test:
|
/settings/sonarr/test:
|
||||||
post:
|
post:
|
||||||
summary: Test Sonarr configuration
|
summary: Test Sonarr configuration
|
||||||
description: Test if the provided Sonarr configuration values are valid. Returns profiles and root folders on success
|
description: Tests if the Sonarr configuration is valid. Returns profiles and root folders on success.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
requestBody:
|
requestBody:
|
||||||
@@ -1832,8 +1832,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/ServiceProfile'
|
$ref: '#/components/schemas/ServiceProfile'
|
||||||
/settings/sonarr/{sonarrId}:
|
/settings/sonarr/{sonarrId}:
|
||||||
put:
|
put:
|
||||||
summary: Update existing sonarr instance
|
summary: Update Sonarr instance
|
||||||
description: Updates an existing sonarr instance with values from request body
|
description: Updates an existing Sonarr instance with the provided values.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
parameters:
|
parameters:
|
||||||
@@ -1857,8 +1857,8 @@ paths:
|
|||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/SonarrSettings'
|
$ref: '#/components/schemas/SonarrSettings'
|
||||||
delete:
|
delete:
|
||||||
summary: Delete existing sonarr instance
|
summary: Delete Sonarr instance
|
||||||
description: Deletes an existing sonarr instance based on id parameter
|
description: Deletes an existing Sonarr instance based on the sonarrId parameter.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
parameters:
|
parameters:
|
||||||
@@ -1867,7 +1867,7 @@ paths:
|
|||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
type: integer
|
type: integer
|
||||||
description: Sonarr Instance ID
|
description: Sonarr instance ID
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: 'Sonarr instance updated'
|
description: 'Sonarr instance updated'
|
||||||
@@ -1877,35 +1877,35 @@ paths:
|
|||||||
$ref: '#/components/schemas/SonarrSettings'
|
$ref: '#/components/schemas/SonarrSettings'
|
||||||
/settings/public:
|
/settings/public:
|
||||||
get:
|
get:
|
||||||
summary: Returns public settings
|
summary: Get public settings
|
||||||
security: []
|
security: []
|
||||||
description: Returns settings that are not protected or sensitive. Mainly used to determine if the app has been configured for the first time.
|
description: Returns settings that are not protected or sensitive. Mainly used to determine if the application has been configured for the first time.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: Public Settings returned
|
description: Public settings returned
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/PublicSettings'
|
$ref: '#/components/schemas/PublicSettings'
|
||||||
/settings/initialize:
|
/settings/initialize:
|
||||||
get:
|
get:
|
||||||
summary: Set the application as initialized
|
summary: Initialize application
|
||||||
description: Sets the app as initialized and allows the user to navigate to pages other than the setup page
|
description: Sets the app as initialized, allowing the user to navigate to pages other than the setup page.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: Public Settings returned
|
description: Public settings returned
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/PublicSettings'
|
$ref: '#/components/schemas/PublicSettings'
|
||||||
/settings/jobs:
|
/settings/jobs:
|
||||||
get:
|
get:
|
||||||
summary: Returns list of scheduled jobs
|
summary: Get scheduled jobs
|
||||||
description: Returns list of all scheduled jobs and details about their next execution time
|
description: Returns list of all scheduled jobs and details about their next execution time in a JSON array.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
responses:
|
responses:
|
||||||
@@ -1926,8 +1926,8 @@ paths:
|
|||||||
example: '2020-09-02T05:02:23.000Z'
|
example: '2020-09-02T05:02:23.000Z'
|
||||||
/settings/notifications:
|
/settings/notifications:
|
||||||
get:
|
get:
|
||||||
summary: Return current notification settings
|
summary: Return notification settings
|
||||||
description: Returns current notification settings in JSON format
|
description: Returns current notification settings in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
responses:
|
responses:
|
||||||
@@ -1939,7 +1939,7 @@ paths:
|
|||||||
$ref: '#/components/schemas/NotificationSettings'
|
$ref: '#/components/schemas/NotificationSettings'
|
||||||
post:
|
post:
|
||||||
summary: Update notification settings
|
summary: Update notification settings
|
||||||
description: Update current notification settings with provided values
|
description: Updates notification settings with the provided values.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
requestBody:
|
requestBody:
|
||||||
@@ -1957,8 +1957,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/NotificationSettings'
|
$ref: '#/components/schemas/NotificationSettings'
|
||||||
/settings/notifications/email:
|
/settings/notifications/email:
|
||||||
get:
|
get:
|
||||||
summary: Return current email notification settings
|
summary: Get email notification settings
|
||||||
description: Returns current email notification settings in JSON format
|
description: Returns current email notification settings in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
responses:
|
responses:
|
||||||
@@ -1970,7 +1970,7 @@ paths:
|
|||||||
$ref: '#/components/schemas/NotificationEmailSettings'
|
$ref: '#/components/schemas/NotificationEmailSettings'
|
||||||
post:
|
post:
|
||||||
summary: Update email notification settings
|
summary: Update email notification settings
|
||||||
description: Update current email notification settings with provided values
|
description: Updates email notification settings with provided values
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
requestBody:
|
requestBody:
|
||||||
@@ -1988,8 +1988,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/NotificationEmailSettings'
|
$ref: '#/components/schemas/NotificationEmailSettings'
|
||||||
/settings/notifications/email/test:
|
/settings/notifications/email/test:
|
||||||
post:
|
post:
|
||||||
summary: Test the provided email settings
|
summary: Test email settings
|
||||||
description: Sends a test notification to the email agent
|
description: Sends a test notification to the email agent.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
requestBody:
|
requestBody:
|
||||||
@@ -2003,20 +2003,20 @@ paths:
|
|||||||
description: Test notification attempted
|
description: Test notification attempted
|
||||||
/settings/notifications/discord:
|
/settings/notifications/discord:
|
||||||
get:
|
get:
|
||||||
summary: Return current discord notification settings
|
summary: Get Discord notification settings
|
||||||
description: Returns current discord notification settings in JSON format
|
description: Returns current Discord notification settings in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: Returned discord settings
|
description: Returned Discord settings
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/DiscordSettings'
|
$ref: '#/components/schemas/DiscordSettings'
|
||||||
post:
|
post:
|
||||||
summary: Update discord notification settings
|
summary: Update Discord notification settings
|
||||||
description: Update current discord notification settings with provided values
|
description: Updates Discord notification settings with the provided values.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
requestBody:
|
requestBody:
|
||||||
@@ -2034,8 +2034,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/DiscordSettings'
|
$ref: '#/components/schemas/DiscordSettings'
|
||||||
/settings/notifications/discord/test:
|
/settings/notifications/discord/test:
|
||||||
post:
|
post:
|
||||||
summary: Test the provided discord settings
|
summary: Test Discord settings
|
||||||
description: Sends a test notification to the discord agent
|
description: Sends a test notification to the Discord agent.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
requestBody:
|
requestBody:
|
||||||
@@ -2049,20 +2049,20 @@ paths:
|
|||||||
description: Test notification attempted
|
description: Test notification attempted
|
||||||
/settings/notifications/telegram:
|
/settings/notifications/telegram:
|
||||||
get:
|
get:
|
||||||
summary: Return current telegram notification settings
|
summary: Get Telegram notification settings
|
||||||
description: Returns current telegram notification settings in JSON format
|
description: Returns current Telegram notification settings in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: Returned telegram settings
|
description: Returned Telegram settings
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/TelegramSettings'
|
$ref: '#/components/schemas/TelegramSettings'
|
||||||
post:
|
post:
|
||||||
summary: Update telegram notification settings
|
summary: Update Telegram notification settings
|
||||||
description: Update current telegram notification settings with provided values
|
description: Update Telegram notification settings with the provided values.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
requestBody:
|
requestBody:
|
||||||
@@ -2080,8 +2080,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/TelegramSettings'
|
$ref: '#/components/schemas/TelegramSettings'
|
||||||
/settings/notifications/telegram/test:
|
/settings/notifications/telegram/test:
|
||||||
post:
|
post:
|
||||||
summary: Test the provided telegram settings
|
summary: Test Telegram settings
|
||||||
description: Sends a test notification to the telegram agent
|
description: Sends a test notification to the Telegram agent.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
requestBody:
|
requestBody:
|
||||||
@@ -2095,20 +2095,20 @@ paths:
|
|||||||
description: Test notification attempted
|
description: Test notification attempted
|
||||||
/settings/notifications/pushover:
|
/settings/notifications/pushover:
|
||||||
get:
|
get:
|
||||||
summary: Return current pushover notification settings
|
summary: Get Pushover notification settings
|
||||||
description: Returns current pushover notification settings in JSON format
|
description: Returns current Pushover notification settings in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: Returned pushover settings
|
description: Returned Pushover settings
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/PushoverSettings'
|
$ref: '#/components/schemas/PushoverSettings'
|
||||||
post:
|
post:
|
||||||
summary: Update pushover notification settings
|
summary: Update pushover notification settings
|
||||||
description: Update current pushover notification settings with provided values
|
description: Update Pushover notification settings with the provided values.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
requestBody:
|
requestBody:
|
||||||
@@ -2126,8 +2126,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/PushoverSettings'
|
$ref: '#/components/schemas/PushoverSettings'
|
||||||
/settings/notifications/pushover/test:
|
/settings/notifications/pushover/test:
|
||||||
post:
|
post:
|
||||||
summary: Test the provided pushover settings
|
summary: Test Pushover settings
|
||||||
description: Sends a test notification to the pushover agent
|
description: Sends a test notification to the Pushover agent.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
requestBody:
|
requestBody:
|
||||||
@@ -2141,8 +2141,8 @@ paths:
|
|||||||
description: Test notification attempted
|
description: Test notification attempted
|
||||||
/settings/notifications/slack:
|
/settings/notifications/slack:
|
||||||
get:
|
get:
|
||||||
summary: Return current slack notification settings
|
summary: Get Slack notification settings
|
||||||
description: Returns current slack notification settings in JSON format
|
description: Returns current Slack notification settings in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
responses:
|
responses:
|
||||||
@@ -2153,8 +2153,8 @@ paths:
|
|||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/SlackSettings'
|
$ref: '#/components/schemas/SlackSettings'
|
||||||
post:
|
post:
|
||||||
summary: Update slack notification settings
|
summary: Update Slack notification settings
|
||||||
description: Update current slack notification settings with provided values
|
description: Updates Slack notification settings with the provided values.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
requestBody:
|
requestBody:
|
||||||
@@ -2172,8 +2172,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/SlackSettings'
|
$ref: '#/components/schemas/SlackSettings'
|
||||||
/settings/notifications/slack/test:
|
/settings/notifications/slack/test:
|
||||||
post:
|
post:
|
||||||
summary: Test the provided slack settings
|
summary: Test Slack settings
|
||||||
description: Sends a test notification to the slack agent
|
description: Sends a test notification to the Slack agent.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
requestBody:
|
requestBody:
|
||||||
@@ -2187,8 +2187,8 @@ paths:
|
|||||||
description: Test notification attempted
|
description: Test notification attempted
|
||||||
/settings/notifications/webhook:
|
/settings/notifications/webhook:
|
||||||
get:
|
get:
|
||||||
summary: Return current webhook notification settings
|
summary: Get webhook notification settings
|
||||||
description: Returns current webhook notification settings in JSON format
|
description: Returns current webhook notification settings in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
responses:
|
responses:
|
||||||
@@ -2200,7 +2200,7 @@ paths:
|
|||||||
$ref: '#/components/schemas/WebhookSettings'
|
$ref: '#/components/schemas/WebhookSettings'
|
||||||
post:
|
post:
|
||||||
summary: Update webhook notification settings
|
summary: Update webhook notification settings
|
||||||
description: Update current webhook notification settings with provided values
|
description: Updates webhook notification settings with the provided values.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
requestBody:
|
requestBody:
|
||||||
@@ -2218,8 +2218,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/WebhookSettings'
|
$ref: '#/components/schemas/WebhookSettings'
|
||||||
/settings/notifications/webhook/test:
|
/settings/notifications/webhook/test:
|
||||||
post:
|
post:
|
||||||
summary: Test the provided slack settings
|
summary: Test webhook settings
|
||||||
description: Sends a test notification to the slack agent
|
description: Sends a test notification to the webhook agent.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
requestBody:
|
requestBody:
|
||||||
@@ -2233,8 +2233,8 @@ paths:
|
|||||||
description: Test notification attempted
|
description: Test notification attempted
|
||||||
/settings/about:
|
/settings/about:
|
||||||
get:
|
get:
|
||||||
summary: Return current about stats
|
summary: Get server stats
|
||||||
description: Returns current server stats in JSON format
|
description: Returns current server stats in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- settings
|
- settings
|
||||||
responses:
|
responses:
|
||||||
@@ -2260,22 +2260,22 @@ paths:
|
|||||||
example: Asia/Tokyo
|
example: Asia/Tokyo
|
||||||
/auth/me:
|
/auth/me:
|
||||||
get:
|
get:
|
||||||
summary: Returns the currently logged in user
|
summary: Get logged-in user
|
||||||
description: Returns the currently logged in user
|
description: Returns the currently logged-in user.
|
||||||
tags:
|
tags:
|
||||||
- auth
|
- auth
|
||||||
- users
|
- users
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: Object containing the logged in user in JSON
|
description: Object containing the logged-in user in JSON
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/User'
|
$ref: '#/components/schemas/User'
|
||||||
/auth/login:
|
/auth/login:
|
||||||
post:
|
post:
|
||||||
summary: Login using a plex auth token
|
summary: Sign in using a Plex token
|
||||||
description: Takes an `authToken` (plex token) to log the user in. Generates a session cookie for use in further requests. If the user does not exist, and there are no other users, then a user will be created with full admin privileges. If a user logs in with access to the main plex server, they will also have an account created, but without any permissions.
|
description: Takes an `authToken` (Plex token) to log the user in. Generates a session cookie for use in further requests. If the user does not exist, and there are no other users, then a user will be created with full admin privileges. If a user logs in with access to the main Plex server, they will also have an account created, but without any permissions.
|
||||||
security: []
|
security: []
|
||||||
tags:
|
tags:
|
||||||
- auth
|
- auth
|
||||||
@@ -2299,7 +2299,7 @@ paths:
|
|||||||
- authToken
|
- authToken
|
||||||
/auth/local:
|
/auth/local:
|
||||||
post:
|
post:
|
||||||
summary: Login using a local account
|
summary: Sign in using a local account
|
||||||
description: Takes an `email` and a `password` to log the user in. Generates a session cookie for use in further requests.
|
description: Takes an `email` and a `password` to log the user in. Generates a session cookie for use in further requests.
|
||||||
security: []
|
security: []
|
||||||
tags:
|
tags:
|
||||||
@@ -2327,8 +2327,8 @@ paths:
|
|||||||
- password
|
- password
|
||||||
/auth/logout:
|
/auth/logout:
|
||||||
get:
|
get:
|
||||||
summary: Logout and clear session cookie
|
summary: Sign out and clear session cookie
|
||||||
description: This endpoint will completely clear the session cookie and associated values, logging out the user
|
description: Completely clear the session cookie and associated values, effectively signing the user out.
|
||||||
tags:
|
tags:
|
||||||
- auth
|
- auth
|
||||||
responses:
|
responses:
|
||||||
@@ -2344,8 +2344,8 @@ paths:
|
|||||||
example: 'ok'
|
example: 'ok'
|
||||||
/user:
|
/user:
|
||||||
get:
|
get:
|
||||||
summary: Returns a list of all users
|
summary: Get all users
|
||||||
description: Requests all users and returns them in a large array
|
description: Returns all users in a JSON array.
|
||||||
tags:
|
tags:
|
||||||
- users
|
- users
|
||||||
responses:
|
responses:
|
||||||
@@ -2358,13 +2358,9 @@ paths:
|
|||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/User'
|
$ref: '#/components/schemas/User'
|
||||||
post:
|
post:
|
||||||
summary: Create a new user
|
summary: Create new user
|
||||||
description: |
|
description: |
|
||||||
Creates a new user. Should under normal circumstances never be called as you will not have a valid authToken to provide for the user.
|
Creates a new user. Requires the `MANAGE_USERS` permission.
|
||||||
|
|
||||||
In the future when Plex auth is not required, this will be used to create accounts.
|
|
||||||
|
|
||||||
Requires the `MANAGE_USERS` permission.
|
|
||||||
tags:
|
tags:
|
||||||
- users
|
- users
|
||||||
requestBody:
|
requestBody:
|
||||||
@@ -2375,7 +2371,7 @@ paths:
|
|||||||
$ref: '#/components/schemas/User'
|
$ref: '#/components/schemas/User'
|
||||||
responses:
|
responses:
|
||||||
'201':
|
'201':
|
||||||
description: The created user in JSON
|
description: The created user
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
@@ -2412,7 +2408,7 @@ paths:
|
|||||||
|
|
||||||
/user/import-from-plex:
|
/user/import-from-plex:
|
||||||
post:
|
post:
|
||||||
summary: Imports all users from Plex
|
summary: Import all users from Plex
|
||||||
description: |
|
description: |
|
||||||
Requests users from the Plex Server and creates a new user for each of them
|
Requests users from the Plex Server and creates a new user for each of them
|
||||||
|
|
||||||
@@ -2431,9 +2427,9 @@ paths:
|
|||||||
|
|
||||||
/user/{userId}:
|
/user/{userId}:
|
||||||
get:
|
get:
|
||||||
summary: Retrieve a user by ID
|
summary: Get user by ID
|
||||||
description: |
|
description: |
|
||||||
Retrieve user details in JSON format. Requires the `MANAGE_USERS` permission.
|
Retrieves user details in a JSON object.. Requires the `MANAGE_USERS` permission.
|
||||||
tags:
|
tags:
|
||||||
- users
|
- users
|
||||||
parameters:
|
parameters:
|
||||||
@@ -2452,7 +2448,7 @@ paths:
|
|||||||
put:
|
put:
|
||||||
summary: Update a user by user ID
|
summary: Update a user by user ID
|
||||||
description: |
|
description: |
|
||||||
Update a user with provided values in request body. You cannot update a user's plex token through this request.
|
Update a user with the provided values. You cannot update a user's Plex token through this request.
|
||||||
|
|
||||||
Requires the `MANAGE_USERS` permission.
|
Requires the `MANAGE_USERS` permission.
|
||||||
tags:
|
tags:
|
||||||
@@ -2477,8 +2473,8 @@ paths:
|
|||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/User'
|
$ref: '#/components/schemas/User'
|
||||||
delete:
|
delete:
|
||||||
summary: Delete a user by user ID
|
summary: Delete user by ID
|
||||||
description: Deletes a user by provided user ID. Requires the `MANAGE_USERS` permission.
|
description: Deletes the user with the provided userId. Requires the `MANAGE_USERS` permission.
|
||||||
tags:
|
tags:
|
||||||
- users
|
- users
|
||||||
parameters:
|
parameters:
|
||||||
@@ -2496,8 +2492,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/User'
|
$ref: '#/components/schemas/User'
|
||||||
/search:
|
/search:
|
||||||
get:
|
get:
|
||||||
summary: Search for movies/tv shows/people
|
summary: Search for movies, TV shows, or people
|
||||||
description: Returns a list of movies/tv shows/people in JSON format
|
description: Returns a list of movies, TV shows, or people a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- search
|
- search
|
||||||
parameters:
|
parameters:
|
||||||
@@ -2545,7 +2541,7 @@ paths:
|
|||||||
/discover/movies:
|
/discover/movies:
|
||||||
get:
|
get:
|
||||||
summary: Discover movies
|
summary: Discover movies
|
||||||
description: Returns a list of movies in JSON format
|
description: Returns a list of movies in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- search
|
- search
|
||||||
parameters:
|
parameters:
|
||||||
@@ -2583,8 +2579,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/MovieResult'
|
$ref: '#/components/schemas/MovieResult'
|
||||||
/discover/movies/upcoming:
|
/discover/movies/upcoming:
|
||||||
get:
|
get:
|
||||||
summary: Upcoming Movies
|
summary: Upcoming movies
|
||||||
description: Returns a list of movies in JSON format
|
description: Returns a list of movies in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- search
|
- search
|
||||||
parameters:
|
parameters:
|
||||||
@@ -2623,7 +2619,7 @@ paths:
|
|||||||
/discover/tv:
|
/discover/tv:
|
||||||
get:
|
get:
|
||||||
summary: Discover TV shows
|
summary: Discover TV shows
|
||||||
description: Returns a list of tv shows in JSON format
|
description: Returns a list of TV shows in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- search
|
- search
|
||||||
parameters:
|
parameters:
|
||||||
@@ -2661,8 +2657,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/TvResult'
|
$ref: '#/components/schemas/TvResult'
|
||||||
/discover/trending:
|
/discover/trending:
|
||||||
get:
|
get:
|
||||||
summary: Trending TV and Movies
|
summary: Trending movies and TV
|
||||||
description: Returns a list of movie/tv shows in JSON format
|
description: Returns a list of movies and TV shows in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- search
|
- search
|
||||||
parameters:
|
parameters:
|
||||||
@@ -2703,8 +2699,8 @@ paths:
|
|||||||
- $ref: '#/components/schemas/PersonResult'
|
- $ref: '#/components/schemas/PersonResult'
|
||||||
/discover/keyword/{keywordId}/movies:
|
/discover/keyword/{keywordId}/movies:
|
||||||
get:
|
get:
|
||||||
summary: Request list of movies from keyword
|
summary: Get movies from keyword
|
||||||
description: Returns list of movies based on provided keyword ID in JSON format
|
description: Returns list of movies based on the provided keyword ID a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- search
|
- search
|
||||||
parameters:
|
parameters:
|
||||||
@@ -2750,7 +2746,7 @@ paths:
|
|||||||
get:
|
get:
|
||||||
summary: Get all requests
|
summary: Get all requests
|
||||||
description: |
|
description: |
|
||||||
Returns all requests if the user has the `ADMIN` or `MANAGE_REQUESTS` permissions. Otherwise, only the logged in users requests are returned.
|
Returns all requests if the user has the `ADMIN` or `MANAGE_REQUESTS` permissions. Otherwise, only the logged-in user's requests are returned.
|
||||||
tags:
|
tags:
|
||||||
- request
|
- request
|
||||||
parameters:
|
parameters:
|
||||||
@@ -2793,9 +2789,9 @@ paths:
|
|||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/MediaRequest'
|
$ref: '#/components/schemas/MediaRequest'
|
||||||
post:
|
post:
|
||||||
summary: Create a new request
|
summary: Create new request
|
||||||
description: |
|
description: |
|
||||||
Creates a new request with the provided media id and type. The `REQUEST` permission is required.
|
Creates a new request with the provided media ID and type. The `REQUEST` permission is required.
|
||||||
|
|
||||||
If the user has the `ADMIN` or `AUTO_APPROVE` permissions, their request will be auomatically approved.
|
If the user has the `ADMIN` or `AUTO_APPROVE` permissions, their request will be auomatically approved.
|
||||||
tags:
|
tags:
|
||||||
@@ -2842,7 +2838,7 @@ paths:
|
|||||||
$ref: '#/components/schemas/MediaRequest'
|
$ref: '#/components/schemas/MediaRequest'
|
||||||
/request/count:
|
/request/count:
|
||||||
get:
|
get:
|
||||||
summary: Returns request counts
|
summary: Gets request counts
|
||||||
description: |
|
description: |
|
||||||
Returns the number of pending and approved requests.
|
Returns the number of pending and approved requests.
|
||||||
tags:
|
tags:
|
||||||
@@ -2866,8 +2862,8 @@ paths:
|
|||||||
- approved
|
- approved
|
||||||
/request/{requestId}:
|
/request/{requestId}:
|
||||||
get:
|
get:
|
||||||
summary: Requests a specific MediaRequest
|
summary: Get MediaRequest
|
||||||
description: Returns a MediaRequest in JSON format
|
description: Returns a specific MediaRequest in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- request
|
- request
|
||||||
parameters:
|
parameters:
|
||||||
@@ -2886,8 +2882,8 @@ paths:
|
|||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/MediaRequest'
|
$ref: '#/components/schemas/MediaRequest'
|
||||||
put:
|
put:
|
||||||
summary: Update a specific MediaRequest
|
summary: Update MediaRequest
|
||||||
description: Updats a specific media request and returns the request in JSON format. Requires the `MANAGE_REQUESTS` permission.
|
description: Updates a specific media request and returns the request in a JSON object.. Requires the `MANAGE_REQUESTS` permission.
|
||||||
tags:
|
tags:
|
||||||
- request
|
- request
|
||||||
parameters:
|
parameters:
|
||||||
@@ -2906,8 +2902,8 @@ paths:
|
|||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/MediaRequest'
|
$ref: '#/components/schemas/MediaRequest'
|
||||||
delete:
|
delete:
|
||||||
summary: Delete a request
|
summary: Delete request
|
||||||
description: Removes a request. If the user has the `MANAGE_REQUESTS` permission, then any request can be removed. Otherwise, only pending requests can be removed.
|
description: Removes a request. If the user has the `MANAGE_REQUESTS` permission, any request can be removed. Otherwise, only pending requests can be removed.
|
||||||
tags:
|
tags:
|
||||||
- request
|
- request
|
||||||
parameters:
|
parameters:
|
||||||
@@ -2923,11 +2919,11 @@ paths:
|
|||||||
description: Succesfully removed request
|
description: Succesfully removed request
|
||||||
/request/{requestId}/retry:
|
/request/{requestId}/retry:
|
||||||
post:
|
post:
|
||||||
summary: Retry a failed request
|
summary: Retry failed request
|
||||||
description: |
|
description: |
|
||||||
Retries a request by resending requests to Sonarr or Radarr
|
Retries a request by resending requests to Sonarr or Radarr.
|
||||||
|
|
||||||
Requires the `MANAGE_REQUESTS` permission or `ADMIN`
|
Requires the `MANAGE_REQUESTS` permission or `ADMIN`.
|
||||||
tags:
|
tags:
|
||||||
- request
|
- request
|
||||||
parameters:
|
parameters:
|
||||||
@@ -2949,9 +2945,9 @@ paths:
|
|||||||
get:
|
get:
|
||||||
summary: Update a requests status
|
summary: Update a requests status
|
||||||
description: |
|
description: |
|
||||||
Updates a requests status to approved or declined. Also returns the request in JSON format
|
Updates a requests status to approved or declined. Also returns the request in a JSON object.
|
||||||
|
|
||||||
Requires the `MANAGE_REQUESTS` permission or `ADMIN`
|
Requires the `MANAGE_REQUESTS` permission or `ADMIN`.
|
||||||
tags:
|
tags:
|
||||||
- request
|
- request
|
||||||
parameters:
|
parameters:
|
||||||
@@ -2978,8 +2974,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/MediaRequest'
|
$ref: '#/components/schemas/MediaRequest'
|
||||||
/movie/{movieId}:
|
/movie/{movieId}:
|
||||||
get:
|
get:
|
||||||
summary: Request movie details
|
summary: Get movie details
|
||||||
description: Returns back full movie details in JSON format
|
description: Returns full movie details in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- movies
|
- movies
|
||||||
parameters:
|
parameters:
|
||||||
@@ -3003,8 +2999,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/MovieDetails'
|
$ref: '#/components/schemas/MovieDetails'
|
||||||
/movie/{movieId}/recommendations:
|
/movie/{movieId}/recommendations:
|
||||||
get:
|
get:
|
||||||
summary: Request recommended movies
|
summary: Get recommended movies
|
||||||
description: Returns list of recommended movies based on provided movie ID in JSON format
|
description: Returns list of recommended movies based on provided movie ID in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- movies
|
- movies
|
||||||
parameters:
|
parameters:
|
||||||
@@ -3048,8 +3044,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/MovieResult'
|
$ref: '#/components/schemas/MovieResult'
|
||||||
/movie/{movieId}/similar:
|
/movie/{movieId}/similar:
|
||||||
get:
|
get:
|
||||||
summary: Request similar movies
|
summary: Get similar movies
|
||||||
description: Returns list of similar movies based on provided movie ID in JSON format
|
description: Returns list of similar movies based on the provided movieId in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- movies
|
- movies
|
||||||
parameters:
|
parameters:
|
||||||
@@ -3093,8 +3089,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/MovieResult'
|
$ref: '#/components/schemas/MovieResult'
|
||||||
/movie/{movieId}/ratings:
|
/movie/{movieId}/ratings:
|
||||||
get:
|
get:
|
||||||
summary: Get ratings for the provided movie id
|
summary: Get movie ratings
|
||||||
description: Returns ratings based on provided movie ID in JSON format
|
description: Returns ratings based on the provided movieId in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- movies
|
- movies
|
||||||
parameters:
|
parameters:
|
||||||
@@ -3135,8 +3131,8 @@ paths:
|
|||||||
enum: ['Spilled', 'Upright']
|
enum: ['Spilled', 'Upright']
|
||||||
/tv/{tvId}:
|
/tv/{tvId}:
|
||||||
get:
|
get:
|
||||||
summary: Request tv details
|
summary: Get TV details
|
||||||
description: Returns back full tv details in JSON format
|
description: Returns full TV details in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- tv
|
- tv
|
||||||
parameters:
|
parameters:
|
||||||
@@ -3160,8 +3156,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/TvDetails'
|
$ref: '#/components/schemas/TvDetails'
|
||||||
/tv/{tvId}/season/{seasonId}:
|
/tv/{tvId}/season/{seasonId}:
|
||||||
get:
|
get:
|
||||||
summary: Return season details with episode list
|
summary: Get season details and episode list
|
||||||
description: Returns back season details with a list of episodes
|
description: Returns season details with a list of episodes in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- tv
|
- tv
|
||||||
parameters:
|
parameters:
|
||||||
@@ -3191,8 +3187,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/Season'
|
$ref: '#/components/schemas/Season'
|
||||||
/tv/{tvId}/recommendations:
|
/tv/{tvId}/recommendations:
|
||||||
get:
|
get:
|
||||||
summary: Request recommended tv series
|
summary: Get recommended TV series
|
||||||
description: Returns list of recommended tv series based on provided tv ID in JSON format
|
description: Returns list of recommended TV series based on the provided tvId in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- tv
|
- tv
|
||||||
parameters:
|
parameters:
|
||||||
@@ -3215,7 +3211,7 @@ paths:
|
|||||||
example: en
|
example: en
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: List of tv series
|
description: List of TV series
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
@@ -3236,8 +3232,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/TvResult'
|
$ref: '#/components/schemas/TvResult'
|
||||||
/tv/{tvId}/similar:
|
/tv/{tvId}/similar:
|
||||||
get:
|
get:
|
||||||
summary: Request similar tv series
|
summary: Get similar TV series
|
||||||
description: Returns list of similar tv series based on provided movie ID in JSON format
|
description: Returns list of similar TV series based on the provided tvId in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- tv
|
- tv
|
||||||
parameters:
|
parameters:
|
||||||
@@ -3260,7 +3256,7 @@ paths:
|
|||||||
example: en
|
example: en
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: List of tv series
|
description: List of TV series
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
@@ -3281,8 +3277,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/TvResult'
|
$ref: '#/components/schemas/TvResult'
|
||||||
/tv/{tvId}/ratings:
|
/tv/{tvId}/ratings:
|
||||||
get:
|
get:
|
||||||
summary: Get ratings for the provided tv id
|
summary: Get TV ratings
|
||||||
description: Returns ratings based on provided tv ID in JSON format
|
description: Returns ratings based on provided tvId in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- tv
|
- tv
|
||||||
parameters:
|
parameters:
|
||||||
@@ -3317,8 +3313,8 @@ paths:
|
|||||||
enum: ['Rotten', 'Fresh']
|
enum: ['Rotten', 'Fresh']
|
||||||
/person/{personId}:
|
/person/{personId}:
|
||||||
get:
|
get:
|
||||||
summary: Request person details
|
summary: Get person details
|
||||||
description: Returns details of the person based on provided person ID in JSON format
|
description: Returns person details based on provided personId in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- person
|
- person
|
||||||
parameters:
|
parameters:
|
||||||
@@ -3343,8 +3339,8 @@ paths:
|
|||||||
|
|
||||||
/person/{personId}/combined_credits:
|
/person/{personId}/combined_credits:
|
||||||
get:
|
get:
|
||||||
summary: Request combined credits of person
|
summary: Get combined credits
|
||||||
description: Returns the combined credits of the person based on the provided person ID in JSON format
|
description: Returns the person's combined credits based on the provided personId in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- person
|
- person
|
||||||
parameters:
|
parameters:
|
||||||
@@ -3361,7 +3357,7 @@ paths:
|
|||||||
example: en
|
example: en
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: Returned combined credts
|
description: Returned combined credits
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
@@ -3379,8 +3375,8 @@ paths:
|
|||||||
type: number
|
type: number
|
||||||
/media:
|
/media:
|
||||||
get:
|
get:
|
||||||
summary: Return all media
|
summary: Return media
|
||||||
description: Returns all media (can be filtered and limited) in JSON format
|
description: Returns all media (can be filtered and limited) in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- media
|
- media
|
||||||
parameters:
|
parameters:
|
||||||
@@ -3424,7 +3420,7 @@ paths:
|
|||||||
$ref: '#/components/schemas/MediaInfo'
|
$ref: '#/components/schemas/MediaInfo'
|
||||||
/media/{mediaId}:
|
/media/{mediaId}:
|
||||||
delete:
|
delete:
|
||||||
summary: Delete a media item
|
summary: Delete media item
|
||||||
description: Removes a media item. The `MANAGE_REQUESTS` permission is required to perform this action.
|
description: Removes a media item. The `MANAGE_REQUESTS` permission is required to perform this action.
|
||||||
tags:
|
tags:
|
||||||
- media
|
- media
|
||||||
@@ -3441,8 +3437,8 @@ paths:
|
|||||||
description: Succesfully removed media item
|
description: Succesfully removed media item
|
||||||
/collection/{collectionId}:
|
/collection/{collectionId}:
|
||||||
get:
|
get:
|
||||||
summary: Request collection details
|
summary: Get collection details
|
||||||
description: Returns back full collection details in JSON format
|
description: Returns full collection details in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- collection
|
- collection
|
||||||
parameters:
|
parameters:
|
||||||
@@ -3466,8 +3462,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/Collection'
|
$ref: '#/components/schemas/Collection'
|
||||||
/service/radarr:
|
/service/radarr:
|
||||||
get:
|
get:
|
||||||
summary: Returns non-sensitive radarr server list
|
summary: Get non-sensitive Radarr server list
|
||||||
description: Returns a list of radarr servers, both ID and name in JSON format
|
description: Returns a list of Radarr server IDs and names in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- service
|
- service
|
||||||
responses:
|
responses:
|
||||||
@@ -3481,8 +3477,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/RadarrSettings'
|
$ref: '#/components/schemas/RadarrSettings'
|
||||||
/service/radarr/{radarrId}:
|
/service/radarr/{radarrId}:
|
||||||
get:
|
get:
|
||||||
summary: Returns radarr server quality profiles and root folders
|
summary: Get Radarr server quality profiles and root folders
|
||||||
description: Returns a radarr server quality profile and root folder details in JSON format
|
description: Returns a Radarr server's quality profile and root folder details in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- service
|
- service
|
||||||
parameters:
|
parameters:
|
||||||
@@ -3506,8 +3502,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/ServiceProfile'
|
$ref: '#/components/schemas/ServiceProfile'
|
||||||
/service/sonarr:
|
/service/sonarr:
|
||||||
get:
|
get:
|
||||||
summary: Returns non-sensitive sonarr server list
|
summary: Get non-sensitive Sonarr server list
|
||||||
description: Returns a list of sonarr servers, both ID and name in JSON format
|
description: Returns a list of Sonarr server IDs and names in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- service
|
- service
|
||||||
responses:
|
responses:
|
||||||
@@ -3521,8 +3517,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/SonarrSettings'
|
$ref: '#/components/schemas/SonarrSettings'
|
||||||
/service/sonarr/{sonarrId}:
|
/service/sonarr/{sonarrId}:
|
||||||
get:
|
get:
|
||||||
summary: Returns sonarr server quality profiles and root folders
|
summary: Get Sonarr server quality profiles and root folders
|
||||||
description: Returns a sonarr server quality profile and root folder details in JSON format
|
description: Returns a Sonarr server's quality profile and root folder details in a JSON object.
|
||||||
tags:
|
tags:
|
||||||
- service
|
- service
|
||||||
parameters:
|
parameters:
|
||||||
@@ -3546,8 +3542,8 @@ paths:
|
|||||||
$ref: '#/components/schemas/ServiceProfile'
|
$ref: '#/components/schemas/ServiceProfile'
|
||||||
/service/sonarr/lookup/{tmdbId}:
|
/service/sonarr/lookup/{tmdbId}:
|
||||||
get:
|
get:
|
||||||
summary: Returns a list of series from sonarr
|
summary: Get series from Sonarr
|
||||||
description: Returns a list of series returned by searching for the name in sonarr
|
description: Returns a list of series returned by searching for the name in Sonarr.
|
||||||
tags:
|
tags:
|
||||||
- service
|
- service
|
||||||
parameters:
|
parameters:
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ const LOCAL_PATH = path.join(__dirname, '../../config/anime-list.xml');
|
|||||||
|
|
||||||
const mappingRegexp = new RegExp(/;[0-9]+-([0-9]+)/g);
|
const mappingRegexp = new RegExp(/;[0-9]+-([0-9]+)/g);
|
||||||
|
|
||||||
// Anime-List xml files are community maintained mappings that Hama agent uses to map AniDB IDs to tvdb/tmdb IDs
|
// Anime-List xml files are community maintained mappings that Hama agent uses to map AniDB IDs to TVDB/TMDb IDs
|
||||||
// https://github.com/Anime-Lists/anime-lists/
|
// https://github.com/Anime-Lists/anime-lists/
|
||||||
|
|
||||||
interface AnimeMapping {
|
interface AnimeMapping {
|
||||||
@@ -125,7 +125,7 @@ class AnimeListMapping {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// some movies do not have mapping-list, so map episode 1,2,3,..to movies
|
// some movies do not have mapping-list, so map episode 1,2,3,..to movies
|
||||||
// movies must have imdbid or tmdbid
|
// movies must have imdbId or tmdbId
|
||||||
const hasImdb = imdbIds.length > 1 || imdbIds[0] !== undefined;
|
const hasImdb = imdbIds.length > 1 || imdbIds[0] !== undefined;
|
||||||
if ((hasImdb || tmdbId) && anime.$.defaulttvdbseason === '0') {
|
if ((hasImdb || tmdbId) && anime.$.defaulttvdbseason === '0') {
|
||||||
if (!this.specials[tvdbId]) {
|
if (!this.specials[tvdbId]) {
|
||||||
|
|||||||
@@ -192,7 +192,7 @@ class PlexTvAPI {
|
|||||||
return account.data.user;
|
return account.data.user;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logger.error(
|
logger.error(
|
||||||
`Something went wrong getting the account from plex.tv: ${e.message}`,
|
`Something went wrong while getting the account from plex.tv: ${e.message}`,
|
||||||
{ label: 'Plex.tv API' }
|
{ label: 'Plex.tv API' }
|
||||||
);
|
);
|
||||||
throw new Error('Invalid auth token');
|
throw new Error('Invalid auth token');
|
||||||
|
|||||||
@@ -216,7 +216,7 @@ class SonarrAPI {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logger.error('Something went wrong adding a series to Sonarr', {
|
logger.error('Something went wrong while adding a series to Sonarr.', {
|
||||||
label: 'Sonarr API',
|
label: 'Sonarr API',
|
||||||
errorMessage: e.message,
|
errorMessage: e.message,
|
||||||
error: e,
|
error: e,
|
||||||
@@ -232,7 +232,7 @@ class SonarrAPI {
|
|||||||
|
|
||||||
return response.data;
|
return response.data;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logger.error('Something went wrong retrieving Sonarr profiles', {
|
logger.error('Something went wrong while retrieving Sonarr profiles.', {
|
||||||
label: 'Sonarr API',
|
label: 'Sonarr API',
|
||||||
message: e.message,
|
message: e.message,
|
||||||
});
|
});
|
||||||
@@ -246,10 +246,14 @@ class SonarrAPI {
|
|||||||
|
|
||||||
return response.data;
|
return response.data;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logger.error('Something went wrong retrieving Sonarr root folders', {
|
logger.error(
|
||||||
label: 'Sonarr API',
|
'Something went wrong while retrieving Sonarr root folders.',
|
||||||
message: e.message,
|
{
|
||||||
});
|
label: 'Sonarr API',
|
||||||
|
message: e.message,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
throw new Error('Failed to get root folders');
|
throw new Error('Failed to get root folders');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -898,11 +898,11 @@ class TheMovieDb {
|
|||||||
}
|
}
|
||||||
|
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`[TMDB] Failed to find a tv show with the provided TVDB id: ${tvdbId}`
|
`[TMDB] Failed to find a TV show with the provided TVDB ID: ${tvdbId}`
|
||||||
);
|
);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`[TMDB] Failed to get tv show by external tvdb ID: ${e.message}`
|
`[TMDB] Failed to get TV show using the external TVDB ID: ${e.message}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -556,7 +556,7 @@ export class MediaRequest {
|
|||||||
|
|
||||||
if (this.profileId && this.profileId !== qualityProfile) {
|
if (this.profileId && this.profileId !== qualityProfile) {
|
||||||
qualityProfile = this.profileId;
|
qualityProfile = this.profileId;
|
||||||
logger.info(`Request has an override profile id: ${qualityProfile}`, {
|
logger.info(`Request has an override profile ID: ${qualityProfile}`, {
|
||||||
label: 'Media Request',
|
label: 'Media Request',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ class JobPlexSync {
|
|||||||
newMedia.tmdbId = tmdbMovie.id;
|
newMedia.tmdbId = tmdbMovie.id;
|
||||||
}
|
}
|
||||||
if (!newMedia.tmdbId) {
|
if (!newMedia.tmdbId) {
|
||||||
throw new Error('Unable to find TMDB ID');
|
throw new Error('Unable to find TMDb ID');
|
||||||
}
|
}
|
||||||
|
|
||||||
const has4k = metadata.Media.some(
|
const has4k = metadata.Media.some(
|
||||||
@@ -181,14 +181,14 @@ class JobPlexSync {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!tmdbMovieId) {
|
if (!tmdbMovieId) {
|
||||||
throw new Error('Unable to find TMDB ID');
|
throw new Error('Unable to find TMDb ID');
|
||||||
}
|
}
|
||||||
|
|
||||||
await this.processMovieWithId(plexitem, tmdbMovie, tmdbMovieId);
|
await this.processMovieWithId(plexitem, tmdbMovie, tmdbMovieId);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.log(
|
this.log(
|
||||||
`Failed to process plex item. ratingKey: ${plexitem.ratingKey}`,
|
`Failed to process Plex item. ratingKey: ${plexitem.ratingKey}`,
|
||||||
'error',
|
'error',
|
||||||
{
|
{
|
||||||
errorMessage: e.message,
|
errorMessage: e.message,
|
||||||
@@ -342,7 +342,7 @@ class JobPlexSync {
|
|||||||
await this.processHamaSpecials(metadata, Number(tvdbId));
|
await this.processHamaSpecials(metadata, Number(tvdbId));
|
||||||
} else {
|
} else {
|
||||||
this.log(
|
this.log(
|
||||||
`Hama id ${plexitem.guid} detected, but library agent is not set to Hama`,
|
`Hama ID ${plexitem.guid} detected, but library agent is not set to Hama`,
|
||||||
'warn'
|
'warn'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -352,7 +352,7 @@ class JobPlexSync {
|
|||||||
|
|
||||||
if (!animeList.isLoaded()) {
|
if (!animeList.isLoaded()) {
|
||||||
this.log(
|
this.log(
|
||||||
`Hama id ${plexitem.guid} detected, but library agent is not set to Hama`,
|
`Hama ID ${plexitem.guid} detected, but library agent is not set to Hama`,
|
||||||
'warn'
|
'warn'
|
||||||
);
|
);
|
||||||
} else if (matched?.[1]) {
|
} else if (matched?.[1]) {
|
||||||
@@ -408,7 +408,7 @@ class JobPlexSync {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lets get the available seasons from plex
|
// Lets get the available seasons from Plex
|
||||||
const seasons = tvShow.seasons;
|
const seasons = tvShow.seasons;
|
||||||
const media = await this.getExisting(tvShow.id, MediaType.TV);
|
const media = await this.getExisting(tvShow.id, MediaType.TV);
|
||||||
|
|
||||||
@@ -436,7 +436,7 @@ class JobPlexSync {
|
|||||||
|
|
||||||
// Check if we found the matching season and it has all the available episodes
|
// Check if we found the matching season and it has all the available episodes
|
||||||
if (matchedPlexSeason) {
|
if (matchedPlexSeason) {
|
||||||
// If we have a matched plex season, get its children metadata so we can check details
|
// If we have a matched Plex season, get its children metadata so we can check details
|
||||||
const episodes = await this.plexClient.getChildrenMetadata(
|
const episodes = await this.plexClient.getChildrenMetadata(
|
||||||
matchedPlexSeason.ratingKey
|
matchedPlexSeason.ratingKey
|
||||||
);
|
);
|
||||||
@@ -603,7 +603,7 @@ class JobPlexSync {
|
|||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.log(
|
this.log(
|
||||||
`Failed to process plex item. ratingKey: ${
|
`Failed to process Plex item. ratingKey: ${
|
||||||
plexitem.grandparentRatingKey ??
|
plexitem.grandparentRatingKey ??
|
||||||
plexitem.parentRatingKey ??
|
plexitem.parentRatingKey ??
|
||||||
plexitem.ratingKey
|
plexitem.ratingKey
|
||||||
|
|||||||
@@ -186,7 +186,7 @@ authRoutes.get('/logout', (req, res, next) => {
|
|||||||
if (err) {
|
if (err) {
|
||||||
return next({
|
return next({
|
||||||
status: 500,
|
status: 500,
|
||||||
message: 'Something went wrong while attempting to logout',
|
message: 'Something went wrong while attempting to sign out.',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import TitleCard from '../TitleCard';
|
|||||||
import Transition from '../Transition';
|
import Transition from '../Transition';
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
overviewunavailable: 'Overview unavailable',
|
overviewunavailable: 'Overview unavailable.',
|
||||||
overview: 'Overview',
|
overview: 'Overview',
|
||||||
movies: 'Movies',
|
movies: 'Movies',
|
||||||
numberofmovies: 'Number of Movies: {count}',
|
numberofmovies: 'Number of Movies: {count}',
|
||||||
|
|||||||
@@ -7,6 +7,11 @@ import {
|
|||||||
import TitleCard from '../../TitleCard';
|
import TitleCard from '../../TitleCard';
|
||||||
import useVerticalScroll from '../../../hooks/useVerticalScroll';
|
import useVerticalScroll from '../../../hooks/useVerticalScroll';
|
||||||
import PersonCard from '../../PersonCard';
|
import PersonCard from '../../PersonCard';
|
||||||
|
import { defineMessages, useIntl } from 'react-intl';
|
||||||
|
|
||||||
|
const messages = defineMessages({
|
||||||
|
noresults: 'No results.',
|
||||||
|
});
|
||||||
|
|
||||||
interface ListViewProps {
|
interface ListViewProps {
|
||||||
items?: (TvResult | MovieResult | PersonResult)[];
|
items?: (TvResult | MovieResult | PersonResult)[];
|
||||||
@@ -23,12 +28,13 @@ const ListView: React.FC<ListViewProps> = ({
|
|||||||
onScrollBottom,
|
onScrollBottom,
|
||||||
isReachingEnd,
|
isReachingEnd,
|
||||||
}) => {
|
}) => {
|
||||||
|
const intl = useIntl();
|
||||||
useVerticalScroll(onScrollBottom, !isLoading && !isEmpty && !isReachingEnd);
|
useVerticalScroll(onScrollBottom, !isLoading && !isEmpty && !isReachingEnd);
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{isEmpty && (
|
{isEmpty && (
|
||||||
<div className="w-full mt-64 text-2xl text-center text-gray-400">
|
<div className="w-full mt-64 text-2xl text-center text-gray-400">
|
||||||
No Results
|
{intl.formatMessage(messages.noresults)}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
<ul className="grid grid-cols-2 gap-6 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-7 2xl:grid-cols-8">
|
<ul className="grid grid-cols-2 gap-6 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-7 2xl:grid-cols-8">
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import { Permission, useUser } from '../../hooks/useUser';
|
|||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
alphawarning:
|
alphawarning:
|
||||||
'This is ALPHA software. Almost everything is bound to be nearly broken and/or unstable. Please report issues to the Overseerr Github!',
|
'This is ALPHA software. Features may be broken and/or unstable. Please report issues on GitHub!',
|
||||||
});
|
});
|
||||||
|
|
||||||
const Layout: React.FC = ({ children }) => {
|
const Layout: React.FC = ({ children }) => {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ const messages = defineMessages({
|
|||||||
password: 'Password',
|
password: 'Password',
|
||||||
validationemailrequired: 'Not a valid email address',
|
validationemailrequired: 'Not a valid email address',
|
||||||
validationpasswordrequired: 'Password required',
|
validationpasswordrequired: 'Password required',
|
||||||
loginerror: 'Something went wrong when trying to sign in',
|
loginerror: 'Something went wrong while trying to sign in.',
|
||||||
signingin: 'Signing in…',
|
signingin: 'Signing in…',
|
||||||
signin: 'Sign in',
|
signin: 'Sign in',
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ import Accordion from '../Common/Accordion';
|
|||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
signinheader: 'Sign in to continue',
|
signinheader: 'Sign in to continue',
|
||||||
signinwithplex: 'Sign in with Plex',
|
signinwithplex: 'Use your Plex account',
|
||||||
signinwithoverseerr: 'Sign in with Overseerr',
|
signinwithoverseerr: 'Use your Overseerr account',
|
||||||
});
|
});
|
||||||
|
|
||||||
const Login: React.FC = () => {
|
const Login: React.FC = () => {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import { MediaStatus } from '../../../server/constants/media';
|
|||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
recommendations: 'Recommendations',
|
recommendations: 'Recommendations',
|
||||||
recommendationssubtext: 'If you liked {title}, you might also like...',
|
recommendationssubtext: 'If you liked {title}, you might also like…',
|
||||||
});
|
});
|
||||||
|
|
||||||
interface SearchResult {
|
interface SearchResult {
|
||||||
|
|||||||
@@ -51,13 +51,13 @@ const messages = defineMessages({
|
|||||||
available: 'Available',
|
available: 'Available',
|
||||||
unavailable: 'Unavailable',
|
unavailable: 'Unavailable',
|
||||||
pending: 'Pending',
|
pending: 'Pending',
|
||||||
overviewunavailable: 'Overview unavailable',
|
overviewunavailable: 'Overview unavailable.',
|
||||||
manageModalTitle: 'Manage Movie',
|
manageModalTitle: 'Manage Movie',
|
||||||
manageModalRequests: 'Requests',
|
manageModalRequests: 'Requests',
|
||||||
manageModalNoRequests: 'No Requests',
|
manageModalNoRequests: 'No Requests',
|
||||||
manageModalClearMedia: 'Clear All Media Data',
|
manageModalClearMedia: 'Clear All Media Data',
|
||||||
manageModalClearMediaWarning:
|
manageModalClearMediaWarning:
|
||||||
'This will remove all media data including all requests for this item. This action is irreversible. If this item exists in your Plex library, the media information will be recreated next sync.',
|
'This will irreversibly remove all data for this movie, including any requests. If this item exists in your Plex library, the media information will be recreated during the next sync.',
|
||||||
approve: 'Approve',
|
approve: 'Approve',
|
||||||
decline: 'Decline',
|
decline: 'Decline',
|
||||||
studio: 'Studio',
|
studio: 'Studio',
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import PlexOAuth from '../../utils/plex';
|
|||||||
import { defineMessages, useIntl } from 'react-intl';
|
import { defineMessages, useIntl } from 'react-intl';
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
signinwithplex: 'Sign in',
|
signinwithplex: 'Sign In',
|
||||||
loading: 'Loading…',
|
loading: 'Loading…',
|
||||||
signingin: 'Signing in…',
|
signingin: 'Signing in…',
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ const messages = defineMessages({
|
|||||||
requestedby: 'Requested by {username}',
|
requestedby: 'Requested by {username}',
|
||||||
seasons: 'Seasons',
|
seasons: 'Seasons',
|
||||||
notavailable: 'N/A',
|
notavailable: 'N/A',
|
||||||
failedretry: 'Something went wrong retrying the request',
|
failedretry: 'Something went wrong while retrying the request.',
|
||||||
});
|
});
|
||||||
|
|
||||||
const isMovie = (movie: MovieDetails | TvDetails): movie is MovieDetails => {
|
const isMovie = (movie: MovieDetails | TvDetails): movie is MovieDetails => {
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ const messages = defineMessages({
|
|||||||
filterAll: 'All',
|
filterAll: 'All',
|
||||||
filterPending: 'Pending',
|
filterPending: 'Pending',
|
||||||
filterApproved: 'Approved',
|
filterApproved: 'Approved',
|
||||||
noresults: 'No Results.',
|
noresults: 'No results.',
|
||||||
showallrequests: 'Show All Requests',
|
showallrequests: 'Show All Requests',
|
||||||
sortAdded: 'Request Date',
|
sortAdded: 'Request Date',
|
||||||
sortModified: 'Last Modified',
|
sortModified: 'Last Modified',
|
||||||
|
|||||||
@@ -28,18 +28,18 @@ const messages = defineMessages({
|
|||||||
request4ktitle: 'Request {title} in 4K',
|
request4ktitle: 'Request {title} in 4K',
|
||||||
close: 'Close',
|
close: 'Close',
|
||||||
cancel: 'Cancel Request',
|
cancel: 'Cancel Request',
|
||||||
cancelling: 'Cancelling...',
|
cancelling: 'Cancelling…',
|
||||||
pendingrequest: 'Pending request for {title}',
|
pendingrequest: 'Pending request for {title}',
|
||||||
pending4krequest: 'Pending request for {title} in 4K',
|
pending4krequest: 'Pending request for {title} in 4K',
|
||||||
requesting: 'Requesting...',
|
requesting: 'Requesting…',
|
||||||
request: 'Request',
|
request: 'Request',
|
||||||
request4k: 'Request 4K',
|
request4k: 'Request 4K',
|
||||||
requestfrom: 'There is currently a pending request from {username}',
|
requestfrom: 'There is a pending request from {username}.',
|
||||||
request4kfrom: 'There is currently a pending 4K request from {username}',
|
request4kfrom: 'There is a pending 4K request from {username}.',
|
||||||
errorediting: 'Something went wrong editing the request.',
|
errorediting: 'Something went wrong while editing the request.',
|
||||||
requestedited: 'Request edited.',
|
requestedited: 'Request edited.',
|
||||||
autoapproval: 'Auto Approval',
|
autoapproval: 'Automatic Approval',
|
||||||
requesterror: 'Something went wrong when trying to request media.',
|
requesterror: 'Something went wrong while submitting the request.',
|
||||||
});
|
});
|
||||||
|
|
||||||
interface RequestModalProps extends React.HTMLAttributes<HTMLDivElement> {
|
interface RequestModalProps extends React.HTMLAttributes<HTMLDivElement> {
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ import { SonarrSeries } from '../../../../server/api/sonarr';
|
|||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
next: 'Next',
|
next: 'Next',
|
||||||
notvdbid: 'Manual match required',
|
notvdbid: 'Manual Match Required',
|
||||||
notvdbiddescription:
|
notvdbiddescription:
|
||||||
"We couldn't automatically match your request. Please select the correct match from the list below.",
|
"We couldn't automatically match your request. Please select the correct match from the list below:",
|
||||||
nosummary: 'No summary for this title was found.',
|
nosummary: 'No summary for this title was found.',
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ const messages = defineMessages({
|
|||||||
requestSuccess: '<strong>{title}</strong> successfully requested!',
|
requestSuccess: '<strong>{title}</strong> successfully requested!',
|
||||||
requesttitle: 'Request {title}',
|
requesttitle: 'Request {title}',
|
||||||
request4ktitle: 'Request {title} in 4K',
|
request4ktitle: 'Request {title} in 4K',
|
||||||
requesting: 'Requesting...',
|
requesting: 'Requesting…',
|
||||||
requestseasons:
|
requestseasons:
|
||||||
'Request {seasonCount} {seasonCount, plural, one {Season} other {Seasons}}',
|
'Request {seasonCount} {seasonCount, plural, one {Season} other {Seasons}}',
|
||||||
selectseason: 'Select season(s)',
|
selectseason: 'Select season(s)',
|
||||||
@@ -37,15 +37,15 @@ const messages = defineMessages({
|
|||||||
seasonnumber: 'Season {number}',
|
seasonnumber: 'Season {number}',
|
||||||
extras: 'Extras',
|
extras: 'Extras',
|
||||||
notrequested: 'Not Requested',
|
notrequested: 'Not Requested',
|
||||||
errorediting: 'Something went wrong editing the request.',
|
errorediting: 'Something went wrong while editing the request.',
|
||||||
requestedited: 'Request edited.',
|
requestedited: 'Request edited.',
|
||||||
requestcancelled: 'Request cancelled.',
|
requestcancelled: 'Request cancelled.',
|
||||||
autoapproval: 'Auto Approval',
|
autoapproval: 'Automatic Approval',
|
||||||
requesterror: 'Something went wrong when trying to request media.',
|
requesterror: 'Something went wrong while submitting the request.',
|
||||||
next: 'Next',
|
next: 'Next',
|
||||||
notvdbid: 'No TVDB id was found connected on TMDB',
|
notvdbid: 'No TVDB ID was found for the item on TMDb.',
|
||||||
notvdbiddescription:
|
notvdbiddescription:
|
||||||
'Either add the TVDB id to TMDB and come back later, or select the correct match below.',
|
'Either add the TVDB ID to TMDb and try again later, or select the correct match below:',
|
||||||
backbutton: 'Back',
|
backbutton: 'Back',
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { useToasts } from 'react-toast-notifications';
|
|||||||
import { defineMessages, useIntl } from 'react-intl';
|
import { defineMessages, useIntl } from 'react-intl';
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
copied: 'Copied API key to clipboard',
|
copied: 'Copied API key to clipboard.',
|
||||||
});
|
});
|
||||||
|
|
||||||
const CopyButton: React.FC<{ textToCopy: string }> = ({ textToCopy }) => {
|
const CopyButton: React.FC<{ textToCopy: string }> = ({ textToCopy }) => {
|
||||||
|
|||||||
@@ -11,11 +11,11 @@ import NotificationTypeSelector from '../../NotificationTypeSelector';
|
|||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
save: 'Save Changes',
|
save: 'Save Changes',
|
||||||
saving: 'Saving...',
|
saving: 'Saving…',
|
||||||
agentenabled: 'Agent Enabled',
|
agentenabled: 'Enable Agent',
|
||||||
webhookUrl: 'Webhook URL',
|
webhookUrl: 'Webhook URL',
|
||||||
validationWebhookUrlRequired: 'You must provide a webhook URL',
|
validationWebhookUrlRequired: 'You must provide a webhook URL',
|
||||||
webhookUrlPlaceholder: 'Server Settings -> Integrations -> Webhooks',
|
webhookUrlPlaceholder: 'Server Settings → Integrations → Webhooks',
|
||||||
discordsettingssaved: 'Discord notification settings saved!',
|
discordsettingssaved: 'Discord notification settings saved!',
|
||||||
discordsettingsfailed: 'Discord notification settings failed to save.',
|
discordsettingsfailed: 'Discord notification settings failed to save.',
|
||||||
testsent: 'Test notification sent!',
|
testsent: 'Test notification sent!',
|
||||||
|
|||||||
@@ -11,12 +11,12 @@ import NotificationTypeSelector from '../../NotificationTypeSelector';
|
|||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
save: 'Save Changes',
|
save: 'Save Changes',
|
||||||
saving: 'Saving...',
|
saving: 'Saving…',
|
||||||
validationFromRequired: 'You must provide an email sender address',
|
validationFromRequired: 'You must provide a sender address',
|
||||||
validationSmtpHostRequired: 'You must provide an SMTP host',
|
validationSmtpHostRequired: 'You must provide an SMTP host',
|
||||||
validationSmtpPortRequired: 'You must provide an SMTP port',
|
validationSmtpPortRequired: 'You must provide an SMTP port',
|
||||||
agentenabled: 'Agent Enabled',
|
agentenabled: 'Enable Agent',
|
||||||
emailsender: 'Email Sender Address',
|
emailsender: 'Sender Address',
|
||||||
smtpHost: 'SMTP Host',
|
smtpHost: 'SMTP Host',
|
||||||
smtpPort: 'SMTP Port',
|
smtpPort: 'SMTP Port',
|
||||||
enableSsl: 'Enable SSL',
|
enableSsl: 'Enable SSL',
|
||||||
@@ -28,7 +28,7 @@ const messages = defineMessages({
|
|||||||
testsent: 'Test notification sent!',
|
testsent: 'Test notification sent!',
|
||||||
allowselfsigned: 'Allow Self-Signed Certificates',
|
allowselfsigned: 'Allow Self-Signed Certificates',
|
||||||
ssldisabletip:
|
ssldisabletip:
|
||||||
'SSL should be disabled on standard TLS connections (Port 587)',
|
'SSL should be disabled on standard TLS connections (port 587)',
|
||||||
senderName: 'Sender Name',
|
senderName: 'Sender Name',
|
||||||
notificationtypes: 'Notification Types',
|
notificationtypes: 'Notification Types',
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ import NotificationTypeSelector from '../../../NotificationTypeSelector';
|
|||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
save: 'Save Changes',
|
save: 'Save Changes',
|
||||||
saving: 'Saving...',
|
saving: 'Saving…',
|
||||||
agentenabled: 'Agent Enabled',
|
agentenabled: 'Enable Agent',
|
||||||
accessToken: 'Access Token',
|
accessToken: 'Access Token',
|
||||||
userToken: 'User Token',
|
userToken: 'User Token',
|
||||||
validationAccessTokenRequired: 'You must provide an access token.',
|
validationAccessTokenRequired: 'You must provide an access token.',
|
||||||
@@ -22,7 +22,7 @@ const messages = defineMessages({
|
|||||||
pushoversettingsfailed: 'Pushover notification settings failed to save.',
|
pushoversettingsfailed: 'Pushover notification settings failed to save.',
|
||||||
testsent: 'Test notification sent!',
|
testsent: 'Test notification sent!',
|
||||||
test: 'Test',
|
test: 'Test',
|
||||||
settinguppushover: 'Setting up Pushover Notifications',
|
settinguppushover: 'Setting Up Pushover Notifications',
|
||||||
settinguppushoverDescription:
|
settinguppushoverDescription:
|
||||||
'To setup Pushover you need to <RegisterApplicationLink>register an application</RegisterApplicationLink> and get the access token.\
|
'To setup Pushover you need to <RegisterApplicationLink>register an application</RegisterApplicationLink> and get the access token.\
|
||||||
When setting up the application you can use one of the icons in the <IconLink>public folder</IconLink> on github.\
|
When setting up the application you can use one of the icons in the <IconLink>public folder</IconLink> on github.\
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ import NotificationTypeSelector from '../../../NotificationTypeSelector';
|
|||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
save: 'Save Changes',
|
save: 'Save Changes',
|
||||||
saving: 'Saving...',
|
saving: 'Saving…',
|
||||||
agentenabled: 'Agent Enabled',
|
agentenabled: 'Enable Agent',
|
||||||
webhookUrl: 'Webhook URL',
|
webhookUrl: 'Webhook URL',
|
||||||
validationWebhookUrlRequired: 'You must provide a webhook URL',
|
validationWebhookUrlRequired: 'You must provide a webhook URL',
|
||||||
webhookUrlPlaceholder: 'Webhook URL',
|
webhookUrlPlaceholder: 'Webhook URL',
|
||||||
@@ -21,7 +21,7 @@ const messages = defineMessages({
|
|||||||
slacksettingsfailed: 'Slack notification settings failed to save.',
|
slacksettingsfailed: 'Slack notification settings failed to save.',
|
||||||
testsent: 'Test notification sent!',
|
testsent: 'Test notification sent!',
|
||||||
test: 'Test',
|
test: 'Test',
|
||||||
settingupslack: 'Setting up Slack Notifications',
|
settingupslack: 'Setting Up Slack Notifications',
|
||||||
settingupslackDescription:
|
settingupslackDescription:
|
||||||
'To use Slack notifications, you will need to create an <WebhookLink>Incoming Webhook</WebhookLink> integration and use the provided webhook URL below.',
|
'To use Slack notifications, you will need to create an <WebhookLink>Incoming Webhook</WebhookLink> integration and use the provided webhook URL below.',
|
||||||
notificationtypes: 'Notification Types',
|
notificationtypes: 'Notification Types',
|
||||||
|
|||||||
@@ -12,20 +12,20 @@ import NotificationTypeSelector from '../../NotificationTypeSelector';
|
|||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
save: 'Save Changes',
|
save: 'Save Changes',
|
||||||
saving: 'Saving...',
|
saving: 'Saving…',
|
||||||
agentenabled: 'Agent Enabled',
|
agentenabled: 'Enable Agent',
|
||||||
botAPI: 'Bot API',
|
botAPI: 'Bot API',
|
||||||
chatId: 'Chat Id',
|
chatId: 'Chat ID',
|
||||||
validationBotAPIRequired: 'You must provide a Bot API key.',
|
validationBotAPIRequired: 'You must provide a Bot API key.',
|
||||||
validationChatIdRequired: 'You must provide a Chat id.',
|
validationChatIdRequired: 'You must provide a Chat ID.',
|
||||||
telegramsettingssaved: 'Telegram notification settings saved!',
|
telegramsettingssaved: 'Telegram notification settings saved!',
|
||||||
telegramsettingsfailed: 'Telegram notification settings failed to save.',
|
telegramsettingsfailed: 'Telegram notification settings failed to save.',
|
||||||
testsent: 'Test notification sent!',
|
testsent: 'Test notification sent!',
|
||||||
test: 'Test',
|
test: 'Test',
|
||||||
settinguptelegram: 'Setting up Telegram Notifications',
|
settinguptelegram: 'Setting Up Telegram Notifications',
|
||||||
settinguptelegramDescription:
|
settinguptelegramDescription:
|
||||||
'To setup Telegram you need to <CreateBotLink>create a bot</CreateBotLink> and get the bot API key.\
|
'To setup Telegram you need to <CreateBotLink>create a bot</CreateBotLink> and get the bot API key.\
|
||||||
Additionally, you need the chat id for the chat you want the bot to send notifications to.\
|
Additionally, you need the chat ID for the chat you want the bot to send notifications to.\
|
||||||
You can do this by adding <GetIdBotLink>@get_id_bot</GetIdBotLink> to the chat or group chat.',
|
You can do this by adding <GetIdBotLink>@get_id_bot</GetIdBotLink> to the chat or group chat.',
|
||||||
notificationtypes: 'Notification Types',
|
notificationtypes: 'Notification Types',
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -33,8 +33,8 @@ const defaultPayload = {
|
|||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
save: 'Save Changes',
|
save: 'Save Changes',
|
||||||
saving: 'Saving...',
|
saving: 'Saving…',
|
||||||
agentenabled: 'Agent Enabled',
|
agentenabled: 'Enable Agent',
|
||||||
webhookUrl: 'Webhook URL',
|
webhookUrl: 'Webhook URL',
|
||||||
authheader: 'Authorization Header',
|
authheader: 'Authorization Header',
|
||||||
validationWebhookUrlRequired: 'You must provide a webhook URL',
|
validationWebhookUrlRequired: 'You must provide a webhook URL',
|
||||||
|
|||||||
@@ -19,12 +19,12 @@ const messages = defineMessages({
|
|||||||
validationProfileRequired: 'You must select a profile',
|
validationProfileRequired: 'You must select a profile',
|
||||||
validationMinimumAvailabilityRequired: 'You must select minimum availability',
|
validationMinimumAvailabilityRequired: 'You must select minimum availability',
|
||||||
toastRadarrTestSuccess: 'Radarr connection established!',
|
toastRadarrTestSuccess: 'Radarr connection established!',
|
||||||
toastRadarrTestFailure: 'Failed to connect to Radarr Server',
|
toastRadarrTestFailure: 'Failed to connect to Radarr.',
|
||||||
saving: 'Saving...',
|
saving: 'Saving…',
|
||||||
save: 'Save Changes',
|
save: 'Save Changes',
|
||||||
add: 'Add Server',
|
add: 'Add Server',
|
||||||
test: 'Test',
|
test: 'Test',
|
||||||
testing: 'Testing...',
|
testing: 'Testing…',
|
||||||
defaultserver: 'Default Server',
|
defaultserver: 'Default Server',
|
||||||
servername: 'Server Name',
|
servername: 'Server Name',
|
||||||
servernamePlaceholder: 'A Radarr Server',
|
servernamePlaceholder: 'A Radarr Server',
|
||||||
@@ -32,20 +32,20 @@ const messages = defineMessages({
|
|||||||
port: 'Port',
|
port: 'Port',
|
||||||
ssl: 'SSL',
|
ssl: 'SSL',
|
||||||
apiKey: 'API Key',
|
apiKey: 'API Key',
|
||||||
apiKeyPlaceholder: 'Your Radarr API Key',
|
apiKeyPlaceholder: 'Your Radarr API key',
|
||||||
baseUrl: 'Base URL',
|
baseUrl: 'Base URL',
|
||||||
baseUrlPlaceholder: 'Example: /radarr',
|
baseUrlPlaceholder: 'Example: /radarr',
|
||||||
qualityprofile: 'Quality Profile',
|
qualityprofile: 'Quality Profile',
|
||||||
rootfolder: 'Root Folder',
|
rootfolder: 'Root Folder',
|
||||||
minimumAvailability: 'Minimum Availability',
|
minimumAvailability: 'Minimum Availability',
|
||||||
server4k: '4K Server',
|
server4k: '4K Server',
|
||||||
selectQualityProfile: 'Select a Quality Profile',
|
selectQualityProfile: 'Select quality profile',
|
||||||
selectRootFolder: 'Select a Root Folder',
|
selectRootFolder: 'Select root folder',
|
||||||
selectMinimumAvailability: 'Select minimum availability',
|
selectMinimumAvailability: 'Select minimum availability',
|
||||||
loadingprofiles: 'Loading quality profiles…',
|
loadingprofiles: 'Loading quality profiles…',
|
||||||
testFirstQualityProfiles: 'Test your connection to load quality profiles',
|
testFirstQualityProfiles: 'Test connection to load quality profiles',
|
||||||
loadingrootfolders: 'Loading root folders…',
|
loadingrootfolders: 'Loading root folders…',
|
||||||
testFirstRootFolders: 'Test your connection to load root folders',
|
testFirstRootFolders: 'Test connection to load root folders',
|
||||||
});
|
});
|
||||||
|
|
||||||
interface TestResponse {
|
interface TestResponse {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import globalMessages from '../../../../i18n/globalMessages';
|
|||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
releases: 'Releases',
|
releases: 'Releases',
|
||||||
releasedataMissing: 'Release data missing. Is GitHub down?',
|
releasedataMissing: 'Release data unavailable. Is GitHub down?',
|
||||||
versionChangelog: 'Version Changelog',
|
versionChangelog: 'Version Changelog',
|
||||||
viewongithub: 'View on GitHub',
|
viewongithub: 'View on GitHub',
|
||||||
latestversion: 'Latest Version',
|
latestversion: 'Latest Version',
|
||||||
@@ -20,7 +20,7 @@ const messages = defineMessages({
|
|||||||
viewchangelog: 'View Changelog',
|
viewchangelog: 'View Changelog',
|
||||||
runningDevelop: 'You are running a develop version of Overseerr!',
|
runningDevelop: 'You are running a develop version of Overseerr!',
|
||||||
runningDevelopMessage:
|
runningDevelopMessage:
|
||||||
'The changes in your version will not be available below. Please look at the <GithubLink>GitHub repository</GithubLink> for latest updates.',
|
'The changes in your version will not be available below. Please see the <GithubLink>GitHub repository</GithubLink> for latest updates.',
|
||||||
});
|
});
|
||||||
|
|
||||||
const REPO_RELEASE_API =
|
const REPO_RELEASE_API =
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ const messages = defineMessages({
|
|||||||
clickheretojoindiscord: 'Click here to join our Discord server.',
|
clickheretojoindiscord: 'Click here to join our Discord server.',
|
||||||
timezone: 'Timezone',
|
timezone: 'Timezone',
|
||||||
supportoverseerr: 'Support Overseerr',
|
supportoverseerr: 'Support Overseerr',
|
||||||
helppaycoffee: 'Help pay for coffee',
|
helppaycoffee: 'Help Pay for Coffee',
|
||||||
documentation: 'Documentation',
|
documentation: 'Documentation',
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@ const SettingsAbout: React.FC = () => {
|
|||||||
<div className="mb-8">
|
<div className="mb-8">
|
||||||
<List title={intl.formatMessage(messages.supportoverseerr)}>
|
<List title={intl.formatMessage(messages.supportoverseerr)}>
|
||||||
<List.Item
|
<List.Item
|
||||||
title={`☕️ ${intl.formatMessage(messages.helppaycoffee)}`}
|
title={`${intl.formatMessage(messages.helppaycoffee)} ☕️`}
|
||||||
>
|
>
|
||||||
<a
|
<a
|
||||||
href="https://patreon.com/overseerr"
|
href="https://patreon.com/overseerr"
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ const SettingsLogs: React.FC = () => {
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="text-sm leading-loose text-gray-300">
|
<div className="text-sm leading-loose text-gray-300">
|
||||||
Logs page is still being built. For now, you can access your logs
|
This page is still being built. For now, you can access your logs
|
||||||
directly in <code>stdout</code> (container logs) or looking in{' '}
|
directly in <code>stdout</code> (container logs) or looking in{' '}
|
||||||
<code>/app/config/logs/overseerr.log</code>
|
<code>/app/config/logs/overseerr.log</code>.
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -16,17 +16,17 @@ import PermissionEdit from '../PermissionEdit';
|
|||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
generalsettings: 'General Settings',
|
generalsettings: 'General Settings',
|
||||||
generalsettingsDescription:
|
generalsettingsDescription:
|
||||||
'These are settings related to general Overseerr configuration.',
|
'Configure global and default settings for Overseerr.',
|
||||||
save: 'Save Changes',
|
save: 'Save Changes',
|
||||||
saving: 'Saving...',
|
saving: 'Saving…',
|
||||||
apikey: 'API Key',
|
apikey: 'API Key',
|
||||||
applicationurl: 'Application URL',
|
applicationurl: 'Application URL',
|
||||||
toastApiKeySuccess: 'New API Key generated!',
|
toastApiKeySuccess: 'New API key generated!',
|
||||||
toastApiKeyFailure: 'Something went wrong generating a new API Key.',
|
toastApiKeyFailure: 'Something went wrong while generating a new API key.',
|
||||||
toastSettingsSuccess: 'Settings saved.',
|
toastSettingsSuccess: 'Settings successfully saved!',
|
||||||
toastSettingsFailure: 'Something went wrong saving settings.',
|
toastSettingsFailure: 'Something went wrong while saving settings.',
|
||||||
defaultPermissions: 'Default User Permissions',
|
defaultPermissions: 'Default User Permissions',
|
||||||
hideAvailable: 'Hide available media',
|
hideAvailable: 'Hide Available Media',
|
||||||
csrfProtection: 'Enable CSRF Protection',
|
csrfProtection: 'Enable CSRF Protection',
|
||||||
csrfProtectionTip:
|
csrfProtectionTip:
|
||||||
'Sets external API access to read-only (Overseerr must be reloaded for changes to take effect)',
|
'Sets external API access to read-only (Overseerr must be reloaded for changes to take effect)',
|
||||||
|
|||||||
@@ -20,14 +20,14 @@ const messages = defineMessages({
|
|||||||
saving: 'Saving…',
|
saving: 'Saving…',
|
||||||
notificationsettings: 'Notification Settings',
|
notificationsettings: 'Notification Settings',
|
||||||
notificationsettingsDescription:
|
notificationsettingsDescription:
|
||||||
'Global notification configuration. The settings below affect all notification agents.',
|
'Configure global notification settings. The options below will apply to all notification agents.',
|
||||||
notificationAgentsSettings: 'Notification Agents',
|
notificationAgentsSettings: 'Notification Agents',
|
||||||
notificationAgentSettingsDescription:
|
notificationAgentSettingsDescription:
|
||||||
'Here you can pick and choose what types of notifications to send and through what types of services.',
|
'Choose the types of notifications to send, and which notification agents to use.',
|
||||||
notificationsettingssaved: 'Notification settings saved!',
|
notificationsettingssaved: 'Notification settings saved!',
|
||||||
notificationsettingsfailed: 'Notification settings failed to save.',
|
notificationsettingsfailed: 'Notification settings failed to save.',
|
||||||
enablenotifications: 'Enable Notifications',
|
enablenotifications: 'Enable Notifications',
|
||||||
autoapprovedrequests: 'Send notifications for auto-approved requests',
|
autoapprovedrequests: 'Send Notifications for Auto-Approved Requests',
|
||||||
});
|
});
|
||||||
|
|
||||||
interface SettingsRoute {
|
interface SettingsRoute {
|
||||||
|
|||||||
@@ -16,43 +16,44 @@ import Alert from '../Common/Alert';
|
|||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
plexsettings: 'Plex Settings',
|
plexsettings: 'Plex Settings',
|
||||||
plexsettingsDescription:
|
plexsettingsDescription:
|
||||||
'Configure the settings for your Plex server. Overseerr uses your Plex server to scan your library at an interval and see what content is available.',
|
'Configure the settings for your Plex server. Overseerr scans your Plex libraries to see what content is available.',
|
||||||
servername: 'Server Name (Retrieved from Plex)',
|
servername: 'Server Name',
|
||||||
|
servernameTip: 'Automatically retrieved from Plex after saving',
|
||||||
servernamePlaceholder: 'Plex Server Name',
|
servernamePlaceholder: 'Plex Server Name',
|
||||||
serverpreset: 'Available Server',
|
serverpreset: 'Server',
|
||||||
serverpresetPlaceholder: 'Plex Server (Retrieved Automatically)',
|
serverpresetPlaceholder: 'Plex Server',
|
||||||
serverLocal: 'local',
|
serverLocal: 'local',
|
||||||
serverRemote: 'remote',
|
serverRemote: 'remote',
|
||||||
serverConnected: 'connected',
|
serverConnected: 'connected',
|
||||||
serverpresetManualMessage: 'Manually configure',
|
serverpresetManualMessage: 'Manually configure',
|
||||||
serverpresetRefreshing: 'Retrieving servers...',
|
serverpresetRefreshing: 'Retrieving servers…',
|
||||||
serverpresetLoad: 'Press button to load available servers',
|
serverpresetLoad: 'Press the button to load available servers',
|
||||||
toastPlexRefresh: 'Retrieving server list from Plex',
|
toastPlexRefresh: 'Retrieving server list from Plex',
|
||||||
toastPlexRefreshSuccess: 'Retrieved server list from Plex',
|
toastPlexRefreshSuccess: 'Retrieved server list from Plex',
|
||||||
toastPlexRefreshFailure: 'Unable to retrieve server list from Plex',
|
toastPlexRefreshFailure: 'Unable to retrieve server list from Plex',
|
||||||
toastPlexConnecting: 'Attempting to connect to Plex server',
|
toastPlexConnecting: 'Attempting to connect to Plex server',
|
||||||
toastPlexConnectingSuccess: 'Connected to Plex server',
|
toastPlexConnectingSuccess: 'Connected to Plex server',
|
||||||
toastPlexConnectingFailure: 'Unable to connect to Plex server',
|
toastPlexConnectingFailure: 'Unable to connect to Plex server',
|
||||||
settingUpPlex: 'Setting up Plex',
|
settingUpPlex: 'Setting Up Plex',
|
||||||
settingUpPlexDescription:
|
settingUpPlexDescription:
|
||||||
'To setup Plex you can enter your details manually, \
|
'To set up Plex, you can either enter your details manually \
|
||||||
or choose from one of the available servers retrieved from <RegisterPlexTVLink>plex.tv</RegisterPlexTVLink>.\
|
or select a server retrieved from <RegisterPlexTVLink>plex.tv</RegisterPlexTVLink>.\
|
||||||
Press the button next to the dropdown to retrieve available servers and check connectivity.',
|
Press the button to the right of the dropdown to check connectivity and retrieve available servers.',
|
||||||
hostname: 'Hostname/IP',
|
hostname: 'Hostname/IP',
|
||||||
port: 'Port',
|
port: 'Port',
|
||||||
ssl: 'SSL',
|
ssl: 'SSL',
|
||||||
timeout: 'Timeout',
|
timeout: 'Timeout',
|
||||||
ms: 'ms',
|
ms: 'ms',
|
||||||
save: 'Save Changes',
|
save: 'Save Changes',
|
||||||
saving: 'Saving...',
|
saving: 'Saving…',
|
||||||
plexlibraries: 'Plex Libraries',
|
plexlibraries: 'Plex Libraries',
|
||||||
plexlibrariesDescription:
|
plexlibrariesDescription:
|
||||||
'These are the libraries Overseerr will scan for titles. If you see no libraries listed, you will need to run at least one sync by clicking the button below. You must first configure and save your plex connection settings before you will be able to retrieve your libraries.',
|
'The libraries Overseerr scans for titles. Set up and save your Plex connection settings, then click the button below if no libraries are listed.',
|
||||||
syncing: 'Syncing',
|
syncing: 'Syncing',
|
||||||
sync: 'Sync Plex Libraries',
|
sync: 'Sync Plex Libraries',
|
||||||
manualscan: 'Manual Library Scan',
|
manualscan: 'Manual Library Scan',
|
||||||
manualscanDescription:
|
manualscanDescription:
|
||||||
"Normally, this will only be run once every 24 hours. Overseerr will check your Plex server's recently added more aggressively. If this is your first time configuring Plex, a one time full manual library scan is recommended!",
|
"Normally, this will only be run once every 24 hours. Overseerr will check your Plex server's recently added more aggressively. If this is your first time configuring Plex, a one-time full manual library scan is recommended!",
|
||||||
notrunning: 'Not Running',
|
notrunning: 'Not Running',
|
||||||
currentlibrary: 'Current Library: {name}',
|
currentlibrary: 'Current Library: {name}',
|
||||||
librariesRemaining: 'Libraries Remaining: {count}',
|
librariesRemaining: 'Libraries Remaining: {count}',
|
||||||
@@ -347,29 +348,6 @@ const SettingsPlex: React.FC<SettingsPlexProps> = ({ onComplete }) => {
|
|||||||
return (
|
return (
|
||||||
<form onSubmit={handleSubmit}>
|
<form onSubmit={handleSubmit}>
|
||||||
<div className="mt-6 sm:mt-5">
|
<div className="mt-6 sm:mt-5">
|
||||||
<div className="sm:grid sm:grid-cols-3 sm:gap-4 sm:items-start sm:border-t sm:border-gray-800">
|
|
||||||
<label
|
|
||||||
htmlFor="name"
|
|
||||||
className="block text-sm font-medium leading-5 text-gray-400 sm:mt-px"
|
|
||||||
>
|
|
||||||
<FormattedMessage {...messages.servername} />
|
|
||||||
</label>
|
|
||||||
<div className="mt-1 sm:mt-0 sm:col-span-2">
|
|
||||||
<div className="flex max-w-lg rounded-md shadow-sm">
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
id="name"
|
|
||||||
name="name"
|
|
||||||
placeholder={intl.formatMessage(
|
|
||||||
messages.servernamePlaceholder
|
|
||||||
)}
|
|
||||||
value={data?.name}
|
|
||||||
readOnly
|
|
||||||
className="flex-1 block w-full min-w-0 transition duration-150 ease-in-out bg-gray-700 border border-gray-500 rounded-md form-input sm:text-sm sm:leading-5"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div className="mt-6 sm:grid sm:grid-cols-3 sm:gap-4 sm:items-start sm:border-t sm:border-gray-800">
|
<div className="mt-6 sm:grid sm:grid-cols-3 sm:gap-4 sm:items-start sm:border-t sm:border-gray-800">
|
||||||
<label
|
<label
|
||||||
htmlFor="preset"
|
htmlFor="preset"
|
||||||
@@ -455,6 +433,36 @@ const SettingsPlex: React.FC<SettingsPlexProps> = ({ onComplete }) => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div className="sm:grid sm:grid-cols-3 sm:gap-4 sm:items-start sm:border-t sm:border-gray-800">
|
||||||
|
<label
|
||||||
|
htmlFor="name"
|
||||||
|
className="block text-sm font-medium leading-5 text-gray-400 sm:mt-px"
|
||||||
|
>
|
||||||
|
<div className="flex flex-col">
|
||||||
|
<span className="mr-2">
|
||||||
|
<FormattedMessage {...messages.servername} />
|
||||||
|
</span>
|
||||||
|
<span className="text-gray-500">
|
||||||
|
<FormattedMessage {...messages.servernameTip} />
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</label>
|
||||||
|
<div className="mt-1 sm:mt-0 sm:col-span-2">
|
||||||
|
<div className="flex max-w-lg rounded-md shadow-sm">
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
id="name"
|
||||||
|
name="name"
|
||||||
|
placeholder={intl.formatMessage(
|
||||||
|
messages.servernamePlaceholder
|
||||||
|
)}
|
||||||
|
value={data?.name}
|
||||||
|
readOnly
|
||||||
|
className="flex-1 block w-full min-w-0 transition duration-150 ease-in-out bg-gray-700 border border-gray-500 rounded-md form-input sm:text-sm sm:leading-5"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div>
|
<div>
|
||||||
<div className="mt-6 sm:grid sm:grid-cols-3 sm:gap-4 sm:items-start sm:border-t sm:border-gray-800">
|
<div className="mt-6 sm:grid sm:grid-cols-3 sm:gap-4 sm:items-start sm:border-t sm:border-gray-800">
|
||||||
|
|||||||
@@ -18,10 +18,10 @@ import Alert from '../Common/Alert';
|
|||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
radarrsettings: 'Radarr Settings',
|
radarrsettings: 'Radarr Settings',
|
||||||
radarrSettingsDescription:
|
radarrSettingsDescription:
|
||||||
'Configure your Radarr connection below. You can have multiple Radarr configurations but only two can be active as defaults at any time (one for standard HD and one for 4K). Administrators can override which server will be used when a new request is made.',
|
'Configure your Radarr connection below. You can have multiple Radarr configurations but only two can be active as defaults at any time (one for standard HD and one for 4K). Administrators can override the server will be used when a new request is made.',
|
||||||
sonarrsettings: 'Sonarr Settings',
|
sonarrsettings: 'Sonarr Settings',
|
||||||
sonarrSettingsDescription:
|
sonarrSettingsDescription:
|
||||||
'Configure your Sonarr connection below. You can have multiple Sonarr configurations but only two can be active as defaults at any time (one for standard HD and one for 4K). Administrators can override which server will be used when a new request is made.',
|
'Configure your Sonarr connection below. You can have multiple Sonarr configurations but only two can be active as defaults at any time (one for standard HD and one for 4K). Administrators can override the server will be used when a new request is made.',
|
||||||
deleteserverconfirm: 'Are you sure you want to delete this server?',
|
deleteserverconfirm: 'Are you sure you want to delete this server?',
|
||||||
edit: 'Edit',
|
edit: 'Edit',
|
||||||
delete: 'Delete',
|
delete: 'Delete',
|
||||||
|
|||||||
@@ -17,13 +17,13 @@ const messages = defineMessages({
|
|||||||
validationApiKeyRequired: 'You must provide an API key',
|
validationApiKeyRequired: 'You must provide an API key',
|
||||||
validationRootFolderRequired: 'You must select a root folder',
|
validationRootFolderRequired: 'You must select a root folder',
|
||||||
validationProfileRequired: 'You must select a profile',
|
validationProfileRequired: 'You must select a profile',
|
||||||
toastRadarrTestSuccess: 'Sonarr connection established!',
|
toastSonarrTestSuccess: 'Sonarr connection established!',
|
||||||
toastRadarrTestFailure: 'Failed to connect to Sonarr Server',
|
toastSonarrTestFailure: 'Failed to connect to Sonarr.',
|
||||||
saving: 'Saving...',
|
saving: 'Saving…',
|
||||||
save: 'Save Changes',
|
save: 'Save Changes',
|
||||||
add: 'Add Server',
|
add: 'Add Server',
|
||||||
test: 'Test',
|
test: 'Test',
|
||||||
testing: 'Testing...',
|
testing: 'Testing…',
|
||||||
defaultserver: 'Default Server',
|
defaultserver: 'Default Server',
|
||||||
servername: 'Server Name',
|
servername: 'Server Name',
|
||||||
servernamePlaceholder: 'A Sonarr Server',
|
servernamePlaceholder: 'A Sonarr Server',
|
||||||
@@ -31,7 +31,7 @@ const messages = defineMessages({
|
|||||||
port: 'Port',
|
port: 'Port',
|
||||||
ssl: 'SSL',
|
ssl: 'SSL',
|
||||||
apiKey: 'API Key',
|
apiKey: 'API Key',
|
||||||
apiKeyPlaceholder: 'Your Sonarr API Key',
|
apiKeyPlaceholder: 'Your Sonarr API key',
|
||||||
baseUrl: 'Base URL',
|
baseUrl: 'Base URL',
|
||||||
baseUrlPlaceholder: 'Example: /sonarr',
|
baseUrlPlaceholder: 'Example: /sonarr',
|
||||||
qualityprofile: 'Quality Profile',
|
qualityprofile: 'Quality Profile',
|
||||||
@@ -40,12 +40,12 @@ const messages = defineMessages({
|
|||||||
animerootfolder: 'Anime Root Folder',
|
animerootfolder: 'Anime Root Folder',
|
||||||
seasonfolders: 'Season Folders',
|
seasonfolders: 'Season Folders',
|
||||||
server4k: '4K Server',
|
server4k: '4K Server',
|
||||||
selectQualityProfile: 'Select a Quality Profile',
|
selectQualityProfile: 'Select quality profile',
|
||||||
selectRootFolder: 'Select a Root Folder',
|
selectRootFolder: 'Select root folder',
|
||||||
loadingprofiles: 'Loading quality profiles…',
|
loadingprofiles: 'Loading quality profiles…',
|
||||||
testFirstQualityProfiles: 'Test your connection to load quality profiles',
|
testFirstQualityProfiles: 'Test connection to load quality profiles',
|
||||||
loadingrootfolders: 'Loading root folders…',
|
loadingrootfolders: 'Loading root folders…',
|
||||||
testFirstRootFolders: 'Test your connection to load root folders',
|
testFirstRootFolders: 'Test connection to load root folders',
|
||||||
});
|
});
|
||||||
|
|
||||||
interface TestResponse {
|
interface TestResponse {
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import LanguagePicker from '../Layout/LanguagePicker';
|
|||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
finish: 'Finish Setup',
|
finish: 'Finish Setup',
|
||||||
finishing: 'Finishing...',
|
finishing: 'Finishing…',
|
||||||
continue: 'Continue',
|
continue: 'Continue',
|
||||||
loginwithplex: 'Login with Plex',
|
loginwithplex: 'Login with Plex',
|
||||||
configureplex: 'Configure Plex',
|
configureplex: 'Configure Plex',
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import TitleCard from '../TitleCard';
|
|||||||
import { defineMessages, FormattedMessage } from 'react-intl';
|
import { defineMessages, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
noresults: 'No Results',
|
noresults: 'No results.',
|
||||||
});
|
});
|
||||||
|
|
||||||
interface SliderProps {
|
interface SliderProps {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import useSettings from '../../hooks/useSettings';
|
|||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
recommendations: 'Recommendations',
|
recommendations: 'Recommendations',
|
||||||
recommendationssubtext: 'If you liked {title}, you might also like...',
|
recommendationssubtext: 'If you liked {title}, you might also like…',
|
||||||
});
|
});
|
||||||
|
|
||||||
interface SearchResult {
|
interface SearchResult {
|
||||||
|
|||||||
@@ -50,13 +50,13 @@ const messages = defineMessages({
|
|||||||
available: 'Available',
|
available: 'Available',
|
||||||
unavailable: 'Unavailable',
|
unavailable: 'Unavailable',
|
||||||
pending: 'Pending',
|
pending: 'Pending',
|
||||||
overviewunavailable: 'Overview unavailable',
|
overviewunavailable: 'Overview unavailable.',
|
||||||
manageModalTitle: 'Manage Series',
|
manageModalTitle: 'Manage Series',
|
||||||
manageModalRequests: 'Requests',
|
manageModalRequests: 'Requests',
|
||||||
manageModalNoRequests: 'No Requests',
|
manageModalNoRequests: 'No Requests',
|
||||||
manageModalClearMedia: 'Clear All Media Data',
|
manageModalClearMedia: 'Clear All Media Data',
|
||||||
manageModalClearMediaWarning:
|
manageModalClearMediaWarning:
|
||||||
'This will remove all media data including all requests for this item. This action is irreversible. If this item exists in your Plex library, the media information will be recreated next sync.',
|
'This will irreversibly remove all data for this TV series, including any requests. If this item exists in your Plex library, the media information will be recreated during the next sync.',
|
||||||
approve: 'Approve',
|
approve: 'Approve',
|
||||||
decline: 'Decline',
|
decline: 'Decline',
|
||||||
showtype: 'Show Type',
|
showtype: 'Show Type',
|
||||||
|
|||||||
@@ -20,9 +20,9 @@ export const messages = defineMessages({
|
|||||||
email: 'Email',
|
email: 'Email',
|
||||||
permissions: 'Permissions',
|
permissions: 'Permissions',
|
||||||
save: 'Save',
|
save: 'Save',
|
||||||
saving: 'Saving...',
|
saving: 'Saving…',
|
||||||
usersaved: 'User saved',
|
usersaved: 'User saved',
|
||||||
userfail: 'Something went wrong saving the user.',
|
userfail: 'Something went wrong while saving the user.',
|
||||||
});
|
});
|
||||||
|
|
||||||
const UserEdit: React.FC = () => {
|
const UserEdit: React.FC = () => {
|
||||||
@@ -75,7 +75,9 @@ const UserEdit: React.FC = () => {
|
|||||||
appearance: 'error',
|
appearance: 'error',
|
||||||
autoDismiss: true,
|
autoDismiss: true,
|
||||||
});
|
});
|
||||||
throw new Error(`Something went wrong saving the user: ${e.message}`);
|
throw new Error(
|
||||||
|
`Something went wrong while saving the user: ${e.message}`
|
||||||
|
);
|
||||||
} finally {
|
} finally {
|
||||||
revalidate();
|
revalidate();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,10 +23,10 @@ import BulkEditModal from './BulkEditModal';
|
|||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
userlist: 'User List',
|
userlist: 'User List',
|
||||||
importfromplex: 'Import Users From Plex',
|
importfromplex: 'Import Users from Plex',
|
||||||
importfromplexerror: 'Something went wrong importing users from Plex',
|
importfromplexerror: 'Something went wrong while importing users from Plex.',
|
||||||
importedfromplex:
|
importedfromplex:
|
||||||
'{userCount, plural, =0 {No new users} one {# new user} other {# new users}} imported from Plex',
|
'{userCount, plural, =0 {No new users} one {# new user} other {# new users}} imported from Plex.',
|
||||||
username: 'Username',
|
username: 'Username',
|
||||||
totalrequests: 'Total Requests',
|
totalrequests: 'Total Requests',
|
||||||
usertype: 'User Type',
|
usertype: 'User Type',
|
||||||
@@ -41,7 +41,7 @@ const messages = defineMessages({
|
|||||||
plexuser: 'Plex User',
|
plexuser: 'Plex User',
|
||||||
deleteuser: 'Delete User',
|
deleteuser: 'Delete User',
|
||||||
userdeleted: 'User deleted',
|
userdeleted: 'User deleted',
|
||||||
userdeleteerror: 'Something went wrong deleting the user',
|
userdeleteerror: 'Something went wrong while deleting the user.',
|
||||||
deleteconfirm:
|
deleteconfirm:
|
||||||
'Are you sure you want to delete this user? All existing request data from this user will be removed.',
|
'Are you sure you want to delete this user? All existing request data from this user will be removed.',
|
||||||
localuser: 'Local User',
|
localuser: 'Local User',
|
||||||
@@ -49,16 +49,16 @@ const messages = defineMessages({
|
|||||||
createuser: 'Create User',
|
createuser: 'Create User',
|
||||||
creating: 'Creating',
|
creating: 'Creating',
|
||||||
create: 'Create',
|
create: 'Create',
|
||||||
validationemailrequired: 'Must enter a valid email address.',
|
validationemailrequired: 'Must enter a valid email address',
|
||||||
validationpasswordminchars:
|
validationpasswordminchars:
|
||||||
'Password is too short - should be 8 chars minimum.',
|
'Password is too short; should be a minimum of 8 characters',
|
||||||
usercreatedfailed: 'Something went wrong when trying to create the user',
|
usercreatedfailed: 'Something went wrong while creating the user.',
|
||||||
usercreatedsuccess: 'Successfully created the user',
|
usercreatedsuccess: 'User created successfully!',
|
||||||
email: 'Email Address',
|
email: 'Email Address',
|
||||||
password: 'Password',
|
password: 'Password',
|
||||||
passwordinfo: 'Password Info',
|
passwordinfo: 'Password Information',
|
||||||
passwordinfodescription:
|
passwordinfodescription:
|
||||||
'Email notification settings need to be enabled and setup in order to use the auto generated passwords',
|
'Email notifications need to be configured and enabled in order to automatically generate passwords.',
|
||||||
autogeneratepassword: 'Automatically generate password',
|
autogeneratepassword: 'Automatically generate password',
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -2,12 +2,13 @@
|
|||||||
"components.CollectionDetails.movies": "Movies",
|
"components.CollectionDetails.movies": "Movies",
|
||||||
"components.CollectionDetails.numberofmovies": "Number of Movies: {count}",
|
"components.CollectionDetails.numberofmovies": "Number of Movies: {count}",
|
||||||
"components.CollectionDetails.overview": "Overview",
|
"components.CollectionDetails.overview": "Overview",
|
||||||
"components.CollectionDetails.overviewunavailable": "Overview unavailable",
|
"components.CollectionDetails.overviewunavailable": "Overview unavailable.",
|
||||||
"components.CollectionDetails.request": "Request",
|
"components.CollectionDetails.request": "Request",
|
||||||
"components.CollectionDetails.requestSuccess": "<strong>{title}</strong> successfully requested!",
|
"components.CollectionDetails.requestSuccess": "<strong>{title}</strong> successfully requested!",
|
||||||
"components.CollectionDetails.requestcollection": "Request Collection",
|
"components.CollectionDetails.requestcollection": "Request Collection",
|
||||||
"components.CollectionDetails.requesting": "Requesting…",
|
"components.CollectionDetails.requesting": "Requesting…",
|
||||||
"components.CollectionDetails.requestswillbecreated": "The following titles will have requests created for them:",
|
"components.CollectionDetails.requestswillbecreated": "The following titles will have requests created for them:",
|
||||||
|
"components.Common.ListView.noresults": "No results.",
|
||||||
"components.Discover.discovermovies": "Popular Movies",
|
"components.Discover.discovermovies": "Popular Movies",
|
||||||
"components.Discover.discovertv": "Popular Series",
|
"components.Discover.discovertv": "Popular Series",
|
||||||
"components.Discover.nopending": "No Pending Requests",
|
"components.Discover.nopending": "No Pending Requests",
|
||||||
@@ -25,15 +26,15 @@
|
|||||||
"components.Layout.Sidebar.settings": "Settings",
|
"components.Layout.Sidebar.settings": "Settings",
|
||||||
"components.Layout.Sidebar.users": "Users",
|
"components.Layout.Sidebar.users": "Users",
|
||||||
"components.Layout.UserDropdown.signout": "Sign Out",
|
"components.Layout.UserDropdown.signout": "Sign Out",
|
||||||
"components.Layout.alphawarning": "This is ALPHA software. Almost everything is bound to be nearly broken and/or unstable. Please report issues to the Overseerr GitHub!",
|
"components.Layout.alphawarning": "This is ALPHA software. Features may be broken and/or unstable. Please report issues on GitHub!",
|
||||||
"components.Login.email": "Email Address",
|
"components.Login.email": "Email Address",
|
||||||
"components.Login.loginerror": "Something went wrong when trying to sign in",
|
"components.Login.loginerror": "Something went wrong while trying to sign in.",
|
||||||
"components.Login.password": "Password",
|
"components.Login.password": "Password",
|
||||||
"components.Login.signin": "Sign in",
|
"components.Login.signin": "Sign In",
|
||||||
"components.Login.signingin": "Signing in…",
|
"components.Login.signingin": "Signing in…",
|
||||||
"components.Login.signinheader": "Sign in to continue",
|
"components.Login.signinheader": "Sign in to continue",
|
||||||
"components.Login.signinwithoverseerr": "Sign in with Overseerr",
|
"components.Login.signinwithoverseerr": "Use your Overseerr account",
|
||||||
"components.Login.signinwithplex": "Sign in with Plex",
|
"components.Login.signinwithplex": "Use your Plex account",
|
||||||
"components.Login.validationemailrequired": "Not a valid email address",
|
"components.Login.validationemailrequired": "Not a valid email address",
|
||||||
"components.Login.validationpasswordrequired": "Password required",
|
"components.Login.validationpasswordrequired": "Password required",
|
||||||
"components.MediaSlider.ShowMoreCard.seemore": "See More",
|
"components.MediaSlider.ShowMoreCard.seemore": "See More",
|
||||||
@@ -46,13 +47,13 @@
|
|||||||
"components.MovieDetails.cast": "Cast",
|
"components.MovieDetails.cast": "Cast",
|
||||||
"components.MovieDetails.decline": "Decline",
|
"components.MovieDetails.decline": "Decline",
|
||||||
"components.MovieDetails.manageModalClearMedia": "Clear All Media Data",
|
"components.MovieDetails.manageModalClearMedia": "Clear All Media Data",
|
||||||
"components.MovieDetails.manageModalClearMediaWarning": "This will remove all media data including all requests for this item irreversibly. If this item exists in your Plex library, the media info will be recreated next sync.",
|
"components.MovieDetails.manageModalClearMediaWarning": "This will irreversibly remove all data for this movie, including any requests. If this item exists in your Plex library, the media information will be recreated during the next sync.",
|
||||||
"components.MovieDetails.manageModalNoRequests": "No Requests",
|
"components.MovieDetails.manageModalNoRequests": "No Requests",
|
||||||
"components.MovieDetails.manageModalRequests": "Requests",
|
"components.MovieDetails.manageModalRequests": "Requests",
|
||||||
"components.MovieDetails.manageModalTitle": "Manage Movie",
|
"components.MovieDetails.manageModalTitle": "Manage Movie",
|
||||||
"components.MovieDetails.originallanguage": "Original Language",
|
"components.MovieDetails.originallanguage": "Original Language",
|
||||||
"components.MovieDetails.overview": "Overview",
|
"components.MovieDetails.overview": "Overview",
|
||||||
"components.MovieDetails.overviewunavailable": "Overview unavailable",
|
"components.MovieDetails.overviewunavailable": "Overview unavailable.",
|
||||||
"components.MovieDetails.pending": "Pending",
|
"components.MovieDetails.pending": "Pending",
|
||||||
"components.MovieDetails.recommendations": "Recommendations",
|
"components.MovieDetails.recommendations": "Recommendations",
|
||||||
"components.MovieDetails.recommendationssubtext": "If you liked {title}, you might also like…",
|
"components.MovieDetails.recommendationssubtext": "If you liked {title}, you might also like…",
|
||||||
@@ -81,13 +82,13 @@
|
|||||||
"components.PermissionEdit.admin": "Admin",
|
"components.PermissionEdit.admin": "Admin",
|
||||||
"components.PermissionEdit.adminDescription": "Full administrator access. Bypasses all permission checks.",
|
"components.PermissionEdit.adminDescription": "Full administrator access. Bypasses all permission checks.",
|
||||||
"components.PermissionEdit.advancedrequest": "Advanced Requests",
|
"components.PermissionEdit.advancedrequest": "Advanced Requests",
|
||||||
"components.PermissionEdit.advancedrequestDescription": "Grants permission to use advanced request options. (Ex. Changing servers/profiles/paths)",
|
"components.PermissionEdit.advancedrequestDescription": "Grants permission to use advanced request options; e.g. changing servers, profiles, or paths.",
|
||||||
"components.PermissionEdit.autoapprove": "Auto Approve",
|
"components.PermissionEdit.autoapprove": "Auto-Approve",
|
||||||
"components.PermissionEdit.autoapproveDescription": "Grants auto approval for any requests made by this user.",
|
"components.PermissionEdit.autoapproveDescription": "Grants automatic approval for all requests made by this user.",
|
||||||
"components.PermissionEdit.autoapproveMovies": "Auto Approve Movies",
|
"components.PermissionEdit.autoapproveMovies": "Auto-Approve Movies",
|
||||||
"components.PermissionEdit.autoapproveMoviesDescription": "Grants auto approve for movie requests made by this user.",
|
"components.PermissionEdit.autoapproveMoviesDescription": "Grants automatic approval for movie requests made by this user.",
|
||||||
"components.PermissionEdit.autoapproveSeries": "Auto Approve Series",
|
"components.PermissionEdit.autoapproveSeries": "Auto-Approve Series",
|
||||||
"components.PermissionEdit.autoapproveSeriesDescription": "Grants auto approve for series requests made by this user.",
|
"components.PermissionEdit.autoapproveSeriesDescription": "Grants automatic approval for series requests made by this user.",
|
||||||
"components.PermissionEdit.managerequests": "Manage Requests",
|
"components.PermissionEdit.managerequests": "Manage Requests",
|
||||||
"components.PermissionEdit.managerequestsDescription": "Grants permission to manage Overseerr requests. This includes approving and denying requests.",
|
"components.PermissionEdit.managerequestsDescription": "Grants permission to manage Overseerr requests. This includes approving and denying requests.",
|
||||||
"components.PermissionEdit.request": "Request",
|
"components.PermissionEdit.request": "Request",
|
||||||
@@ -110,7 +111,7 @@
|
|||||||
"components.PersonDetails.nobiography": "No biography available.",
|
"components.PersonDetails.nobiography": "No biography available.",
|
||||||
"components.PlexLoginButton.loading": "Loading…",
|
"components.PlexLoginButton.loading": "Loading…",
|
||||||
"components.PlexLoginButton.signingin": "Signing in…",
|
"components.PlexLoginButton.signingin": "Signing in…",
|
||||||
"components.PlexLoginButton.signinwithplex": "Sign in",
|
"components.PlexLoginButton.signinwithplex": "Sign In",
|
||||||
"components.RequestBlock.profilechanged": "Profile Changed",
|
"components.RequestBlock.profilechanged": "Profile Changed",
|
||||||
"components.RequestBlock.requestoverrides": "Request Overrides",
|
"components.RequestBlock.requestoverrides": "Request Overrides",
|
||||||
"components.RequestBlock.rootfolder": "Root Folder",
|
"components.RequestBlock.rootfolder": "Root Folder",
|
||||||
@@ -133,7 +134,7 @@
|
|||||||
"components.RequestCard.all": "All",
|
"components.RequestCard.all": "All",
|
||||||
"components.RequestCard.requestedby": "Requested by {username}",
|
"components.RequestCard.requestedby": "Requested by {username}",
|
||||||
"components.RequestCard.seasons": "Seasons",
|
"components.RequestCard.seasons": "Seasons",
|
||||||
"components.RequestList.RequestItem.failedretry": "Something went wrong retrying the request",
|
"components.RequestList.RequestItem.failedretry": "Something went wrong while retrying the request.",
|
||||||
"components.RequestList.RequestItem.notavailable": "N/A",
|
"components.RequestList.RequestItem.notavailable": "N/A",
|
||||||
"components.RequestList.RequestItem.requestedby": "Requested by {username}",
|
"components.RequestList.RequestItem.requestedby": "Requested by {username}",
|
||||||
"components.RequestList.RequestItem.seasons": "Seasons",
|
"components.RequestList.RequestItem.seasons": "Seasons",
|
||||||
@@ -143,7 +144,7 @@
|
|||||||
"components.RequestList.mediaInfo": "Media Info",
|
"components.RequestList.mediaInfo": "Media Info",
|
||||||
"components.RequestList.modifiedBy": "Last Modified By",
|
"components.RequestList.modifiedBy": "Last Modified By",
|
||||||
"components.RequestList.next": "Next",
|
"components.RequestList.next": "Next",
|
||||||
"components.RequestList.noresults": "No Results.",
|
"components.RequestList.noresults": "No results.",
|
||||||
"components.RequestList.previous": "Previous",
|
"components.RequestList.previous": "Previous",
|
||||||
"components.RequestList.requestedAt": "Requested At",
|
"components.RequestList.requestedAt": "Requested At",
|
||||||
"components.RequestList.requests": "Requests",
|
"components.RequestList.requests": "Requests",
|
||||||
@@ -162,33 +163,33 @@
|
|||||||
"components.RequestModal.AdvancedRequester.rootfolder": "Root Folder",
|
"components.RequestModal.AdvancedRequester.rootfolder": "Root Folder",
|
||||||
"components.RequestModal.SearchByNameModal.next": "Next",
|
"components.RequestModal.SearchByNameModal.next": "Next",
|
||||||
"components.RequestModal.SearchByNameModal.nosummary": "No summary for this title was found.",
|
"components.RequestModal.SearchByNameModal.nosummary": "No summary for this title was found.",
|
||||||
"components.RequestModal.SearchByNameModal.notvdbid": "Manual match required",
|
"components.RequestModal.SearchByNameModal.notvdbid": "Manual Match Required",
|
||||||
"components.RequestModal.SearchByNameModal.notvdbiddescription": "We couldn't automatically match your request. Please select the correct match from the list below.",
|
"components.RequestModal.SearchByNameModal.notvdbiddescription": "We couldn't automatically match your request. Please select the correct match from the list below:",
|
||||||
"components.RequestModal.autoapproval": "Auto Approval",
|
"components.RequestModal.autoapproval": "Automatic Approval",
|
||||||
"components.RequestModal.backbutton": "Back",
|
"components.RequestModal.backbutton": "Back",
|
||||||
"components.RequestModal.cancel": "Cancel Request",
|
"components.RequestModal.cancel": "Cancel Request",
|
||||||
"components.RequestModal.cancelling": "Cancelling…",
|
"components.RequestModal.cancelling": "Cancelling…",
|
||||||
"components.RequestModal.cancelrequest": "This will remove your request. Are you sure you want to continue?",
|
"components.RequestModal.cancelrequest": "This will remove your request. Are you sure you want to continue?",
|
||||||
"components.RequestModal.close": "Close",
|
"components.RequestModal.close": "Close",
|
||||||
"components.RequestModal.errorediting": "Something went wrong editing the request.",
|
"components.RequestModal.errorediting": "Something went wrong while editing the request.",
|
||||||
"components.RequestModal.extras": "Extras",
|
"components.RequestModal.extras": "Extras",
|
||||||
"components.RequestModal.next": "Next",
|
"components.RequestModal.next": "Next",
|
||||||
"components.RequestModal.notrequested": "Not Requested",
|
"components.RequestModal.notrequested": "Not Requested",
|
||||||
"components.RequestModal.notvdbid": "No TVDB id was found connected on TMDB",
|
"components.RequestModal.notvdbid": "No TVDB ID was found for this item on TMDb.",
|
||||||
"components.RequestModal.notvdbiddescription": "Either add the TVDB id to TMDB and come back later, or select the correct match below.",
|
"components.RequestModal.notvdbiddescription": "Either add the TVDB ID to TMDb and try again later, or select the correct match below:",
|
||||||
"components.RequestModal.numberofepisodes": "# of Episodes",
|
"components.RequestModal.numberofepisodes": "# of Episodes",
|
||||||
"components.RequestModal.pending4krequest": "Pending request for {title} in 4K",
|
"components.RequestModal.pending4krequest": "Pending Request for {title} in 4K",
|
||||||
"components.RequestModal.pendingrequest": "Pending request for {title}",
|
"components.RequestModal.pendingrequest": "Pending Request for {title}",
|
||||||
"components.RequestModal.request": "Request",
|
"components.RequestModal.request": "Request",
|
||||||
"components.RequestModal.request4k": "Request 4K",
|
"components.RequestModal.request4k": "Request 4K",
|
||||||
"components.RequestModal.request4kfrom": "There is currently a pending 4K request from {username}",
|
"components.RequestModal.request4kfrom": "There is currently a pending 4K request from {username}.",
|
||||||
"components.RequestModal.request4ktitle": "Request {title} in 4K",
|
"components.RequestModal.request4ktitle": "Request {title} in 4K",
|
||||||
"components.RequestModal.requestCancel": "Request for <strong>{title}</strong> cancelled",
|
"components.RequestModal.requestCancel": "Request for <strong>{title}</strong> cancelled.",
|
||||||
"components.RequestModal.requestSuccess": "<strong>{title}</strong> requested.",
|
"components.RequestModal.requestSuccess": "<strong>{title}</strong> requested.",
|
||||||
"components.RequestModal.requestadmin": "Your request will be immediately approved.",
|
"components.RequestModal.requestadmin": "Your request will be immediately approved.",
|
||||||
"components.RequestModal.requestcancelled": "Request cancelled.",
|
"components.RequestModal.requestcancelled": "Request cancelled.",
|
||||||
"components.RequestModal.requestedited": "Request edited.",
|
"components.RequestModal.requestedited": "Request edited.",
|
||||||
"components.RequestModal.requesterror": "Something went wrong when trying to request media.",
|
"components.RequestModal.requesterror": "Something went wrong while submitting the request.",
|
||||||
"components.RequestModal.requestfrom": "There is currently a pending request from {username}",
|
"components.RequestModal.requestfrom": "There is currently a pending request from {username}",
|
||||||
"components.RequestModal.requesting": "Requesting…",
|
"components.RequestModal.requesting": "Requesting…",
|
||||||
"components.RequestModal.requestseasons": "Request {seasonCount} {seasonCount, plural, one {Season} other {Seasons}}",
|
"components.RequestModal.requestseasons": "Request {seasonCount} {seasonCount, plural, one {Season} other {Seasons}}",
|
||||||
@@ -199,58 +200,58 @@
|
|||||||
"components.RequestModal.status": "Status",
|
"components.RequestModal.status": "Status",
|
||||||
"components.Search.searchresults": "Search Results",
|
"components.Search.searchresults": "Search Results",
|
||||||
"components.Settings.Notifications.NotificationsPushover.accessToken": "Access Token",
|
"components.Settings.Notifications.NotificationsPushover.accessToken": "Access Token",
|
||||||
"components.Settings.Notifications.NotificationsPushover.agentenabled": "Agent Enabled",
|
"components.Settings.Notifications.NotificationsPushover.agentenabled": "Enable Agent",
|
||||||
"components.Settings.Notifications.NotificationsPushover.notificationtypes": "Notification Types",
|
"components.Settings.Notifications.NotificationsPushover.notificationtypes": "Notification Types",
|
||||||
"components.Settings.Notifications.NotificationsPushover.pushoversettingsfailed": "Pushover notification settings failed to save.",
|
"components.Settings.Notifications.NotificationsPushover.pushoversettingsfailed": "Pushover notification settings failed to save.",
|
||||||
"components.Settings.Notifications.NotificationsPushover.pushoversettingssaved": "Pushover notification settings saved!",
|
"components.Settings.Notifications.NotificationsPushover.pushoversettingssaved": "Pushover notification settings saved!",
|
||||||
"components.Settings.Notifications.NotificationsPushover.save": "Save Changes",
|
"components.Settings.Notifications.NotificationsPushover.save": "Save Changes",
|
||||||
"components.Settings.Notifications.NotificationsPushover.saving": "Saving…",
|
"components.Settings.Notifications.NotificationsPushover.saving": "Saving…",
|
||||||
"components.Settings.Notifications.NotificationsPushover.settinguppushover": "Setting up Pushover Notifications",
|
"components.Settings.Notifications.NotificationsPushover.settinguppushover": "Setting Up Pushover Notifications",
|
||||||
"components.Settings.Notifications.NotificationsPushover.settinguppushoverDescription": "To setup Pushover, you need to <RegisterApplicationLink>register an application</RegisterApplicationLink> and get the access token. When setting up the application, you can use one of the icons in the <IconLink>public folder</IconLink> on GitHub. You also need the Pushover user token, which can be found on the start page when you log in.",
|
"components.Settings.Notifications.NotificationsPushover.settinguppushoverDescription": "To setup Pushover, you need to <RegisterApplicationLink>register an application</RegisterApplicationLink> and get the access token. When setting up the application, you can use one of the icons in the <IconLink>public folder</IconLink> on GitHub. You also need the Pushover user token, which can be found on the start page when you log in.",
|
||||||
"components.Settings.Notifications.NotificationsPushover.test": "Test",
|
"components.Settings.Notifications.NotificationsPushover.test": "Test",
|
||||||
"components.Settings.Notifications.NotificationsPushover.testsent": "Test notification sent!",
|
"components.Settings.Notifications.NotificationsPushover.testsent": "Test notification sent!",
|
||||||
"components.Settings.Notifications.NotificationsPushover.userToken": "User Token",
|
"components.Settings.Notifications.NotificationsPushover.userToken": "User Token",
|
||||||
"components.Settings.Notifications.NotificationsPushover.validationAccessTokenRequired": "You must provide an access token.",
|
"components.Settings.Notifications.NotificationsPushover.validationAccessTokenRequired": "You must provide an access token",
|
||||||
"components.Settings.Notifications.NotificationsPushover.validationUserTokenRequired": "You must provide a user token.",
|
"components.Settings.Notifications.NotificationsPushover.validationUserTokenRequired": "You must provide a user token",
|
||||||
"components.Settings.Notifications.NotificationsSlack.agentenabled": "Agent Enabled",
|
"components.Settings.Notifications.NotificationsSlack.agentenabled": "Enable Agent",
|
||||||
"components.Settings.Notifications.NotificationsSlack.notificationtypes": "Notification Types",
|
"components.Settings.Notifications.NotificationsSlack.notificationtypes": "Notification Types",
|
||||||
"components.Settings.Notifications.NotificationsSlack.save": "Save Changes",
|
"components.Settings.Notifications.NotificationsSlack.save": "Save Changes",
|
||||||
"components.Settings.Notifications.NotificationsSlack.saving": "Saving…",
|
"components.Settings.Notifications.NotificationsSlack.saving": "Saving…",
|
||||||
"components.Settings.Notifications.NotificationsSlack.settingupslack": "Setting up Slack Notifications",
|
"components.Settings.Notifications.NotificationsSlack.settingupslack": "Setting Up Slack Notifications",
|
||||||
"components.Settings.Notifications.NotificationsSlack.settingupslackDescription": "To use Slack notifications, you will need to create an <WebhookLink>Incoming Webhook</WebhookLink> integration and use the provided webhook URL below.",
|
"components.Settings.Notifications.NotificationsSlack.settingupslackDescription": "To use Slack notifications, you will need to create an <WebhookLink>Incoming Webhook</WebhookLink> integration and use the provided webhook URL below.",
|
||||||
"components.Settings.Notifications.NotificationsSlack.slacksettingsfailed": "Slack notification settings failed to save.",
|
"components.Settings.Notifications.NotificationsSlack.slacksettingsfailed": "Slack notification settings failed to save.",
|
||||||
"components.Settings.Notifications.NotificationsSlack.slacksettingssaved": "Slack notification settings saved!",
|
"components.Settings.Notifications.NotificationsSlack.slacksettingssaved": "Slack notification settings saved!",
|
||||||
"components.Settings.Notifications.NotificationsSlack.test": "Test",
|
"components.Settings.Notifications.NotificationsSlack.test": "Test",
|
||||||
"components.Settings.Notifications.NotificationsSlack.testsent": "Test notification sent!",
|
"components.Settings.Notifications.NotificationsSlack.testsent": "Test notification sent!",
|
||||||
"components.Settings.Notifications.NotificationsSlack.validationWebhookUrlRequired": "You must provide a webhook URL.",
|
"components.Settings.Notifications.NotificationsSlack.validationWebhookUrlRequired": "You must provide a webhook URL",
|
||||||
"components.Settings.Notifications.NotificationsSlack.webhookUrl": "Webhook URL",
|
"components.Settings.Notifications.NotificationsSlack.webhookUrl": "Webhook URL",
|
||||||
"components.Settings.Notifications.NotificationsSlack.webhookUrlPlaceholder": "Webhook URL",
|
"components.Settings.Notifications.NotificationsSlack.webhookUrlPlaceholder": "Webhook URL",
|
||||||
"components.Settings.Notifications.NotificationsWebhook.agentenabled": "Agent Enabled",
|
"components.Settings.Notifications.NotificationsWebhook.agentenabled": "Enable Agent",
|
||||||
"components.Settings.Notifications.NotificationsWebhook.authheader": "Authorization Header",
|
"components.Settings.Notifications.NotificationsWebhook.authheader": "Authorization Header",
|
||||||
"components.Settings.Notifications.NotificationsWebhook.customJson": "Custom JSON Payload",
|
"components.Settings.Notifications.NotificationsWebhook.customJson": "Custom JSON Payload",
|
||||||
"components.Settings.Notifications.NotificationsWebhook.notificationtypes": "Notification Types",
|
"components.Settings.Notifications.NotificationsWebhook.notificationtypes": "Notification Types",
|
||||||
"components.Settings.Notifications.NotificationsWebhook.resetPayload": "Reset to Default JSON Payload",
|
"components.Settings.Notifications.NotificationsWebhook.resetPayload": "Reset to Default",
|
||||||
"components.Settings.Notifications.NotificationsWebhook.resetPayloadSuccess": "JSON reset to default payload.",
|
"components.Settings.Notifications.NotificationsWebhook.resetPayloadSuccess": "JSON payload successfully reset.",
|
||||||
"components.Settings.Notifications.NotificationsWebhook.save": "Save Changes",
|
"components.Settings.Notifications.NotificationsWebhook.save": "Save Changes",
|
||||||
"components.Settings.Notifications.NotificationsWebhook.saving": "Saving…",
|
"components.Settings.Notifications.NotificationsWebhook.saving": "Saving…",
|
||||||
"components.Settings.Notifications.NotificationsWebhook.templatevariablehelp": "Template Variable Help",
|
"components.Settings.Notifications.NotificationsWebhook.templatevariablehelp": "Template Variable Help",
|
||||||
"components.Settings.Notifications.NotificationsWebhook.test": "Test",
|
"components.Settings.Notifications.NotificationsWebhook.test": "Test",
|
||||||
"components.Settings.Notifications.NotificationsWebhook.testsent": "Test notification sent!",
|
"components.Settings.Notifications.NotificationsWebhook.testsent": "Test notification sent!",
|
||||||
"components.Settings.Notifications.NotificationsWebhook.validationJsonPayloadRequired": "You must provide a JSON Payload.",
|
"components.Settings.Notifications.NotificationsWebhook.validationJsonPayloadRequired": "You must provide a JSON payload",
|
||||||
"components.Settings.Notifications.NotificationsWebhook.validationWebhookUrlRequired": "You must provide a webhook URL.",
|
"components.Settings.Notifications.NotificationsWebhook.validationWebhookUrlRequired": "You must provide a webhook URL",
|
||||||
"components.Settings.Notifications.NotificationsWebhook.webhookUrl": "Webhook URL",
|
"components.Settings.Notifications.NotificationsWebhook.webhookUrl": "Webhook URL",
|
||||||
"components.Settings.Notifications.NotificationsWebhook.webhookUrlPlaceholder": "Remote webhook URL",
|
"components.Settings.Notifications.NotificationsWebhook.webhookUrlPlaceholder": "Remote webhook URL",
|
||||||
"components.Settings.Notifications.NotificationsWebhook.webhooksettingsfailed": "Webhook notification settings failed to save.",
|
"components.Settings.Notifications.NotificationsWebhook.webhooksettingsfailed": "Webhook notification settings failed to save.",
|
||||||
"components.Settings.Notifications.NotificationsWebhook.webhooksettingssaved": "Webhook notification settings saved!",
|
"components.Settings.Notifications.NotificationsWebhook.webhooksettingssaved": "Webhook notification settings saved!",
|
||||||
"components.Settings.Notifications.agentenabled": "Agent Enabled",
|
"components.Settings.Notifications.agentenabled": "Enable Agent",
|
||||||
"components.Settings.Notifications.allowselfsigned": "Allow Self-Signed Certificates",
|
"components.Settings.Notifications.allowselfsigned": "Allow Self-Signed Certificates",
|
||||||
"components.Settings.Notifications.authPass": "SMTP Password",
|
"components.Settings.Notifications.authPass": "SMTP Password",
|
||||||
"components.Settings.Notifications.authUser": "SMTP Username",
|
"components.Settings.Notifications.authUser": "SMTP Username",
|
||||||
"components.Settings.Notifications.botAPI": "Bot API",
|
"components.Settings.Notifications.botAPI": "Bot API",
|
||||||
"components.Settings.Notifications.chatId": "Chat Id",
|
"components.Settings.Notifications.chatId": "Chat ID",
|
||||||
"components.Settings.Notifications.discordsettingsfailed": "Discord notification settings failed to save.",
|
"components.Settings.Notifications.discordsettingsfailed": "Discord notification settings failed to save.",
|
||||||
"components.Settings.Notifications.discordsettingssaved": "Discord notification settings saved!",
|
"components.Settings.Notifications.discordsettingssaved": "Discord notification settings saved!",
|
||||||
"components.Settings.Notifications.emailsender": "Email Sender Address",
|
"components.Settings.Notifications.emailsender": "Sender Address",
|
||||||
"components.Settings.Notifications.emailsettingsfailed": "Email notification settings failed to save.",
|
"components.Settings.Notifications.emailsettingsfailed": "Email notification settings failed to save.",
|
||||||
"components.Settings.Notifications.emailsettingssaved": "Email notification settings saved!",
|
"components.Settings.Notifications.emailsettingssaved": "Email notification settings saved!",
|
||||||
"components.Settings.Notifications.enableSsl": "Enable SSL",
|
"components.Settings.Notifications.enableSsl": "Enable SSL",
|
||||||
@@ -258,26 +259,26 @@
|
|||||||
"components.Settings.Notifications.save": "Save Changes",
|
"components.Settings.Notifications.save": "Save Changes",
|
||||||
"components.Settings.Notifications.saving": "Saving…",
|
"components.Settings.Notifications.saving": "Saving…",
|
||||||
"components.Settings.Notifications.senderName": "Sender Name",
|
"components.Settings.Notifications.senderName": "Sender Name",
|
||||||
"components.Settings.Notifications.settinguptelegram": "Setting up Telegram Notifications",
|
"components.Settings.Notifications.settinguptelegram": "Setting Up Telegram Notifications",
|
||||||
"components.Settings.Notifications.settinguptelegramDescription": "To setup Telegram, you need to <CreateBotLink>create a bot</CreateBotLink> and get the bot API key. Additionally, you need the chat ID for the chat you want the bot to send notifications to. You can do this by adding <GetIdBotLink>@get_id_bot</GetIdBotLink> to the chat or group chat.",
|
"components.Settings.Notifications.settinguptelegramDescription": "To setup Telegram, you need to <CreateBotLink>create a bot</CreateBotLink> and get the bot API key. Additionally, you need the chat ID for the chat you want the bot to send notifications to. You can do this by adding <GetIdBotLink>@get_id_bot</GetIdBotLink> to the chat or group chat.",
|
||||||
"components.Settings.Notifications.smtpHost": "SMTP Host",
|
"components.Settings.Notifications.smtpHost": "SMTP Host",
|
||||||
"components.Settings.Notifications.smtpPort": "SMTP Port",
|
"components.Settings.Notifications.smtpPort": "SMTP Port",
|
||||||
"components.Settings.Notifications.ssldisabletip": "SSL should be disabled on standard TLS connections (Port 587)",
|
"components.Settings.Notifications.ssldisabletip": "SSL should be disabled on standard TLS connections (port 587)",
|
||||||
"components.Settings.Notifications.telegramsettingsfailed": "Telegram notification settings failed to save.",
|
"components.Settings.Notifications.telegramsettingsfailed": "Telegram notification settings failed to save.",
|
||||||
"components.Settings.Notifications.telegramsettingssaved": "Telegram notification settings saved!",
|
"components.Settings.Notifications.telegramsettingssaved": "Telegram notification settings saved!",
|
||||||
"components.Settings.Notifications.test": "Test",
|
"components.Settings.Notifications.test": "Test",
|
||||||
"components.Settings.Notifications.testsent": "Test notification sent!",
|
"components.Settings.Notifications.testsent": "Test notification sent!",
|
||||||
"components.Settings.Notifications.validationBotAPIRequired": "You must provide a Bot API key.",
|
"components.Settings.Notifications.validationBotAPIRequired": "You must provide a Bot API key",
|
||||||
"components.Settings.Notifications.validationChatIdRequired": "You must provide a Chat ID.",
|
"components.Settings.Notifications.validationChatIdRequired": "You must provide a Chat ID",
|
||||||
"components.Settings.Notifications.validationFromRequired": "You must provide an email sender address.",
|
"components.Settings.Notifications.validationFromRequired": "You must provide a sender address",
|
||||||
"components.Settings.Notifications.validationSmtpHostRequired": "You must provide an SMTP host.",
|
"components.Settings.Notifications.validationSmtpHostRequired": "You must provide an SMTP host",
|
||||||
"components.Settings.Notifications.validationSmtpPortRequired": "You must provide an SMTP port.",
|
"components.Settings.Notifications.validationSmtpPortRequired": "You must provide an SMTP port",
|
||||||
"components.Settings.Notifications.validationWebhookUrlRequired": "You must provide a webhook URL.",
|
"components.Settings.Notifications.validationWebhookUrlRequired": "You must provide a webhook URL",
|
||||||
"components.Settings.Notifications.webhookUrl": "Webhook URL",
|
"components.Settings.Notifications.webhookUrl": "Webhook URL",
|
||||||
"components.Settings.Notifications.webhookUrlPlaceholder": "Server Settings -> Integrations -> Webhooks",
|
"components.Settings.Notifications.webhookUrlPlaceholder": "Server Settings → Integrations → Webhooks",
|
||||||
"components.Settings.RadarrModal.add": "Add Server",
|
"components.Settings.RadarrModal.add": "Add Server",
|
||||||
"components.Settings.RadarrModal.apiKey": "API Key",
|
"components.Settings.RadarrModal.apiKey": "API Key",
|
||||||
"components.Settings.RadarrModal.apiKeyPlaceholder": "Your Radarr API Key",
|
"components.Settings.RadarrModal.apiKeyPlaceholder": "Your Radarr API key",
|
||||||
"components.Settings.RadarrModal.baseUrl": "Base URL",
|
"components.Settings.RadarrModal.baseUrl": "Base URL",
|
||||||
"components.Settings.RadarrModal.baseUrlPlaceholder": "Example: /radarr",
|
"components.Settings.RadarrModal.baseUrlPlaceholder": "Example: /radarr",
|
||||||
"components.Settings.RadarrModal.createradarr": "Create New Radarr Server",
|
"components.Settings.RadarrModal.createradarr": "Create New Radarr Server",
|
||||||
@@ -300,32 +301,32 @@
|
|||||||
"components.Settings.RadarrModal.servernamePlaceholder": "A Radarr Server",
|
"components.Settings.RadarrModal.servernamePlaceholder": "A Radarr Server",
|
||||||
"components.Settings.RadarrModal.ssl": "SSL",
|
"components.Settings.RadarrModal.ssl": "SSL",
|
||||||
"components.Settings.RadarrModal.test": "Test",
|
"components.Settings.RadarrModal.test": "Test",
|
||||||
"components.Settings.RadarrModal.testFirstQualityProfiles": "Test your connection to load quality profiles",
|
"components.Settings.RadarrModal.testFirstQualityProfiles": "Test connection to load quality profiles",
|
||||||
"components.Settings.RadarrModal.testFirstRootFolders": "Test your connection to load root folders",
|
"components.Settings.RadarrModal.testFirstRootFolders": "Test connection to load root folders",
|
||||||
"components.Settings.RadarrModal.testing": "Testing…",
|
"components.Settings.RadarrModal.testing": "Testing…",
|
||||||
"components.Settings.RadarrModal.toastRadarrTestFailure": "Failed to connect to Radarr Server",
|
"components.Settings.RadarrModal.toastRadarrTestFailure": "Failed to connect to Radarr.",
|
||||||
"components.Settings.RadarrModal.toastRadarrTestSuccess": "Radarr connection established!",
|
"components.Settings.RadarrModal.toastRadarrTestSuccess": "Radarr connection established!",
|
||||||
"components.Settings.RadarrModal.validationApiKeyRequired": "You must provide an API key.",
|
"components.Settings.RadarrModal.validationApiKeyRequired": "You must provide an API key",
|
||||||
"components.Settings.RadarrModal.validationHostnameRequired": "You must provide a hostname/IP.",
|
"components.Settings.RadarrModal.validationHostnameRequired": "You must provide a hostname/IP",
|
||||||
"components.Settings.RadarrModal.validationMinimumAvailabilityRequired": "You must select a minimum availability.",
|
"components.Settings.RadarrModal.validationMinimumAvailabilityRequired": "You must select a minimum availability",
|
||||||
"components.Settings.RadarrModal.validationNameRequired": "You must provide a server name.",
|
"components.Settings.RadarrModal.validationNameRequired": "You must provide a server name",
|
||||||
"components.Settings.RadarrModal.validationPortRequired": "You must provide a port.",
|
"components.Settings.RadarrModal.validationPortRequired": "You must provide a port",
|
||||||
"components.Settings.RadarrModal.validationProfileRequired": "You must select a quality profile.",
|
"components.Settings.RadarrModal.validationProfileRequired": "You must select a quality profile",
|
||||||
"components.Settings.RadarrModal.validationRootFolderRequired": "You must select a root folder.",
|
"components.Settings.RadarrModal.validationRootFolderRequired": "You must select a root folder",
|
||||||
"components.Settings.SettingsAbout.Releases.currentversion": "Current Version",
|
"components.Settings.SettingsAbout.Releases.currentversion": "Current Version",
|
||||||
"components.Settings.SettingsAbout.Releases.latestversion": "Latest Version",
|
"components.Settings.SettingsAbout.Releases.latestversion": "Latest Version",
|
||||||
"components.Settings.SettingsAbout.Releases.releasedataMissing": "Release data missing. Is GitHub down?",
|
"components.Settings.SettingsAbout.Releases.releasedataMissing": "Release data unavailable. Is GitHub down?",
|
||||||
"components.Settings.SettingsAbout.Releases.releases": "Releases",
|
"components.Settings.SettingsAbout.Releases.releases": "Releases",
|
||||||
"components.Settings.SettingsAbout.Releases.runningDevelop": "You are running a develop version of Overseerr!",
|
"components.Settings.SettingsAbout.Releases.runningDevelop": "You are running a develop version of Overseerr!",
|
||||||
"components.Settings.SettingsAbout.Releases.runningDevelopMessage": "The changes in your version will not be available below. Please look at the <GithubLink>GitHub repository</GithubLink> for latest updates.",
|
"components.Settings.SettingsAbout.Releases.runningDevelopMessage": "The changes in your version will not be available below. Please see the <GithubLink>GitHub repository</GithubLink> for latest updates.",
|
||||||
"components.Settings.SettingsAbout.Releases.versionChangelog": "Version Changelog",
|
"components.Settings.SettingsAbout.Releases.versionChangelog": "Version Changelog",
|
||||||
"components.Settings.SettingsAbout.Releases.viewchangelog": "View Changelog",
|
"components.Settings.SettingsAbout.Releases.viewchangelog": "View Changelog",
|
||||||
"components.Settings.SettingsAbout.Releases.viewongithub": "View on GitHub",
|
"components.Settings.SettingsAbout.Releases.viewongithub": "View on GitHub",
|
||||||
"components.Settings.SettingsAbout.clickheretojoindiscord": "Click here to join our Discord server.",
|
"components.Settings.SettingsAbout.clickheretojoindiscord": "Click here to join our Discord server!",
|
||||||
"components.Settings.SettingsAbout.documentation": "Documentation",
|
"components.Settings.SettingsAbout.documentation": "Documentation",
|
||||||
"components.Settings.SettingsAbout.gettingsupport": "Getting Support",
|
"components.Settings.SettingsAbout.gettingsupport": "Getting Support",
|
||||||
"components.Settings.SettingsAbout.githubdiscussions": "GitHub Discussions",
|
"components.Settings.SettingsAbout.githubdiscussions": "GitHub Discussions",
|
||||||
"components.Settings.SettingsAbout.helppaycoffee": "Help pay for coffee",
|
"components.Settings.SettingsAbout.helppaycoffee": "Help Pay for Coffee",
|
||||||
"components.Settings.SettingsAbout.overseerrinformation": "Overseerr Information",
|
"components.Settings.SettingsAbout.overseerrinformation": "Overseerr Information",
|
||||||
"components.Settings.SettingsAbout.supportoverseerr": "Support Overseerr",
|
"components.Settings.SettingsAbout.supportoverseerr": "Support Overseerr",
|
||||||
"components.Settings.SettingsAbout.timezone": "Timezone",
|
"components.Settings.SettingsAbout.timezone": "Timezone",
|
||||||
@@ -336,7 +337,7 @@
|
|||||||
"components.Settings.SonarrModal.animequalityprofile": "Anime Quality Profile",
|
"components.Settings.SonarrModal.animequalityprofile": "Anime Quality Profile",
|
||||||
"components.Settings.SonarrModal.animerootfolder": "Anime Root Folder",
|
"components.Settings.SonarrModal.animerootfolder": "Anime Root Folder",
|
||||||
"components.Settings.SonarrModal.apiKey": "API Key",
|
"components.Settings.SonarrModal.apiKey": "API Key",
|
||||||
"components.Settings.SonarrModal.apiKeyPlaceholder": "Your Sonarr API Key",
|
"components.Settings.SonarrModal.apiKeyPlaceholder": "Your Sonarr API key",
|
||||||
"components.Settings.SonarrModal.baseUrl": "Base URL",
|
"components.Settings.SonarrModal.baseUrl": "Base URL",
|
||||||
"components.Settings.SonarrModal.baseUrlPlaceholder": "Example: /sonarr",
|
"components.Settings.SonarrModal.baseUrlPlaceholder": "Example: /sonarr",
|
||||||
"components.Settings.SonarrModal.createsonarr": "Create New Sonarr Server",
|
"components.Settings.SonarrModal.createsonarr": "Create New Sonarr Server",
|
||||||
@@ -358,26 +359,26 @@
|
|||||||
"components.Settings.SonarrModal.servernamePlaceholder": "A Sonarr Server",
|
"components.Settings.SonarrModal.servernamePlaceholder": "A Sonarr Server",
|
||||||
"components.Settings.SonarrModal.ssl": "SSL",
|
"components.Settings.SonarrModal.ssl": "SSL",
|
||||||
"components.Settings.SonarrModal.test": "Test",
|
"components.Settings.SonarrModal.test": "Test",
|
||||||
"components.Settings.SonarrModal.testFirstQualityProfiles": "Test your connection to load quality profiles",
|
"components.Settings.SonarrModal.testFirstQualityProfiles": "Test connection to load quality profiles",
|
||||||
"components.Settings.SonarrModal.testFirstRootFolders": "Test your connection to load root folders",
|
"components.Settings.SonarrModal.testFirstRootFolders": "Test connection to load root folders",
|
||||||
"components.Settings.SonarrModal.testing": "Testing…",
|
"components.Settings.SonarrModal.testing": "Testing…",
|
||||||
"components.Settings.SonarrModal.toastRadarrTestFailure": "Could not connect to Sonarr Server",
|
"components.Settings.SonarrModal.toastSonarrTestFailure": "Failed to connect to Sonarr.",
|
||||||
"components.Settings.SonarrModal.toastRadarrTestSuccess": "Sonarr connection established!",
|
"components.Settings.SonarrModal.toastSonarrTestSuccess": "Sonarr connection established!",
|
||||||
"components.Settings.SonarrModal.validationApiKeyRequired": "You must provide an API key.",
|
"components.Settings.SonarrModal.validationApiKeyRequired": "You must provide an API key",
|
||||||
"components.Settings.SonarrModal.validationHostnameRequired": "You must provide a hostname/IP.",
|
"components.Settings.SonarrModal.validationHostnameRequired": "You must provide a hostname/IP",
|
||||||
"components.Settings.SonarrModal.validationNameRequired": "You must provide a server name.",
|
"components.Settings.SonarrModal.validationNameRequired": "You must provide a server name",
|
||||||
"components.Settings.SonarrModal.validationPortRequired": "You must provide a port.",
|
"components.Settings.SonarrModal.validationPortRequired": "You must provide a port",
|
||||||
"components.Settings.SonarrModal.validationProfileRequired": "You must select a quality profile.",
|
"components.Settings.SonarrModal.validationProfileRequired": "You must select a quality profile",
|
||||||
"components.Settings.SonarrModal.validationRootFolderRequired": "You must select a root folder.",
|
"components.Settings.SonarrModal.validationRootFolderRequired": "You must select a root folder",
|
||||||
"components.Settings.activeProfile": "Active Profile",
|
"components.Settings.activeProfile": "Active Profile",
|
||||||
"components.Settings.addradarr": "Add Radarr Server",
|
"components.Settings.addradarr": "Add Radarr Server",
|
||||||
"components.Settings.address": "Address",
|
"components.Settings.address": "Address",
|
||||||
"components.Settings.addsonarr": "Add Sonarr Server",
|
"components.Settings.addsonarr": "Add Sonarr Server",
|
||||||
"components.Settings.apikey": "API Key",
|
"components.Settings.apikey": "API Key",
|
||||||
"components.Settings.applicationurl": "Application URL",
|
"components.Settings.applicationurl": "Application URL",
|
||||||
"components.Settings.autoapprovedrequests": "Send notifications for auto-approved requests",
|
"components.Settings.autoapprovedrequests": "Send Notifications for Auto-Approved Requests",
|
||||||
"components.Settings.cancelscan": "Cancel Scan",
|
"components.Settings.cancelscan": "Cancel Scan",
|
||||||
"components.Settings.copied": "Copied API key to clipboard",
|
"components.Settings.copied": "Copied API key to clipboard.",
|
||||||
"components.Settings.csrfProtection": "Enable CSRF Protection",
|
"components.Settings.csrfProtection": "Enable CSRF Protection",
|
||||||
"components.Settings.csrfProtectionTip": "Sets external API access to read-only (Overseerr must be reloaded for changes to take effect)",
|
"components.Settings.csrfProtectionTip": "Sets external API access to read-only (Overseerr must be reloaded for changes to take effect)",
|
||||||
"components.Settings.currentlibrary": "Current Library: {name}",
|
"components.Settings.currentlibrary": "Current Library: {name}",
|
||||||
@@ -389,13 +390,13 @@
|
|||||||
"components.Settings.edit": "Edit",
|
"components.Settings.edit": "Edit",
|
||||||
"components.Settings.enablenotifications": "Enable Notifications",
|
"components.Settings.enablenotifications": "Enable Notifications",
|
||||||
"components.Settings.generalsettings": "General Settings",
|
"components.Settings.generalsettings": "General Settings",
|
||||||
"components.Settings.generalsettingsDescription": "These are settings related to general Overseerr configuration.",
|
"components.Settings.generalsettingsDescription": "Configure global and default settings for Overseerr.",
|
||||||
"components.Settings.hideAvailable": "Hide available media",
|
"components.Settings.hideAvailable": "Hide Available Media",
|
||||||
"components.Settings.hostname": "Hostname/IP",
|
"components.Settings.hostname": "Hostname/IP",
|
||||||
"components.Settings.jobname": "Job Name",
|
"components.Settings.jobname": "Job Name",
|
||||||
"components.Settings.librariesRemaining": "Libraries Remaining: {count}",
|
"components.Settings.librariesRemaining": "Libraries Remaining: {count}",
|
||||||
"components.Settings.manualscan": "Manual Library Scan",
|
"components.Settings.manualscan": "Manual Library Scan",
|
||||||
"components.Settings.manualscanDescription": "Normally, this will only be run once every 24 hours. Overseerr will check your Plex server's recently added more aggressively. If this is your first time configuring Plex, a one time full manual library scan is recommended!",
|
"components.Settings.manualscanDescription": "Normally, this will only be run once every 24 hours. Overseerr will check your Plex server's recently added more aggressively. If this is your first time configuring Plex, a one-time full manual library scan is recommended!",
|
||||||
"components.Settings.menuAbout": "About",
|
"components.Settings.menuAbout": "About",
|
||||||
"components.Settings.menuGeneralSettings": "General Settings",
|
"components.Settings.menuGeneralSettings": "General Settings",
|
||||||
"components.Settings.menuJobs": "Jobs",
|
"components.Settings.menuJobs": "Jobs",
|
||||||
@@ -407,19 +408,19 @@
|
|||||||
"components.Settings.nextexecution": "Next Execution",
|
"components.Settings.nextexecution": "Next Execution",
|
||||||
"components.Settings.nodefault": "No default server selected!",
|
"components.Settings.nodefault": "No default server selected!",
|
||||||
"components.Settings.nodefaultdescription": "At least one server must be marked as default before any requests will make it to your services.",
|
"components.Settings.nodefaultdescription": "At least one server must be marked as default before any requests will make it to your services.",
|
||||||
"components.Settings.notificationAgentSettingsDescription": "Here you can pick and choose what types of notifications to send and through what types of services.",
|
"components.Settings.notificationAgentSettingsDescription": "Choose the types of notifications to send, and which notification agents to use.",
|
||||||
"components.Settings.notificationAgentsSettings": "Notification Agents",
|
"components.Settings.notificationAgentsSettings": "Notification Agents",
|
||||||
"components.Settings.notificationsettings": "Notification Settings",
|
"components.Settings.notificationsettings": "Notification Settings",
|
||||||
"components.Settings.notificationsettingsDescription": "Global notification configuration. The settings below affect all notification agents.",
|
"components.Settings.notificationsettingsDescription": "Configure global notification settings. The options below will apply to all notification agents.",
|
||||||
"components.Settings.notificationsettingsfailed": "Notification settings failed to save.",
|
"components.Settings.notificationsettingsfailed": "Notification settings failed to save.",
|
||||||
"components.Settings.notificationsettingssaved": "Notification settings saved!",
|
"components.Settings.notificationsettingssaved": "Notification settings saved!",
|
||||||
"components.Settings.notrunning": "Not Running",
|
"components.Settings.notrunning": "Not Running",
|
||||||
"components.Settings.plexlibraries": "Plex Libraries",
|
"components.Settings.plexlibraries": "Plex Libraries",
|
||||||
"components.Settings.plexlibrariesDescription": "The libraries Overseerr scans for titles. Set up and save your Plex connection settings and click the button below if none are listed.",
|
"components.Settings.plexlibrariesDescription": "The libraries Overseerr scans for titles. Set up and save your Plex connection settings, then click the button below if no libraries are listed.",
|
||||||
"components.Settings.plexsettings": "Plex Settings",
|
"components.Settings.plexsettings": "Plex Settings",
|
||||||
"components.Settings.plexsettingsDescription": "Configure the settings for your Plex server. Overseerr uses your Plex server to scan your library at an interval and see what content is available.",
|
"components.Settings.plexsettingsDescription": "Configure the settings for your Plex server. Overseerr scans your Plex libraries to see what content is available.",
|
||||||
"components.Settings.port": "Port",
|
"components.Settings.port": "Port",
|
||||||
"components.Settings.radarrSettingsDescription": "Set up your Radarr connection below. You can have multiple, but only two active as defaults at any time (one for standard HD, and one for 4K). Administrators can override which server is used for new requests.",
|
"components.Settings.radarrSettingsDescription": "Set up your Radarr connection below. You can have multiple, but only two active as defaults at any time (one for standard HD, and one for 4K). Administrators can override the server is used for new requests.",
|
||||||
"components.Settings.radarrsettings": "Radarr Settings",
|
"components.Settings.radarrsettings": "Radarr Settings",
|
||||||
"components.Settings.runnow": "Run Now",
|
"components.Settings.runnow": "Run Now",
|
||||||
"components.Settings.save": "Save Changes",
|
"components.Settings.save": "Save Changes",
|
||||||
@@ -427,34 +428,35 @@
|
|||||||
"components.Settings.serverConnected": "connected",
|
"components.Settings.serverConnected": "connected",
|
||||||
"components.Settings.serverLocal": "local",
|
"components.Settings.serverLocal": "local",
|
||||||
"components.Settings.serverRemote": "remote",
|
"components.Settings.serverRemote": "remote",
|
||||||
"components.Settings.servername": "Server Name (Retrieved from Plex)",
|
"components.Settings.servername": "Server Name",
|
||||||
"components.Settings.servernamePlaceholder": "Plex Server Name",
|
"components.Settings.servernamePlaceholder": "Plex Server Name",
|
||||||
"components.Settings.serverpreset": "Available Server",
|
"components.Settings.servernameTip": "Automatically retrieved from Plex after saving",
|
||||||
"components.Settings.serverpresetLoad": "Press button to load available servers",
|
"components.Settings.serverpreset": "Server",
|
||||||
|
"components.Settings.serverpresetLoad": "Press the button to load available servers",
|
||||||
"components.Settings.serverpresetManualMessage": "Manually configure",
|
"components.Settings.serverpresetManualMessage": "Manually configure",
|
||||||
"components.Settings.serverpresetPlaceholder": "Plex server (retrieved automatically)",
|
"components.Settings.serverpresetPlaceholder": "Plex Server",
|
||||||
"components.Settings.serverpresetRefreshing": "Retrieving servers...",
|
"components.Settings.serverpresetRefreshing": "Retrieving servers…",
|
||||||
"components.Settings.settingUpPlex": "Setting up Plex",
|
"components.Settings.settingUpPlex": "Setting Up Plex",
|
||||||
"components.Settings.settingUpPlexDescription": "To setup Plex you can enter your details manually, or choose from one of your available servers retrieved from <RegisterPlexTVLink>plex.tv</RegisterPlexTVLink>. Press the button next to the dropdown to refresh the list and recheck server connectivity.",
|
"components.Settings.settingUpPlexDescription": "To set up Plex, you can either enter your details manually or select a server retrieved from <RegisterPlexTVLink>plex.tv</RegisterPlexTVLink>. Press the button to the right of the dropdown to check connectivity and retrieve available servers.",
|
||||||
"components.Settings.sonarrSettingsDescription": "Set up your Sonarr connection below. You can have multiple, but only two active as defaults at any time (one for standard HD and one for 4K). Administrators can override which server is used for new requests.",
|
"components.Settings.sonarrSettingsDescription": "Set up your Sonarr connection below. You can have multiple, but only two active as defaults at any time (one for standard HD and one for 4K). Administrators can override the server is used for new requests.",
|
||||||
"components.Settings.sonarrsettings": "Sonarr Settings",
|
"components.Settings.sonarrsettings": "Sonarr Settings",
|
||||||
"components.Settings.ssl": "SSL",
|
"components.Settings.ssl": "SSL",
|
||||||
"components.Settings.startscan": "Start Scan",
|
"components.Settings.startscan": "Start Scan",
|
||||||
"components.Settings.sync": "Sync Plex Libraries",
|
"components.Settings.sync": "Sync Plex Libraries",
|
||||||
"components.Settings.syncing": "Syncing…",
|
"components.Settings.syncing": "Syncing…",
|
||||||
"components.Settings.timeout": "Timeout",
|
"components.Settings.timeout": "Timeout",
|
||||||
"components.Settings.toastApiKeyFailure": "Something went wrong generating a new API Key.",
|
"components.Settings.toastApiKeyFailure": "Something went wrong while generating a new API key.",
|
||||||
"components.Settings.toastApiKeySuccess": "New API Key generated!",
|
"components.Settings.toastApiKeySuccess": "New API key generated!",
|
||||||
"components.Settings.toastPlexConnecting": "Attempting to connect to Plex server",
|
"components.Settings.toastPlexConnecting": "Attempting to connect to Plex…",
|
||||||
"components.Settings.toastPlexConnectingFailure": "Unable to connect to Plex server",
|
"components.Settings.toastPlexConnectingFailure": "Unable to connect to Plex!",
|
||||||
"components.Settings.toastPlexConnectingSuccess": "Connected to Plex server",
|
"components.Settings.toastPlexConnectingSuccess": "Connected to Plex server.",
|
||||||
"components.Settings.toastPlexRefresh": "Retrieving server list from Plex",
|
"components.Settings.toastPlexRefresh": "Retrieving server list from Plex…",
|
||||||
"components.Settings.toastPlexRefreshFailure": "Unable to retrieve server list from Plex",
|
"components.Settings.toastPlexRefreshFailure": "Unable to retrieve Plex server list!",
|
||||||
"components.Settings.toastPlexRefreshSuccess": "Retrieved server list from Plex",
|
"components.Settings.toastPlexRefreshSuccess": "Retrieved Plex server list.",
|
||||||
"components.Settings.toastSettingsFailure": "Something went wrong saving settings.",
|
"components.Settings.toastSettingsFailure": "Something went wrong while saving settings.",
|
||||||
"components.Settings.toastSettingsSuccess": "Settings saved.",
|
"components.Settings.toastSettingsSuccess": "Settings saved.",
|
||||||
"components.Settings.validationHostnameRequired": "You must provide a hostname/IP.",
|
"components.Settings.validationHostnameRequired": "You must provide a hostname/IP",
|
||||||
"components.Settings.validationPortRequired": "You must provide a port.",
|
"components.Settings.validationPortRequired": "You must provide a port",
|
||||||
"components.Setup.configureplex": "Configure Plex",
|
"components.Setup.configureplex": "Configure Plex",
|
||||||
"components.Setup.configureservices": "Configure Services",
|
"components.Setup.configureservices": "Configure Services",
|
||||||
"components.Setup.continue": "Continue",
|
"components.Setup.continue": "Continue",
|
||||||
@@ -465,7 +467,7 @@
|
|||||||
"components.Setup.syncingbackground": "Syncing will run in the background. You can continue the setup process in the meantime.",
|
"components.Setup.syncingbackground": "Syncing will run in the background. You can continue the setup process in the meantime.",
|
||||||
"components.Setup.tip": "Tip",
|
"components.Setup.tip": "Tip",
|
||||||
"components.Setup.welcome": "Welcome to Overseerr",
|
"components.Setup.welcome": "Welcome to Overseerr",
|
||||||
"components.Slider.noresults": "No Results",
|
"components.Slider.noresults": "No results.",
|
||||||
"components.StatusBadge.status4k": "4K {status}",
|
"components.StatusBadge.status4k": "4K {status}",
|
||||||
"components.StatusChacker.newversionDescription": "An update is now available. Click the button below to reload the application.",
|
"components.StatusChacker.newversionDescription": "An update is now available. Click the button below to reload the application.",
|
||||||
"components.StatusChacker.newversionavailable": "New Version Available",
|
"components.StatusChacker.newversionavailable": "New Version Available",
|
||||||
@@ -482,14 +484,14 @@
|
|||||||
"components.TvDetails.decline": "Decline",
|
"components.TvDetails.decline": "Decline",
|
||||||
"components.TvDetails.firstAirDate": "First Air Date",
|
"components.TvDetails.firstAirDate": "First Air Date",
|
||||||
"components.TvDetails.manageModalClearMedia": "Clear All Media Data",
|
"components.TvDetails.manageModalClearMedia": "Clear All Media Data",
|
||||||
"components.TvDetails.manageModalClearMediaWarning": "This will remove all media data including all requests for this item, irreversibly. If this item exists in your Plex library, the media info will be recreated next sync.",
|
"components.TvDetails.manageModalClearMediaWarning": "This will irreversibly remove all data for this TV series, including any requests. If this item exists in your Plex library, the media information will be recreated during the next sync.",
|
||||||
"components.TvDetails.manageModalNoRequests": "No Requests",
|
"components.TvDetails.manageModalNoRequests": "No Requests",
|
||||||
"components.TvDetails.manageModalRequests": "Requests",
|
"components.TvDetails.manageModalRequests": "Requests",
|
||||||
"components.TvDetails.manageModalTitle": "Manage Series",
|
"components.TvDetails.manageModalTitle": "Manage Series",
|
||||||
"components.TvDetails.network": "Network",
|
"components.TvDetails.network": "Network",
|
||||||
"components.TvDetails.originallanguage": "Original Language",
|
"components.TvDetails.originallanguage": "Original Language",
|
||||||
"components.TvDetails.overview": "Overview",
|
"components.TvDetails.overview": "Overview",
|
||||||
"components.TvDetails.overviewunavailable": "Overview unavailable",
|
"components.TvDetails.overviewunavailable": "Overview unavailable.",
|
||||||
"components.TvDetails.pending": "Pending",
|
"components.TvDetails.pending": "Pending",
|
||||||
"components.TvDetails.recommendations": "Recommendations",
|
"components.TvDetails.recommendations": "Recommendations",
|
||||||
"components.TvDetails.recommendationssubtext": "If you liked {title}, you might also like…",
|
"components.TvDetails.recommendationssubtext": "If you liked {title}, you might also like…",
|
||||||
@@ -507,7 +509,7 @@
|
|||||||
"components.UserEdit.permissions": "Permissions",
|
"components.UserEdit.permissions": "Permissions",
|
||||||
"components.UserEdit.save": "Save",
|
"components.UserEdit.save": "Save",
|
||||||
"components.UserEdit.saving": "Saving…",
|
"components.UserEdit.saving": "Saving…",
|
||||||
"components.UserEdit.userfail": "Something went wrong saving the user.",
|
"components.UserEdit.userfail": "Something went wrong while saving the user.",
|
||||||
"components.UserEdit.username": "Display Name",
|
"components.UserEdit.username": "Display Name",
|
||||||
"components.UserEdit.usersaved": "User saved",
|
"components.UserEdit.usersaved": "User saved",
|
||||||
"components.UserList.admin": "Admin",
|
"components.UserList.admin": "Admin",
|
||||||
@@ -524,27 +526,27 @@
|
|||||||
"components.UserList.edit": "Edit",
|
"components.UserList.edit": "Edit",
|
||||||
"components.UserList.email": "Email Address",
|
"components.UserList.email": "Email Address",
|
||||||
"components.UserList.importedfromplex": "{userCount, plural, =0 {No new users} one {# new user} other {# new users}} imported from Plex",
|
"components.UserList.importedfromplex": "{userCount, plural, =0 {No new users} one {# new user} other {# new users}} imported from Plex",
|
||||||
"components.UserList.importfromplex": "Import Users From Plex",
|
"components.UserList.importfromplex": "Import Users from Plex",
|
||||||
"components.UserList.importfromplexerror": "Something went wrong importing users from Plex",
|
"components.UserList.importfromplexerror": "Something went wrong while importing users from Plex.",
|
||||||
"components.UserList.lastupdated": "Last Updated",
|
"components.UserList.lastupdated": "Last Updated",
|
||||||
"components.UserList.localuser": "Local User",
|
"components.UserList.localuser": "Local User",
|
||||||
"components.UserList.password": "Password",
|
"components.UserList.password": "Password",
|
||||||
"components.UserList.passwordinfo": "Password Info",
|
"components.UserList.passwordinfo": "Password Information",
|
||||||
"components.UserList.passwordinfodescription": "Email notification settings need to be enabled and setup in order to use the auto generated passwords",
|
"components.UserList.passwordinfodescription": "Email notifications need to be configured and enabled in order to automatically generate passwords.",
|
||||||
"components.UserList.plexuser": "Plex User",
|
"components.UserList.plexuser": "Plex User",
|
||||||
"components.UserList.role": "Role",
|
"components.UserList.role": "Role",
|
||||||
"components.UserList.totalrequests": "Total Requests",
|
"components.UserList.totalrequests": "Total Requests",
|
||||||
"components.UserList.user": "User",
|
"components.UserList.user": "User",
|
||||||
"components.UserList.usercreatedfailed": "Something went wrong when trying to create the user",
|
"components.UserList.usercreatedfailed": "Something went wrong while creating the user.",
|
||||||
"components.UserList.usercreatedsuccess": "Successfully created the user",
|
"components.UserList.usercreatedsuccess": "User created successfully!",
|
||||||
"components.UserList.userdeleted": "User deleted",
|
"components.UserList.userdeleted": "User deleted.",
|
||||||
"components.UserList.userdeleteerror": "Something went wrong deleting the user",
|
"components.UserList.userdeleteerror": "Something went wrong while deleting the user.",
|
||||||
"components.UserList.userlist": "User List",
|
"components.UserList.userlist": "User List",
|
||||||
"components.UserList.username": "Username",
|
"components.UserList.username": "Username",
|
||||||
"components.UserList.userssaved": "Users saved",
|
"components.UserList.userssaved": "Users saved",
|
||||||
"components.UserList.usertype": "User Type",
|
"components.UserList.usertype": "User Type",
|
||||||
"components.UserList.validationemailrequired": "Must enter a valid email address.",
|
"components.UserList.validationemailrequired": "Must enter a valid email address",
|
||||||
"components.UserList.validationpasswordminchars": "Password is too short - should be 8 chars minimum.",
|
"components.UserList.validationpasswordminchars": "Password is too short; should be a minimum of 8 characters",
|
||||||
"i18n.approve": "Approve",
|
"i18n.approve": "Approve",
|
||||||
"i18n.approved": "Approved",
|
"i18n.approved": "Approved",
|
||||||
"i18n.available": "Available",
|
"i18n.available": "Available",
|
||||||
@@ -566,10 +568,10 @@
|
|||||||
"i18n.retry": "Retry",
|
"i18n.retry": "Retry",
|
||||||
"i18n.tvshows": "Series",
|
"i18n.tvshows": "Series",
|
||||||
"i18n.unavailable": "Unavailable",
|
"i18n.unavailable": "Unavailable",
|
||||||
"pages.internalServerError": "{statusCode} - Internal Server Error",
|
"pages.internalServerError": "{statusCode} - Internal server error",
|
||||||
"pages.oops": "Oops",
|
"pages.oops": "Oops",
|
||||||
"pages.pageNotFound": "404 - Page Not Found",
|
"pages.pageNotFound": "404 - Page Not Found",
|
||||||
"pages.returnHome": "Return Home",
|
"pages.returnHome": "Return Home",
|
||||||
"pages.serviceUnavailable": "{statusCode} - Service Unavailable",
|
"pages.serviceUnavailable": "{statusCode} - Service unavailable",
|
||||||
"pages.somethingWentWrong": "{statusCode} - Something went wrong"
|
"pages.somethingWentWrong": "{statusCode} - Something went wrong"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ interface ErrorProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
internalServerError: '{statusCode} - Internal Server Error',
|
internalServerError: '{statusCode} - Internal server error',
|
||||||
serviceUnavailable: '{statusCode} - Service Unavailable',
|
serviceUnavailable: '{statusCode} - Service unavailable',
|
||||||
somethingWentWrong: '{statusCode} - Something went wrong',
|
somethingWentWrong: '{statusCode} - Something went wrong',
|
||||||
oops: 'Oops',
|
oops: 'Oops',
|
||||||
returnHome: 'Return Home',
|
returnHome: 'Return Home',
|
||||||
|
|||||||
Reference in New Issue
Block a user