コード例 #1
0
ファイル: MOTR-Queue.cs プロジェクト: large/MOTRd
        //Function that fires away a convert with handbreak
        private bool ExecuteQueue(long nQueueID)
        {
            int nItem = ItemByQueueID(nQueueID);

            if (nItem == -1)
            {
                return(false);
            }
            QueueStruct aStruct = (QueueStruct)aQueue[nItem];

            //We don't run twice...
            if (aStruct.nStatus == QueueStatus.RUNNING)
            {
                return(false);
            }

            //Setting the parameters
            string baseFolder = MOTR_Settings.GetGlobalApplicationPath("tools");
            string sExec      = MOTR_Settings.GetExecuteToolPath("handbreak");
            string sParams    = "--optimize --preset \"" + aStruct.sHandbrakeProfile + "\" --input \"" + aStruct.sPath + aStruct.sSource + "\" --output \"" + aStruct.sPath + aStruct.sDestination + "\"";

            aStruct.dateRunning = DateTime.Now;
            aStruct.nStatus     = QueueStatus.RUNNING;

            //extension = extension.Substring(extension.Length - 4);
            string sExtension = aStruct.sSource.Substring(aStruct.sSource.Length - 4);

            if (sExtension.ToUpper() == ".RAR")
            {
                sExec   = MOTR_Settings.GetExecuteToolPath("unrar");
                sParams = "x -y -p- " + aStruct.sPath + aStruct.sSource;
            }

            //Console.WriteLine("Exec: " + sExec + " " + sParams);

            //Now start the background process, if it fails change status of the queue
            if (!StartBackgroundProcess(sExec, sParams, aStruct.sPath, aStruct.nQueueID))
            {
                aStruct.nStatus = QueueStatus.FINISHEDANDFAIL;
                aStruct.sETA    = "Background could not be executed, please update tools";
            }

            //Update the current item
            aQueue.RemoveAt(nItem);
            aQueue.Insert(nItem, aStruct);

            return(true);
        }