MCPcopy Create free account
hub / github.com/DialmasterOrg/Youtarr / doSpecificDownloads

Method doSpecificDownloads

server/modules/downloadModule.js:592–744  ·  view source on GitHub ↗
(reqOrJobData, isNextJob = false)

Source from the content-addressed store, hash-verified

590 }
591
592 async doSpecificDownloads(reqOrJobData, isNextJob = false) {
593 const jobData = reqOrJobData.body ? reqOrJobData.body : reqOrJobData;
594
595 // Build job type with optional source indicator
596 let jobType = MANUAL_DOWNLOAD_LABEL;
597 const initiatedBy = this.getJobDataValue(jobData, 'initiatedBy');
598 if (initiatedBy && initiatedBy.type === 'api_key' && initiatedBy.name) {
599 jobType = `${MANUAL_DOWNLOAD_LABEL} (via API: ${initiatedBy.name})`;
600 }
601 const jobLabel = this.getJobDataValue(jobData, 'jobLabel');
602 if (jobLabel && typeof jobLabel === 'string') {
603 jobType = jobLabel;
604 }
605
606 logger.info({ jobData }, 'Running specific downloads job');
607
608 const urls = reqOrJobData.body
609 ? reqOrJobData.body.urls
610 : reqOrJobData.data.urls;
611 const jobId = await jobModule.addOrUpdateJob(
612 {
613 jobType: jobType,
614 status: '',
615 output: '',
616 id: jobData.id ? jobData.id : '',
617 data: jobData,
618 action: this.doSpecificDownloads.bind(this),
619 },
620 isNextJob
621 );
622
623 this.registerJobWithRun(jobData, jobId);
624
625 if (jobModule.getJob(jobId).status === 'In Progress') {
626 // Use override settings if provided, otherwise use defaults
627 const overrideSettings = this.getOverrideSettings(jobData);
628 let effectiveQuality = overrideSettings.resolution ||
629 this.getJobDataValue(jobData, 'effectiveQuality') ||
630 null;
631
632 const channelId = this.getJobDataValue(jobData, 'channelId');
633
634 let channelRecord = null;
635 if (channelId) {
636 try {
637 const Channel = require('../models/channel');
638 channelRecord = await Channel.findOne({
639 where: { channel_id: channelId },
640 attributes: ['video_quality', 'audio_format', 'skip_video_folder'],
641 });
642
643 if (!effectiveQuality && channelRecord && channelRecord.video_quality) {
644 effectiveQuality = channelRecord.video_quality;
645 }
646 } catch (channelErr) {
647 console.error('[DownloadModule] Error determining channel quality override:', channelErr.message);
648 }
649 }

Callers 5

enqueueAutoRetryJobMethod · 0.95
doPlaylistDownloadsMethod · 0.95
startDownloadAllMethod · 0.80
videos.jsFile · 0.80

Calls 8

getJobDataValueMethod · 0.95
registerJobWithRunMethod · 0.95
getOverrideSettingsMethod · 0.95
setJobDataValueMethod · 0.95
addOrUpdateJobMethod · 0.80
getJobMethod · 0.80
doDownloadMethod · 0.80

Tested by

no test coverage detected