0.13.1-3 Fix
This commit is contained in:
1 parent
b2d8dffbf4
commit
63a45e70e7
10 files changed
+84
-123
No files matched your search
@@ -11740,97 +11740,88 @@ class PipelineService extends EventEmitter {
|
||||
if (mediaProfile === 'dvd' && analyzePlugin?.id === 'dvd') {
|
||||
try {
|
||||
const dvdSettings = await settingsService.getEffectiveSettingsMap('dvd');
|
||||
const dvdSeriesPluginEnabled = ['1', 'true', 'yes', 'on'].includes(
|
||||
String(dvdSettings?.dvd_series_plugin_enabled || '').trim().toLowerCase()
|
||||
);
|
||||
const dvdSeriesPrescanEnabled = ['1', 'true', 'yes', 'on'].includes(
|
||||
String(dvdSettings?.dvd_series_prescan_enabled || '').trim().toLowerCase()
|
||||
);
|
||||
const reviewResult = await this.runPluginReviewScan(analyzePlugin, job, {
|
||||
jobId: job.id,
|
||||
deviceInfo: deviceWithProfile,
|
||||
reviewMode: 'pre_rip',
|
||||
source: 'HANDBRAKE_SCAN',
|
||||
silent: true
|
||||
});
|
||||
pluginExecution = this.mergePluginExecutionState(pluginExecution, reviewResult?.pluginExecution || null);
|
||||
|
||||
if (dvdSeriesPluginEnabled && dvdSeriesPrescanEnabled) {
|
||||
const reviewResult = await this.runPluginReviewScan(analyzePlugin, job, {
|
||||
const scanText = Array.isArray(reviewResult?.scanLines)
|
||||
? reviewResult.scanLines.join('\n')
|
||||
: '';
|
||||
if (scanText) {
|
||||
const { DVDSeriesPlugin } = require('../plugins/DVDSeriesPlugin');
|
||||
const dvdSeriesPlugin = new DVDSeriesPlugin();
|
||||
const dvdSeriesContext = await this.buildPluginContext(dvdSeriesPlugin.id, {
|
||||
discInfo: deviceWithProfile,
|
||||
jobId: job.id,
|
||||
deviceInfo: deviceWithProfile,
|
||||
reviewMode: 'pre_rip',
|
||||
source: 'HANDBRAKE_SCAN',
|
||||
silent: true
|
||||
scanText,
|
||||
detectedTitle: effectiveDetectedTitle
|
||||
});
|
||||
pluginExecution = this.mergePluginExecutionState(pluginExecution, reviewResult?.pluginExecution || null);
|
||||
const seriesPluginResult = await dvdSeriesPlugin.analyze(device.path, job, dvdSeriesContext);
|
||||
pluginExecution = this.mergePluginExecutionState(
|
||||
pluginExecution,
|
||||
this.sanitizePluginExecutionState(dvdSeriesContext.getPluginExecution())
|
||||
);
|
||||
|
||||
const scanText = Array.isArray(reviewResult?.scanLines)
|
||||
? reviewResult.scanLines.join('\n')
|
||||
: '';
|
||||
if (scanText) {
|
||||
const { DVDSeriesPlugin } = require('../plugins/DVDSeriesPlugin');
|
||||
const dvdSeriesPlugin = new DVDSeriesPlugin();
|
||||
const dvdSeriesContext = await this.buildPluginContext(dvdSeriesPlugin.id, {
|
||||
discInfo: deviceWithProfile,
|
||||
jobId: job.id,
|
||||
scanText,
|
||||
detectedTitle: effectiveDetectedTitle
|
||||
});
|
||||
const seriesPluginResult = await dvdSeriesPlugin.analyze(device.path, job, dvdSeriesContext);
|
||||
pluginExecution = this.mergePluginExecutionState(
|
||||
pluginExecution,
|
||||
this.sanitizePluginExecutionState(dvdSeriesContext.getPluginExecution())
|
||||
);
|
||||
|
||||
seriesAnalysis = seriesPluginResult?.seriesAnalysis || null;
|
||||
seriesLookupHint = seriesPluginResult?.seriesLookupHint || null;
|
||||
const rawSeriesSummary = seriesAnalysis?.summary && typeof seriesAnalysis.summary === 'object'
|
||||
? seriesAnalysis.summary
|
||||
: null;
|
||||
const seriesLike = Boolean(rawSeriesSummary?.seriesLike);
|
||||
seriesAnalysis = rawSeriesSummary
|
||||
? {
|
||||
source: String(seriesAnalysis?.source || 'handbrake_scan_text').trim() || 'handbrake_scan_text',
|
||||
generatedAt: seriesAnalysis?.generatedAt || nowIso(),
|
||||
summary: {
|
||||
seriesLike,
|
||||
confidence: String(rawSeriesSummary?.confidence || 'low').trim().toLowerCase() || 'low',
|
||||
reasons: Array.isArray(rawSeriesSummary?.reasons) ? rawSeriesSummary.reasons : [],
|
||||
titleCount: Number(rawSeriesSummary?.titleCount || 0) || 0
|
||||
}
|
||||
seriesAnalysis = seriesPluginResult?.seriesAnalysis || null;
|
||||
seriesLookupHint = seriesPluginResult?.seriesLookupHint || null;
|
||||
const rawSeriesSummary = seriesAnalysis?.summary && typeof seriesAnalysis.summary === 'object'
|
||||
? seriesAnalysis.summary
|
||||
: null;
|
||||
const seriesLike = Boolean(rawSeriesSummary?.seriesLike);
|
||||
seriesAnalysis = rawSeriesSummary
|
||||
? {
|
||||
source: String(seriesAnalysis?.source || 'handbrake_scan_text').trim() || 'handbrake_scan_text',
|
||||
generatedAt: seriesAnalysis?.generatedAt || nowIso(),
|
||||
summary: {
|
||||
seriesLike,
|
||||
confidence: String(rawSeriesSummary?.confidence || 'low').trim().toLowerCase() || 'low',
|
||||
reasons: Array.isArray(rawSeriesSummary?.reasons) ? rawSeriesSummary.reasons : [],
|
||||
titleCount: Number(rawSeriesSummary?.titleCount || 0) || 0
|
||||
}
|
||||
: null;
|
||||
|
||||
if (seriesLike) {
|
||||
metadataProvider = 'tmdb';
|
||||
metadataCandidates = [];
|
||||
const fallbackQuery = String(seriesLookupHint?.query || effectiveDetectedTitle || '').trim() || null;
|
||||
if (fallbackQuery) {
|
||||
seriesLookupHint = {
|
||||
...(seriesLookupHint && typeof seriesLookupHint === 'object' ? seriesLookupHint : {}),
|
||||
query: fallbackQuery,
|
||||
seriesTitle: String(seriesLookupHint?.seriesTitle || fallbackQuery).trim() || fallbackQuery
|
||||
};
|
||||
}
|
||||
: null;
|
||||
|
||||
if (seriesPluginResult?.providerConfigured && seriesLookupHint?.query) {
|
||||
metadataCandidates = await tmdbService.searchSeriesWithSeasons(
|
||||
seriesLookupHint.query,
|
||||
{ language: dvdSettings?.dvd_series_language || null }
|
||||
).catch((error) => {
|
||||
logger.warn('dvd-series:tmdb-search-failed', {
|
||||
jobId: job.id,
|
||||
query: seriesLookupHint?.query || null,
|
||||
seasonNumber: seriesLookupHint?.seasonNumber || null,
|
||||
error: errorToMeta(error)
|
||||
});
|
||||
return [];
|
||||
});
|
||||
}
|
||||
if (seriesLike) {
|
||||
metadataProvider = 'tmdb';
|
||||
metadataCandidates = [];
|
||||
const fallbackQuery = String(seriesLookupHint?.query || effectiveDetectedTitle || '').trim() || null;
|
||||
if (fallbackQuery) {
|
||||
seriesLookupHint = {
|
||||
...(seriesLookupHint && typeof seriesLookupHint === 'object' ? seriesLookupHint : {}),
|
||||
query: fallbackQuery,
|
||||
seriesTitle: String(seriesLookupHint?.seriesTitle || fallbackQuery).trim() || fallbackQuery
|
||||
};
|
||||
}
|
||||
|
||||
logger.info('dvd-series:analyze:done', {
|
||||
jobId: job.id,
|
||||
seriesLike: Boolean(seriesAnalysis?.summary?.seriesLike),
|
||||
confidence: seriesAnalysis?.summary?.confidence || null,
|
||||
metadataProvider,
|
||||
metadataCandidateCount: Array.isArray(metadataCandidates) ? metadataCandidates.length : 0,
|
||||
seriesLookupHint
|
||||
});
|
||||
if (seriesPluginResult?.providerConfigured && seriesLookupHint?.query) {
|
||||
metadataCandidates = await tmdbService.searchSeriesWithSeasons(
|
||||
seriesLookupHint.query,
|
||||
{ language: dvdSettings?.dvd_series_language || null }
|
||||
).catch((error) => {
|
||||
logger.warn('dvd-series:tmdb-search-failed', {
|
||||
jobId: job.id,
|
||||
query: seriesLookupHint?.query || null,
|
||||
seasonNumber: seriesLookupHint?.seasonNumber || null,
|
||||
error: errorToMeta(error)
|
||||
});
|
||||
return [];
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
logger.info('dvd-series:analyze:done', {
|
||||
jobId: job.id,
|
||||
seriesLike: Boolean(seriesAnalysis?.summary?.seriesLike),
|
||||
confidence: seriesAnalysis?.summary?.confidence || null,
|
||||
metadataProvider,
|
||||
metadataCandidateCount: Array.isArray(metadataCandidates) ? metadataCandidates.length : 0,
|
||||
seriesLookupHint
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
logger.warn('dvd-series:analyze:fallback-legacy', {
|
||||
|
||||
Reference in new issue
Block a user