mirror of
https://github.com/sct/overseerr.git
synced 2025-10-02 16:43:16 +02:00
fix(plex sync): catch errors that occur during processMovie
this also removes the unique constraint on imdbId re #244 #246 #250
This commit is contained in:
@@ -11,6 +11,7 @@
|
|||||||
"start": "NODE_ENV=production node dist/index.js",
|
"start": "NODE_ENV=production node dist/index.js",
|
||||||
"i18n:extract": "extract-messages -l=en -o src/i18n/locale -d en --flat true --overwriteDefault false './src/**/!(*.test).{ts,tsx}'",
|
"i18n:extract": "extract-messages -l=en -o src/i18n/locale -d en --flat true --overwriteDefault false './src/**/!(*.test).{ts,tsx}'",
|
||||||
"migration:generate": "ts-node --project server/tsconfig.json ./node_modules/.bin/typeorm migration:generate",
|
"migration:generate": "ts-node --project server/tsconfig.json ./node_modules/.bin/typeorm migration:generate",
|
||||||
|
"migration:create": "ts-node --project server/tsconfig.json ./node_modules/.bin/typeorm migration:create",
|
||||||
"migration:run": "ts-node --project server/tsconfig.json ./node_modules/.bin/typeorm migration:run",
|
"migration:run": "ts-node --project server/tsconfig.json ./node_modules/.bin/typeorm migration:run",
|
||||||
"format": "prettier --write ."
|
"format": "prettier --write ."
|
||||||
},
|
},
|
||||||
|
@@ -51,10 +51,19 @@ class JobPlexSync {
|
|||||||
|
|
||||||
private async processMovie(plexitem: PlexLibraryItem) {
|
private async processMovie(plexitem: PlexLibraryItem) {
|
||||||
const mediaRepository = getRepository(Media);
|
const mediaRepository = getRepository(Media);
|
||||||
|
try {
|
||||||
if (plexitem.guid.match(plexRegex)) {
|
if (plexitem.guid.match(plexRegex)) {
|
||||||
const metadata = await this.plexClient.getMetadata(plexitem.ratingKey);
|
const metadata = await this.plexClient.getMetadata(plexitem.ratingKey);
|
||||||
const newMedia = new Media();
|
const newMedia = new Media();
|
||||||
|
|
||||||
|
if (!metadata.Guid) {
|
||||||
|
logger.debug('No Guid metadata for this title. Skipping', {
|
||||||
|
label: 'Plex Sync',
|
||||||
|
ratingKey: plexitem.ratingKey,
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
metadata.Guid.forEach((ref) => {
|
metadata.Guid.forEach((ref) => {
|
||||||
if (ref.id.match(imdbRegex)) {
|
if (ref.id.match(imdbRegex)) {
|
||||||
newMedia.imdbId = ref.id.match(imdbRegex)?.[1] ?? undefined;
|
newMedia.imdbId = ref.id.match(imdbRegex)?.[1] ?? undefined;
|
||||||
@@ -110,6 +119,14 @@ class JobPlexSync {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} catch (e) {
|
||||||
|
this.log(
|
||||||
|
`Failed to process plex item. ratingKey: ${
|
||||||
|
plexitem.parentRatingKey ?? plexitem.ratingKey
|
||||||
|
}`,
|
||||||
|
'error'
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async processShow(plexitem: PlexLibraryItem) {
|
private async processShow(plexitem: PlexLibraryItem) {
|
||||||
|
20
server/migration/1607928251245-DropImdbIdConstraint.ts
Normal file
20
server/migration/1607928251245-DropImdbIdConstraint.ts
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
import { MigrationInterface, QueryRunner, TableUnique } from 'typeorm';
|
||||||
|
|
||||||
|
export class DropImdbIdConstraint1607928251245 implements MigrationInterface {
|
||||||
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
await queryRunner.dropUniqueConstraint(
|
||||||
|
'media',
|
||||||
|
'UQ_7ff2d11f6a83cb52386eaebe74b'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
await queryRunner.createUniqueConstraint(
|
||||||
|
'media',
|
||||||
|
new TableUnique({
|
||||||
|
name: 'UQ_7ff2d11f6a83cb52386eaebe74b',
|
||||||
|
columnNames: ['imdbId'],
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user