mirror of
https://github.com/chrisbenincasa/tunarr
synced 2026-04-21 13:37:15 +00:00
fix: implement new subtitle extraction paths for new JF/Emby scanners
Some checks are pending
Build / build (push) Waiting to run
Some checks are pending
Build / build (push) Waiting to run
This commit is contained in:
parent
5db34080a4
commit
2c8dd5f059
5 changed files with 48 additions and 7 deletions
|
|
@ -4,8 +4,10 @@ import { IProgramDB } from '../../db/interfaces/IProgramDB.ts';
|
|||
import { MediaSourceDB } from '../../db/mediaSourceDB.ts';
|
||||
import { MediaSourceType } from '../../db/schema/base.ts';
|
||||
import { MediaSourceWithRelations } from '../../db/schema/derivedTypes.ts';
|
||||
import { QueryResult } from '../../external/BaseApiClient.ts';
|
||||
import { EmbyApiClient } from '../../external/emby/EmbyApiClient.ts';
|
||||
import { MediaSourceApiFactory } from '../../external/MediaSourceApiFactory.ts';
|
||||
import { ExternalSubtitleDownloader } from '../../stream/ExternalSubtitleDownloader.ts';
|
||||
import { WrappedError } from '../../types/errors.ts';
|
||||
import { KEYS } from '../../types/inject.ts';
|
||||
import { EmbyT } from '../../types/internal.ts';
|
||||
|
|
@ -13,9 +15,10 @@ import { EmbyMusicVideo } from '../../types/Media.ts';
|
|||
import { Result } from '../../types/result.ts';
|
||||
import { Logger } from '../../util/logging/LoggerFactory.ts';
|
||||
import { MeilisearchService } from '../MeilisearchService.ts';
|
||||
import { EmbyScanUtil } from './EmbyScanUtil.ts';
|
||||
import { MediaSourceMusicVideoScanner } from './MediaSourceMusicVideoScanner.ts';
|
||||
import { MediaSourceProgressService } from './MediaSourceProgressService.ts';
|
||||
import { ScanContext } from './MediaSourceScanner.ts';
|
||||
import { GetSubtitlesRequest, ScanContext } from './MediaSourceScanner.ts';
|
||||
|
||||
@injectable()
|
||||
export class EmbyMediaSourceMusicVideoScanner extends MediaSourceMusicVideoScanner<
|
||||
|
|
@ -37,6 +40,8 @@ export class EmbyMediaSourceMusicVideoScanner extends MediaSourceMusicVideoScann
|
|||
mediaSourceProgressService: MediaSourceProgressService,
|
||||
@inject(KEYS.ProgramDaoMinterFactory)
|
||||
programMinterFactory: interfaces.AutoFactory<ProgramDaoMinter>,
|
||||
@inject(ExternalSubtitleDownloader)
|
||||
externalSubtitleDownloader: ExternalSubtitleDownloader,
|
||||
) {
|
||||
super(
|
||||
logger,
|
||||
|
|
@ -45,6 +50,7 @@ export class EmbyMediaSourceMusicVideoScanner extends MediaSourceMusicVideoScann
|
|||
searchService,
|
||||
mediaSourceProgressService,
|
||||
programMinterFactory(),
|
||||
externalSubtitleDownloader,
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -94,4 +100,11 @@ export class EmbyMediaSourceMusicVideoScanner extends MediaSourceMusicVideoScann
|
|||
protected getExternalKey(video: EmbyMusicVideo): string {
|
||||
return video.externalId;
|
||||
}
|
||||
|
||||
protected getSubtitles(
|
||||
context: ScanContext<EmbyApiClient>,
|
||||
request: GetSubtitlesRequest,
|
||||
): Promise<QueryResult<string>> {
|
||||
return EmbyScanUtil.getSubtitles(context, request);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,8 +4,10 @@ import { ProgramDaoMinter } from '../../db/converters/ProgramMinter.ts';
|
|||
import { IProgramDB } from '../../db/interfaces/IProgramDB.ts';
|
||||
import { MediaSourceDB } from '../../db/mediaSourceDB.ts';
|
||||
import type { MediaSourceWithRelations } from '../../db/schema/derivedTypes.ts';
|
||||
import { QueryResult } from '../../external/BaseApiClient.ts';
|
||||
import { EmbyApiClient } from '../../external/emby/EmbyApiClient.ts';
|
||||
import { MediaSourceApiFactory } from '../../external/MediaSourceApiFactory.ts';
|
||||
import { ExternalSubtitleDownloader } from '../../stream/ExternalSubtitleDownloader.ts';
|
||||
import { WrappedError } from '../../types/errors.ts';
|
||||
import { KEYS } from '../../types/inject.ts';
|
||||
import type { EmbyT } from '../../types/internal.ts';
|
||||
|
|
@ -13,9 +15,10 @@ import type { EmbyOtherVideo } from '../../types/Media.ts';
|
|||
import { Result } from '../../types/result.ts';
|
||||
import { Logger } from '../../util/logging/LoggerFactory.ts';
|
||||
import { MeilisearchService } from '../MeilisearchService.ts';
|
||||
import { EmbyScanUtil } from './EmbyScanUtil.ts';
|
||||
import { MediaSourceOtherVideoScanner } from './MediaSourceOtherVideoScanner.ts';
|
||||
import { MediaSourceProgressService } from './MediaSourceProgressService.ts';
|
||||
import type { ScanContext } from './MediaSourceScanner.ts';
|
||||
import type { GetSubtitlesRequest, ScanContext } from './MediaSourceScanner.ts';
|
||||
|
||||
@injectable()
|
||||
export class EmbyMediaSourceOtherVideoScanner extends MediaSourceOtherVideoScanner<
|
||||
|
|
@ -37,6 +40,8 @@ export class EmbyMediaSourceOtherVideoScanner extends MediaSourceOtherVideoScann
|
|||
mediaSourceProgressService: MediaSourceProgressService,
|
||||
@inject(KEYS.ProgramDaoMinterFactory)
|
||||
programMinterFactory: interfaces.AutoFactory<ProgramDaoMinter>,
|
||||
@inject(ExternalSubtitleDownloader)
|
||||
externalSubtitleDownloader: ExternalSubtitleDownloader,
|
||||
) {
|
||||
super(
|
||||
logger,
|
||||
|
|
@ -45,6 +50,7 @@ export class EmbyMediaSourceOtherVideoScanner extends MediaSourceOtherVideoScann
|
|||
searchService,
|
||||
mediaSourceProgressService,
|
||||
programMinterFactory(),
|
||||
externalSubtitleDownloader,
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -94,4 +100,11 @@ export class EmbyMediaSourceOtherVideoScanner extends MediaSourceOtherVideoScann
|
|||
protected getExternalKey(video: EmbyOtherVideo): string {
|
||||
return video.externalId;
|
||||
}
|
||||
|
||||
protected getSubtitles(
|
||||
context: ScanContext<EmbyApiClient>,
|
||||
request: GetSubtitlesRequest,
|
||||
): Promise<QueryResult<string>> {
|
||||
return EmbyScanUtil.getSubtitles(context, request);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,8 +4,10 @@ import { IProgramDB } from '../../db/interfaces/IProgramDB.ts';
|
|||
import { MediaSourceDB } from '../../db/mediaSourceDB.ts';
|
||||
import { MediaSourceType } from '../../db/schema/base.ts';
|
||||
import { MediaSourceWithRelations } from '../../db/schema/derivedTypes.ts';
|
||||
import { QueryResult } from '../../external/BaseApiClient.ts';
|
||||
import { JellyfinApiClient } from '../../external/jellyfin/JellyfinApiClient.ts';
|
||||
import { MediaSourceApiFactory } from '../../external/MediaSourceApiFactory.ts';
|
||||
import { ExternalSubtitleDownloader } from '../../stream/ExternalSubtitleDownloader.ts';
|
||||
import { WrappedError } from '../../types/errors.ts';
|
||||
import { KEYS } from '../../types/inject.ts';
|
||||
import { JellyfinT } from '../../types/internal.ts';
|
||||
|
|
@ -13,9 +15,10 @@ import { JellyfinMusicVideo } from '../../types/Media.ts';
|
|||
import { Result } from '../../types/result.ts';
|
||||
import { Logger } from '../../util/logging/LoggerFactory.ts';
|
||||
import { MeilisearchService } from '../MeilisearchService.ts';
|
||||
import { JellyfinScanUtil } from './JellyfinScanUtil.ts';
|
||||
import { MediaSourceMusicVideoScanner } from './MediaSourceMusicVideoScanner.ts';
|
||||
import { MediaSourceProgressService } from './MediaSourceProgressService.ts';
|
||||
import { ScanContext } from './MediaSourceScanner.ts';
|
||||
import { GetSubtitlesRequest, ScanContext } from './MediaSourceScanner.ts';
|
||||
|
||||
@injectable()
|
||||
export class JellyfinMediaSourceMusicVideoScanner extends MediaSourceMusicVideoScanner<
|
||||
|
|
@ -37,6 +40,8 @@ export class JellyfinMediaSourceMusicVideoScanner extends MediaSourceMusicVideoS
|
|||
mediaSourceProgressService: MediaSourceProgressService,
|
||||
@inject(KEYS.ProgramDaoMinterFactory)
|
||||
programMinterFactory: interfaces.AutoFactory<ProgramDaoMinter>,
|
||||
@inject(ExternalSubtitleDownloader)
|
||||
externalSubtitleDownloader: ExternalSubtitleDownloader,
|
||||
) {
|
||||
super(
|
||||
logger,
|
||||
|
|
@ -45,6 +50,7 @@ export class JellyfinMediaSourceMusicVideoScanner extends MediaSourceMusicVideoS
|
|||
searchService,
|
||||
mediaSourceProgressService,
|
||||
programMinterFactory(),
|
||||
externalSubtitleDownloader,
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -101,4 +107,11 @@ export class JellyfinMediaSourceMusicVideoScanner extends MediaSourceMusicVideoS
|
|||
protected getExternalKey(video: JellyfinMusicVideo): string {
|
||||
return video.externalId;
|
||||
}
|
||||
|
||||
protected getSubtitles(
|
||||
context: ScanContext<JellyfinApiClient>,
|
||||
request: GetSubtitlesRequest,
|
||||
): Promise<QueryResult<string>> {
|
||||
return JellyfinScanUtil.getSubtitles(context, request);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import type { MediaSourceDB } from '../../db/mediaSourceDB.ts';
|
|||
import type { RemoteMediaSourceType } from '../../db/schema/MediaSource.ts';
|
||||
import { ProgramType } from '../../db/schema/Program.ts';
|
||||
import type { MediaSourceApiClient } from '../../external/MediaSourceApiClient.ts';
|
||||
import type { ExternalSubtitleDownloader } from '../../stream/ExternalSubtitleDownloader.ts';
|
||||
import type { HasMediaSourceInfo } from '../../types/Media.ts';
|
||||
import { Result } from '../../types/result.ts';
|
||||
import type { Logger } from '../../util/logging/LoggerFactory.ts';
|
||||
|
|
@ -34,8 +35,9 @@ export abstract class MediaSourceMusicVideoScanner<
|
|||
private searchService: MeilisearchService,
|
||||
private mediaSourceProgressService: MediaSourceProgressService,
|
||||
protected programMinter: ProgramDaoMinter,
|
||||
externalSubtitleDownloader: ExternalSubtitleDownloader,
|
||||
) {
|
||||
super(logger, mediaSourceDB);
|
||||
super(logger, mediaSourceDB, externalSubtitleDownloader);
|
||||
}
|
||||
|
||||
protected async scanInternal(
|
||||
|
|
|
|||
|
|
@ -230,9 +230,9 @@ export class SubtitleExtractorTask extends Task2<
|
|||
|
||||
const filePath = getSubtitleCacheFilePath(
|
||||
{
|
||||
externalKey: program.program.externalKey,
|
||||
externalSourceId: tag(program.program.externalSourceId),
|
||||
externalSourceType: program.program.externalSourceType,
|
||||
externalKey: program.program.externalId,
|
||||
externalSourceId: tag(program.program.mediaSourceId),
|
||||
externalSourceType: program.program.sourceType,
|
||||
id: program.uniqueId,
|
||||
},
|
||||
{ streamIndex: subtitle.index, codec: subtitle.codec },
|
||||
|
|
|
|||
Loading…
Reference in a new issue