refactor: rename some remaining Overseerr occurrences (#1397)

* refactor: rename some remaining Overseerr occurrences

This PR renames some remaining occurrences of Overseerr to Jellyseerr. This includes the OpenAPI
specification, log file names and some variables and console messages.

* fix(i18n): add missing translation
This commit is contained in:
Gauthier
2025-02-26 06:08:00 +01:00
committed by GitHub
parent a790b1abcc
commit 27112be933
32 changed files with 52 additions and 52 deletions

View File

@@ -97,7 +97,7 @@ When adding new UI text, please try to adhere to the following guidelines:
## Translation
We use [Weblate](https://jellyseerr.borgcube.de/projects/jellyseerr/jellyseerr-frontend/) for our translations, and your help with localizing Overseerr would be greatly appreciated! If your language is not listed below, please [open a feature request](https://github.com/fallenbagel/jellyseerr/issues/new/choose).
We use [Weblate](https://jellyseerr.borgcube.de/projects/jellyseerr/jellyseerr-frontend/) for our translations, and your help with localizing Jellyseerr would be greatly appreciated! If your language is not listed below, please [open a feature request](https://github.com/fallenbagel/jellyseerr/issues/new/choose).
<a href="https://jellyseerr.borgcube.de/engage/jellysseerr/"><img src="https://jellyseerr.borgcube.de/widget/jellyseerr/multi-auto.svg" alt="Translation status" /></a>

View File

@@ -4,7 +4,7 @@
"vapidPublic": "BK_EpP8NDm9waor2zn6_S28o3ZYv4kCkJOfYpO3pt3W6jnPmxrgTLANUBNbbyaNatPnSQ12De9CeqSYQrqWzHTs",
"main": {
"apiKey": "testkey",
"applicationTitle": "Overseerr",
"applicationTitle": "Jellyseerr",
"applicationUrl": "",
"csrfProtection": false,
"cacheImages": false,
@@ -71,7 +71,7 @@
"ignoreTls": false,
"requireTls": false,
"allowSelfSigned": false,
"senderName": "Overseerr"
"senderName": "Jellyseerr"
}
},
"discord": {

View File

@@ -1,19 +1,19 @@
openapi: '3.0.2'
info:
title: 'Overseerr API'
title: 'Jellyseerr API'
version: '1.0.0'
description: |
This is the documentation for the Overseerr API backend.
This is the documentation for the Jellyseerr API backend.
Two primary authentication methods are supported:
- **Cookie Authentication**: A valid sign-in to the `/auth/plex` or `/auth/local` will generate a valid authentication cookie.
- **API Key Authentication**: Sign-in is also possible by passing an `X-Api-Key` header along with a valid API Key generated by Overseerr.
- **API Key Authentication**: Sign-in is also possible by passing an `X-Api-Key` header along with a valid API Key generated by Jellyseerr.
tags:
- name: public
description: Public API endpoints requiring no authentication.
- name: settings
description: Endpoints related to Overseerr's settings and configuration.
description: Endpoints related to Jellyseerr's settings and configuration.
- name: auth
description: Endpoints related to logging in or out, and the currently authenticated user.
- name: users
@@ -160,7 +160,7 @@ components:
example: en
applicationTitle:
type: string
example: Overseerr
example: Jellyseerr
applicationUrl:
type: string
example: https://os.example.com
@@ -1438,7 +1438,7 @@ components:
example: no-reply@example.com
senderName:
type: string
example: Overseerr
example: Jellyseerr
smtpHost:
type: string
example: 127.0.0.1
@@ -1969,8 +1969,8 @@ components:
paths:
/status:
get:
summary: Get Overseerr status
description: Returns the current Overseerr status in a JSON object.
summary: Get Jellyseerr status
description: Returns the current Jellyseerr status in a JSON object.
security: []
tags:
- public

View File

@@ -5,7 +5,7 @@
"scripts": {
"preinstall": "npx only-allow pnpm",
"postinstall": "node postinstall-win.js",
"dev": "nodemon -e ts --watch server --watch overseerr-api.yml -e .json,.ts,.yml -x ts-node -r tsconfig-paths/register --files --project server/tsconfig.json server/index.ts",
"dev": "nodemon -e ts --watch server --watch jellyseerr-api.yml -e .json,.ts,.yml -x ts-node -r tsconfig-paths/register --files --project server/tsconfig.json server/index.ts",
"build:server": "tsc --project server/tsconfig.json && copyfiles -u 2 server/templates/**/*.{html,pug} dist/templates && tsc-alias -p server/tsconfig.json",
"build:next": "next build",
"build": "pnpm build:next && pnpm build:server",

View File

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 61 KiB

View File

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 53 KiB

View File

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 53 KiB

View File

@@ -72,7 +72,7 @@ class GithubAPI extends ExternalAPI {
);
}
public async getOverseerrReleases({
public async getJellyseerrReleases({
take = 20,
}: {
take?: number;
@@ -88,14 +88,14 @@ class GithubAPI extends ExternalAPI {
return data;
} catch (e) {
logger.warn(
"Failed to retrieve GitHub releases. This may be an issue on GitHub's end. Overseerr can't check if it's on the latest version.",
"Failed to retrieve GitHub releases. This may be an issue on GitHub's end. Jellyseerr can't check if it's on the latest version.",
{ label: 'GitHub API', errorMessage: e.message }
);
return [];
}
}
public async getOverseerrCommits({
public async getJellyseerrCommits({
take = 20,
branch = 'develop',
}: {
@@ -114,7 +114,7 @@ class GithubAPI extends ExternalAPI {
return data;
} catch (e) {
logger.warn(
"Failed to retrieve GitHub commits. This may be an issue on GitHub's end. Overseerr can't check if it's on the latest version.",
"Failed to retrieve GitHub commits. This may be an issue on GitHub's end. Jellyseerr can't check if it's on the latest version.",
{ label: 'GitHub API', errorMessage: e.message }
);
return [];

View File

@@ -124,9 +124,9 @@ class PlexAPI {
// },
options: {
identifier: settings.clientId,
product: 'Overseerr',
deviceName: 'Overseerr',
platform: 'Overseerr',
product: 'Jellyseerr',
deviceName: 'Jellyseerr',
platform: 'Jellyseerr',
},
});
}

View File

@@ -41,9 +41,9 @@ import path from 'path';
import swaggerUi from 'swagger-ui-express';
import YAML from 'yamljs';
const API_SPEC_PATH = path.join(__dirname, '../overseerr-api.yml');
const API_SPEC_PATH = path.join(__dirname, '../jellyseerr-api.yml');
logger.info(`Starting Overseerr version ${getAppVersion()}`);
logger.info(`Starting Jellyseerr version ${getAppVersion()}`);
const dev = process.env.NODE_ENV !== 'production';
const app = next({ dev });
const handle = app.getRequestHandler();

View File

@@ -188,7 +188,7 @@ class SlackAgent
type: 'actions',
elements: [
{
action_id: 'open-in-overseerr',
action_id: 'open-in-jellyseerr',
type: 'button',
url,
text: {

View File

@@ -130,7 +130,7 @@ class WatchlistSync {
switch (e.constructor) {
// During watchlist sync, these errors aren't necessarily
// a problem with Overseerr. Since we are auto syncing these constantly, it's
// a problem with Jellyseerr. Since we are auto syncing these constantly, it's
// possible they are unexpectedly at their quota limit, for example. So we'll
// instead log these as debug messages.
case RequestPermissionError:

View File

@@ -43,14 +43,14 @@ const logger = winston.createLogger({
}),
new winston.transports.DailyRotateFile({
filename: process.env.CONFIG_DIRECTORY
? `${process.env.CONFIG_DIRECTORY}/logs/overseerr-%DATE%.log`
: path.join(__dirname, '../config/logs/overseerr-%DATE%.log'),
? `${process.env.CONFIG_DIRECTORY}/logs/jellyseerr-%DATE%.log`
: path.join(__dirname, '../config/logs/jellyseerr-%DATE%.log'),
datePattern: 'YYYY-MM-DD',
zippedArchive: true,
maxSize: '20m',
maxFiles: '7d',
createSymlink: true,
symlinkName: 'overseerr.log',
symlinkName: 'jellyseerr.log',
}),
new winston.transports.DailyRotateFile({
filename: process.env.CONFIG_DIRECTORY

View File

@@ -158,7 +158,7 @@ authRoutes.post('/plex', async (req, res, next) => {
});
} else {
logger.info(
'Sign-in attempt from Plex user with access to the media server; creating new Overseerr user',
'Sign-in attempt from Plex user with access to the media server; creating new Jellyseerr user',
{
label: 'API',
ip: req.ip,
@@ -274,7 +274,7 @@ authRoutes.post('/jellyfin', async (req, res, next) => {
if (user) {
deviceId = user.jellyfinDeviceId ?? '';
} else {
deviceId = Buffer.from(`BOT_overseerr_${body.username ?? ''}`).toString(
deviceId = Buffer.from(`BOT_jellyseerr_${body.username ?? ''}`).toString(
'base64'
);
}
@@ -446,7 +446,7 @@ authRoutes.post('/jellyfin', async (req, res, next) => {
});
} else if (!user) {
logger.info(
'Sign-in attempt from Jellyfin user with access to the media server; creating new Overseerr user',
'Sign-in attempt from Jellyfin user with access to the media server; creating new Jellyseerr user',
{
label: 'API',
ip: req.ip,
@@ -584,7 +584,7 @@ authRoutes.post('/local', async (req, res, next) => {
.getOne();
if (!user || !(await user.passwordMatch(body.password))) {
logger.warn('Failed sign-in attempt using invalid Overseerr password', {
logger.warn('Failed sign-in attempt using invalid Jellyseerr password', {
label: 'API',
ip: req.ip,
email: body.email,
@@ -674,7 +674,7 @@ authRoutes.post('/local', async (req, res, next) => {
return res.status(200).json(user?.filter() ?? {});
} catch (e) {
logger.error(
'Something went wrong authenticating with Overseerr password',
'Something went wrong authenticating with Jellyseerr password',
{
label: 'API',
errorMessage: e.message,

View File

@@ -55,7 +55,7 @@ router.get<unknown, StatusResponse>('/status', async (req, res) => {
let commitsBehind = 0;
if (currentVersion.startsWith('develop-') && commitTag !== 'local') {
const commits = await githubApi.getOverseerrCommits();
const commits = await githubApi.getJellyseerrCommits();
if (commits.length) {
const filteredCommits = commits.filter(
@@ -74,7 +74,7 @@ router.get<unknown, StatusResponse>('/status', async (req, res) => {
}
}
} else if (commitTag !== 'local') {
const releases = await githubApi.getOverseerrReleases();
const releases = await githubApi.getJellyseerrReleases();
if (releases.length) {
const latestVersion = releases[0];
@@ -403,7 +403,7 @@ router.get('/watchproviders/tv', async (req, res, next) => {
router.get('/', (_req, res) => {
return res.status(200).json({
api: 'Overseerr API',
api: 'Jellyseerr API',
version: '1.0',
});
});

View File

@@ -419,7 +419,7 @@ userSettingsRoutes.post<{ username: string; password: string }>(
const hostname = getHostname();
const deviceId = Buffer.from(
`BOT_overseerr_${req.user.username ?? ''}`
`BOT_jellyseerr_${req.user.username ?? ''}`
).toString('base64');
const jellyfinserver = new JellyfinAPI(hostname, undefined, deviceId);

View File

@@ -298,7 +298,7 @@ const BlacklistedItem = ({ item, revalidateList }: BlacklistedItemProps) => {
src={
title?.posterPath
? `https://image.tmdb.org/t/p/w600_and_h900_bestv2${title.posterPath}`
: '/images/overseerr_poster_not_found.png'
: '/images/jellyseerr_poster_not_found.png'
}
alt=""
sizes="100vw"

View File

@@ -233,7 +233,7 @@ const CollectionDetails = ({ collection }: CollectionDetailsProps) => {
src={
data.posterPath
? `https://image.tmdb.org/t/p/w600_and_h900_bestv2${data.posterPath}`
: '/images/overseerr_poster_not_found.png'
: '/images/jellyseerr_poster_not_found.png'
}
alt=""
sizes="100vw"

View File

@@ -240,7 +240,7 @@ const IssueDetails = () => {
src={
data.posterPath
? `https://image.tmdb.org/t/p/w600_and_h900_bestv2${data.posterPath}`
: '/images/overseerr_poster_not_found.png'
: '/images/jellyseerr_poster_not_found.png'
}
alt=""
sizes="100vw"

View File

@@ -142,7 +142,7 @@ const IssueItem = ({ issue }: IssueItemProps) => {
src={
title.posterPath
? `https://image.tmdb.org/t/p/w600_and_h900_bestv2${title.posterPath}`
: '/images/overseerr_poster_not_found.png'
: '/images/jellyseerr_poster_not_found.png'
}
alt=""
sizes="100vw"

View File

@@ -505,7 +505,7 @@ const MovieDetails = ({ movie }: MovieDetailsProps) => {
src={
data.posterPath
? `https://image.tmdb.org/t/p/w600_and_h900_bestv2${data.posterPath}`
: '/images/overseerr_poster_not_found.png'
: '/images/jellyseerr_poster_not_found.png'
}
alt=""
sizes="100vw"

View File

@@ -2,7 +2,7 @@ interface PWAHeaderProps {
applicationTitle?: string;
}
const PWAHeader = ({ applicationTitle = 'Overseerr' }: PWAHeaderProps) => {
const PWAHeader = ({ applicationTitle = 'Jellyseerr' }: PWAHeaderProps) => {
return (
<>
<link

View File

@@ -618,7 +618,7 @@ const RequestCard = ({ request, onTitleData }: RequestCardProps) => {
src={
title.posterPath
? `https://image.tmdb.org/t/p/w600_and_h900_bestv2${title.posterPath}`
: '/images/overseerr_poster_not_found.png'
: '/images/jellyseerr_poster_not_found.png'
}
alt=""
sizes="100vw"

View File

@@ -453,7 +453,7 @@ const RequestItem = ({ request, revalidateList }: RequestItemProps) => {
src={
title.posterPath
? `https://image.tmdb.org/t/p/w600_and_h900_bestv2${title.posterPath}`
: '/images/overseerr_poster_not_found.png'
: '/images/jellyseerr_poster_not_found.png'
}
alt=""
sizes="100vw"

View File

@@ -441,7 +441,7 @@ const CollectionRequestModal = ({
src={
part.posterPath
? `https://image.tmdb.org/t/p/w600_and_h900_bestv2${part.posterPath}`
: '/images/overseerr_poster_not_found.png'
: '/images/jellyseerr_poster_not_found.png'
}
alt=""
sizes="100vw"

View File

@@ -92,7 +92,7 @@ const SearchByNameModal = ({
<Image
src={
item.remotePoster ??
'/images/overseerr_poster_not_found.png'
'/images/jellyseerr_poster_not_found.png'
}
alt={item.title}
className="w-100 h-auto rounded-md"

View File

@@ -35,7 +35,7 @@ import useSWR from 'swr';
const messages = defineMessages('components.Settings.SettingsLogs', {
logs: 'Logs',
logsDescription:
'You can also view these logs directly via <code>stdout</code>, or in <code>{appDataPath}/logs/overseerr.log</code>.',
'You can also view these logs directly via <code>stdout</code>, or in <code>{appDataPath}/logs/jellyseerr.log</code>.',
time: 'Timestamp',
level: 'Severity',
label: 'Label',

View File

@@ -352,7 +352,7 @@ const TitleCard = ({
src={
image
? `https://image.tmdb.org/t/p/w300_and_h450_face${image}`
: `/images/overseerr_poster_not_found_logo_top.png`
: `/images/jellyseerr_poster_not_found_logo_top.png`
}
style={{ width: '100%', height: '100%', objectFit: 'cover' }}
fill

View File

@@ -547,7 +547,7 @@ const TvDetails = ({ tv }: TvDetailsProps) => {
src={
data.posterPath
? `https://image.tmdb.org/t/p/w600_and_h900_bestv2${data.posterPath}`
: '/images/overseerr_poster_not_found.png'
: '/images/jellyseerr_poster_not_found.png'
}
alt=""
sizes="100vw"

View File

@@ -10,7 +10,7 @@ export interface SettingsContextProps {
const defaultSettings = {
initialized: false,
applicationTitle: 'Overseerr',
applicationTitle: 'Jellyseerr',
applicationUrl: '',
hideAvailable: false,
localLogin: true,

View File

@@ -904,7 +904,7 @@
"components.Settings.SettingsLogs.level": "Severity",
"components.Settings.SettingsLogs.logDetails": "Log Details",
"components.Settings.SettingsLogs.logs": "Logs",
"components.Settings.SettingsLogs.logsDescription": "You can also view these logs directly via <code>stdout</code>, or in <code>{appDataPath}/logs/overseerr.log</code>.",
"components.Settings.SettingsLogs.logsDescription": "You can also view these logs directly via <code>stdout</code>, or in <code>{appDataPath}/logs/jellyseerr.log</code>.",
"components.Settings.SettingsLogs.message": "Message",
"components.Settings.SettingsLogs.pauseLogs": "Pause",
"components.Settings.SettingsLogs.resumeLogs": "Resume",

View File

@@ -57,14 +57,14 @@ class PlexOAuth {
const browser = Bowser.getParser(window.navigator.userAgent);
this.plexHeaders = {
Accept: 'application/json',
'X-Plex-Product': 'Overseerr',
'X-Plex-Product': 'Jellyseerr',
'X-Plex-Version': 'Plex OAuth',
'X-Plex-Client-Identifier': clientId,
'X-Plex-Model': 'Plex OAuth',
'X-Plex-Platform': browser.getBrowserName(),
'X-Plex-Platform-Version': browser.getBrowserVersion(),
'X-Plex-Device': browser.getOSName(),
'X-Plex-Device-Name': `${browser.getBrowserName()} (Overseerr)`,
'X-Plex-Device-Name': `${browser.getBrowserName()} (Jellyseerr)`,
'X-Plex-Device-Screen-Resolution':
window.screen.width + 'x' + window.screen.height,
'X-Plex-Language': 'en',