mirror of
				https://github.com/ElvishArtisan/rivendell.git
				synced 2025-10-31 14:13:52 +01:00 
			
		
		
		
	* Refactored the RDAudioConvert class to use RDApplication. * Converted rdcatchd(8) to use RDApplication.
		
			
				
	
	
		
			148 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // rdcatchd.cpp
 | |
| //
 | |
| // The Rivendell Netcatcher Daemon Dropbox methods
 | |
| //
 | |
| //   (C) Copyright 2017-2018 Fred Gleason <fredg@paravelsystems.com>
 | |
| //
 | |
| //   This program is free software; you can redistribute it and/or modify
 | |
| //   it under the terms of the GNU General Public License version 2 as
 | |
| //   published by the Free Software Foundation.
 | |
| //
 | |
| //   This program is distributed in the hope that it will be useful,
 | |
| //   but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| //   GNU General Public License for more details.
 | |
| //
 | |
| //   You should have received a copy of the GNU General Public
 | |
| //   License along with this program; if not, write to the Free Software
 | |
| //   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | |
| //
 | |
| 
 | |
| #include <stdlib.h>
 | |
| 
 | |
| #include <rdapplication.h>
 | |
| #include <rddb.h>
 | |
| #include <rdescape_string.h>
 | |
| 
 | |
| #include "rdcatchd.h"
 | |
| 
 | |
| void MainObject::StartDropboxes()
 | |
| {
 | |
|   QString sql;
 | |
|   RDSqlQuery *q;
 | |
|   RDSqlQuery *q1;
 | |
| 
 | |
|   //
 | |
|   // Kill Old Instances
 | |
|   //
 | |
|   system("killall rdimport");
 | |
| 
 | |
|   //
 | |
|   // Launch Dropbox Configurations
 | |
|   //
 | |
|   sql=QString("select ")+
 | |
|     "ID,"+                       // 00
 | |
|     "GROUP_NAME,"+               // 01
 | |
|     "PATH,"+                     // 02
 | |
|     "NORMALIZATION_LEVEL,"+      // 03
 | |
|     "AUTOTRIM_LEVEL,"+           // 04
 | |
|     "TO_CART,"+                  // 05
 | |
|     "USE_CARTCHUNK_ID,"+         // 06
 | |
|     "TITLE_FROM_CARTCHUNK_ID,"+  // 07
 | |
|     "DELETE_CUTS,"+              // 08
 | |
|     "METADATA_PATTERN,"+         // 09
 | |
|     "FIX_BROKEN_FORMATS,"+       // 10
 | |
|     "LOG_PATH,"+                 // 11
 | |
|     "DELETE_SOURCE,"+            // 12
 | |
|     "STARTDATE_OFFSET,"+         // 13
 | |
|     "ENDDATE_OFFSET,"+           // 14
 | |
|     "ID,"+                       // 15
 | |
|     "IMPORT_CREATE_DATES,"+      // 16
 | |
|     "CREATE_STARTDATE_OFFSET,"+  // 17
 | |
|     "CREATE_ENDDATE_OFFSET,"+    // 18
 | |
|     "SET_USER_DEFINED,"+         // 19
 | |
|     "FORCE_TO_MONO,"+            // 20
 | |
|     "SEGUE_LEVEL,"+              // 21
 | |
|     "SEGUE_LENGTH "+             // 22
 | |
|     "from DROPBOXES where "+
 | |
|     "STATION_NAME=\""+RDEscapeString(rda->config()->stationName())+"\"";
 | |
|   q=new RDSqlQuery(sql);
 | |
|   while(q->next()) {
 | |
|     QString cmd=QString().
 | |
|       sprintf("nice rdimport --persistent-dropbox-id=%d --drop-box --log-mode",
 | |
| 	      q->value(15).toInt());
 | |
|     sql=QString("select SCHED_CODE from DROPBOX_SCHED_CODES where ")+
 | |
|       QString().sprintf("DROPBOX_ID=%d",q->value(0).toInt());
 | |
|     q1=new RDSqlQuery(sql);
 | |
|     while(q1->next()) {
 | |
|       cmd+=QString(" --add-scheduler-code=\"")+q1->value(0).toString()+"\"";
 | |
|     }
 | |
|     delete q1;
 | |
|     cmd+=
 | |
|       QString().sprintf(" --normalization-level=%d",q->value(3).toInt()/100);
 | |
|     cmd+=
 | |
|       QString().sprintf(" --autotrim-level=%d",q->value(4).toInt()/100);
 | |
|     if(q->value(5).toUInt()>0) {
 | |
|       cmd+=QString().sprintf(" --to-cart=%u",q->value(5).toUInt());
 | |
|     }
 | |
|     if(q->value(6).toString()=="Y") {
 | |
|       cmd+=" --use-cartchunk-cutid";
 | |
|     }
 | |
|     if(q->value(21).toInt()<1) {
 | |
|         cmd+=
 | |
|           QString().sprintf(" --segue-level=%d",q->value(21).toInt());
 | |
|         cmd+=
 | |
|           QString().sprintf(" --segue-length=%u",q->value(22).toUInt());
 | |
|     }
 | |
|     if(q->value(7).toString()=="Y") {
 | |
|       cmd+=" --title-from-cartchunk-cutid";
 | |
|     }
 | |
|     if(q->value(8).toString()=="Y") {
 | |
|       cmd+=" --delete-cuts";
 | |
|     }
 | |
|     if(q->value(20).toString()=="Y") {
 | |
|       cmd+=" --to-mono";
 | |
|     }
 | |
|     if(!q->value(9).toString().isEmpty()) {
 | |
|       cmd+=QString().sprintf(" \"--metadata-pattern=%s\"",
 | |
| 			     (const char *)q->value(9).toString());
 | |
|     }
 | |
|     if(q->value(10).toString()=="Y") {
 | |
|       cmd+=" --fix-broken-formats";
 | |
|     }
 | |
|     if(q->value(12).toString()=="Y") {
 | |
|       cmd+=" --delete-source";
 | |
|     }
 | |
|     if(q->value(16).toString()=="Y") {
 | |
|       cmd+=QString().sprintf(" --create-startdate-offset=%d",
 | |
| 			     q->value(17).toInt());
 | |
|       cmd+=QString().sprintf(" --create-enddate-offset=%d",
 | |
| 			     q->value(18).toInt());
 | |
|     }
 | |
|     if(!q->value(19).toString().isEmpty()) {
 | |
|       cmd+=" --set-user-defined="+RDEscapeString(q->value(19).toString());
 | |
|     }
 | |
|     cmd+=QString().sprintf(" --startdate-offset=%d",q->value(13).toInt());
 | |
|     cmd+=QString().sprintf(" --enddate-offset=%d",q->value(14).toInt());
 | |
|     cmd+=QString().sprintf(" %s \"%s\"",(const char *)q->value(1).toString(),
 | |
| 			   (const char *)q->value(2).toString());
 | |
|     if(!q->value(11).toString().isEmpty()) {
 | |
|       cmd+=QString().sprintf(" >> %s 2>> %s",
 | |
| 			     (const char *)q->value(11).toString(),
 | |
| 			     (const char *)q->value(11).toString());
 | |
|     }
 | |
|     else {
 | |
|       cmd+=" > /dev/null 2> /dev/null";
 | |
|     }
 | |
|     cmd+=" &";
 | |
|     LogLine(RDConfig::LogInfo,QString().
 | |
| 	    sprintf("launching dropbox configuration: \"%s\"",
 | |
| 		    (const char *)cmd));
 | |
|     if(fork()==0) {
 | |
|       system(cmd);
 | |
|       exit(0);
 | |
|     }
 | |
|   }
 | |
|   delete q;
 | |
| }
 |