From: Vásáry Dániel Date: Wed, 18 Oct 2017 13:50:55 +0000 (+0000) Subject: git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube... X-Git-Url: http://git.useribm.hu/?a=commitdiff_plain;h=68627401e9a4317848affd07fb90147b184fb42f;p=mediacube.git git-tfs-id: [tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C30644 --- diff --git a/client/Maestro/Configuration/configuration-editor.json b/client/Maestro/Configuration/configuration-editor.json index baf13935..21610048 100644 --- a/client/Maestro/Configuration/configuration-editor.json +++ b/client/Maestro/Configuration/configuration-editor.json @@ -41,20 +41,6 @@ } ], "targets": [ - { - "label": "Stúdióba küldés", - "processor": "FTPTargetProcessor", - "outputFormat": "%ID%", - "tag": "Betöltés", - "nexioServer": true, - "killDateDays": 7, - "remote": { - "address": "ftp://10.10.1.56:2098", - "userName": "administrator", - "password": "+QtkeQdCTiOvZOgK/kUND4pO4/D+//r7ZIyluwMMdiqMEgO8iJErAG10ooWhPfiljQeXrdeyMzo7gWEZtcWpNSomGeDIbdMyQwtpqmMo1VEM3A27ZfzigY09YD46ECRh", - "timeout": 1000 - } - }, { "label": "Hír nyersanyag betöltés", "processor": "FTPTargetProcessor", @@ -85,6 +71,22 @@ "timeout": 1000 } }, + { + "label": "Stúdióba küldés", + "processor": "FTPTargetProcessor", + "outputFormat": "%ID%", + "tag": "Betöltés", + "nexioServer": true, + "killDateDays": 7, + "agency": "MAESTRO-EDITOR", + "reference": "Hír nyersanyag betöltés", + "remote": { + "address": "ftp://10.10.1.56:2098", + "userName": "administrator", + "password": "+QtkeQdCTiOvZOgK/kUND4pO4/D+//r7ZIyluwMMdiqMEgO8iJErAG10ooWhPfiljQeXrdeyMzo7gWEZtcWpNSomGeDIbdMyQwtpqmMo1VEM3A27ZfzigY09YD46ECRh", + "timeout": 1000 + } + }, { "label": "Lebonyba küldés", "processor": "FTPTargetProcessor", diff --git a/client/Maestro/Configuration/configuration-nle.json b/client/Maestro/Configuration/configuration-nle.json index 28c548c5..427ddab6 100644 --- a/client/Maestro/Configuration/configuration-nle.json +++ b/client/Maestro/Configuration/configuration-nle.json @@ -43,13 +43,29 @@ "targets": [ { "label": "Hír nyersanyag betöltés", - "processor": "UNCTargetProcessor", + "processor": "FTPTargetProcessor", "outputFormat": "%ID%-%SOURCENAME%", "tag": "Betöltés", "createSubFolder": true, "killDateDays": 7, + "useMetadata": false, "remote": { - "address": "file://10.10.1.100/BRAAVOS/OCTOPUS", + "address": "ftp://10.10.1.100/OCTOPUS", + "userName": "mediacube", + "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy", + "timeout": 1000 + } + }, + { + "label": "Magazin nyersanyag betöltés", + "processor": "FTPTargetProcessor", + "outputFormat": "%ID%-%SOURCENAME%", + "tag": "Betöltés", + "createSubFolder": true, + "killDateDays": 7, + "useMetadata": false, + "remote": { + "address": "ftp://10.10.1.100/PLAYOUT_NLE", "userName": "mediacube", "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy", "timeout": 1000 @@ -61,8 +77,8 @@ "outputFormat": "%ID%", "tag": "Betöltés", "nexioServer": true, - "agency": "NLE UPLOAD", "killDateDays": 7, + "agency": "MAESTRO-NLE", "reference": "Hír nyersanyag betöltés", "remote": { "address": "ftp://10.10.1.56:2098", @@ -73,12 +89,12 @@ }, { "label": "Lebonyba küldés", - "processor": "UNCTargetProcessor", + "processor": "FTPTargetProcessor", "outputFormat": "%ID%", "tag": "Betöltés", "killDateDays": 7, "remote": { - "address": "file://10.10.1.100/BRAAVOS/PLAYOUT_CHECK", + "address": "ftp://10.10.1.100/PLAYOUT_CHECK", "userName": "mediacube", "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy", "timeout": 1000 @@ -86,12 +102,12 @@ }, { "label": "Archiválás", - "processor": "UNCTargetProcessor", + "processor": "FTPTargetProcessor", "outputFormat": "%ID%", "tag": "Archiválás", "useMetadata": true, "remote": { - "address": "file://10.10.1.100/BRAAVOS/ARCHIVE", + "address": "ftp://10.10.1.100/ARCHIVE", "userName": "mediacube", "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy", "timeout": 1000 diff --git a/client/Maestro/Configuration/configuration-playout.json b/client/Maestro/Configuration/configuration-playout.json index e61d9a05..997f8f76 100644 --- a/client/Maestro/Configuration/configuration-playout.json +++ b/client/Maestro/Configuration/configuration-playout.json @@ -51,13 +51,12 @@ "targets": [ { "label": "Adáskész", - "processor": "UNCTargetProcessor", + "processor": "FXPTargetProcessor", "outputFormat": "%ID%", "saveSegments": true, "tag": "Adáskész", - "reference": "Archiválás", "remote": { - "address": "file://10.10.1.100/BRAAVOS/PLAYOUT/IceGateway", + "address": "ftp://10.10.1.100/PLAYOUT/IceGateway", "userName": "mediacube", "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy", "timeout": 1000 @@ -65,42 +64,28 @@ }, { "label": "Újravágás", - "processor": "UNCTargetProcessor", - "outputFormat": "%ID%", - "tag": "Újravágás", - "remote": { - "address": "file://10.10.1.100/BRAAVOS/PLAYOUT_NLE", - "userName": "mediacube", - "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy", - "timeout": 1000 - }, - "sendSEmailOnSuccess": true, - "successEmailRecipient": "vasary@elgekko.net", - "successEmailPattern": "A %TARGETNAME% újravágása szükséges." - }, - { - "label": "Újravágás FXP", "processor": "FXPTargetProcessor", "outputFormat": "%ID%", - "tag": "Újravágás FXP", + "tag": "Újravágás", + "createSubFolder": true, "remote": { "address": "ftp://10.10.1.100/PLAYOUT_NLE", "userName": "mediacube", "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy", "timeout": 1000 }, - "sendSEmailOnSuccess": false, + "sendSEmailOnSuccess": true, "successEmailRecipient": "vasary@elgekko.net", "successEmailPattern": "A %TARGETNAME% újravágása szükséges." }, { "label": "Archiválás", - "processor": "UNCTargetProcessor", + "processor": "FXPTargetProcessor", "outputFormat": "%ID%", "tag": "Archiválás", "createMetadata": true, "remote": { - "address": "file://10.10.1.100/BRAAVOS/ARCHIVE", + "address": "ftp://10.10.1.100/ARCHIVE", "userName": "mediacube", "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy", "timeout": 1000 diff --git a/client/Maestro/MaestroForm.Metadata.cs b/client/Maestro/MaestroForm.Metadata.cs index 6aca8966..b980d1b0 100644 --- a/client/Maestro/MaestroForm.Metadata.cs +++ b/client/Maestro/MaestroForm.Metadata.cs @@ -16,7 +16,7 @@ namespace Maestro { private MetadataInfo selectedMetadata; private List segments; private MediaCubeApi mediaCubeApi; - private ArchiveMetadata archiveMetadatamodel; + private ArchiveMetadata archiveMetadata; private BindingList movieSegments; public MetadataInfo SelectedMetadata { @@ -82,11 +82,11 @@ namespace Maestro { } private void ModifyArchiveMetadataClick(object sender, EventArgs e) { - ArchiveMetadataForm form = new ArchiveMetadataForm(archiveMetadatamodel); + ArchiveMetadataForm form = new ArchiveMetadataForm(archiveMetadata); form.ShowDialog(); } - private IDTypes GetTypeOfSelectedMetadata() { + private IDTypes GetSelectedMetadataType() { IDTypes result = IDTypes.None; if (String.IsNullOrEmpty(selectedMetadata.ID)) return IDTypes.None; @@ -118,7 +118,7 @@ namespace Maestro { } private void ConvertMovieSegmentsToSegments(BindingList movieSegments) { - segments.Clear(); + segments = new List(); foreach (MovieSegment actual in movieSegments) { Segment actualSegment = segmentConverter.ConvertToSegment(actual); segments.Add(actualSegment); diff --git a/client/Maestro/MaestroForm.Target.cs b/client/Maestro/MaestroForm.Target.cs index d47e79de..17b1f669 100644 --- a/client/Maestro/MaestroForm.Target.cs +++ b/client/Maestro/MaestroForm.Target.cs @@ -64,7 +64,12 @@ namespace Maestro { private void OnChecked(CheckBox checkBox, Target target) { if (checkBox.Checked) { List processors = CreateProcessors(target, checkBox); - currentProcessors.Add(checkBox, processors); + if (processors != null && processors.Count > 0) { + if (currentProcessors.ContainsKey(checkBox)) + currentProcessors[checkBox].AddRange(processors); + else + currentProcessors[checkBox] = processors; + } } else { HandleCheckBoxReferences(target.Reference, false); currentProcessors.Remove(checkBox); @@ -80,11 +85,13 @@ namespace Maestro { continue; if (!EnsureSegments(target)) { checkBox.Checked = false; - continue; + result = null; + break; } if (!EnsureMetadata(target)) { checkBox.Checked = false; - continue; + result = null; + break; } TargetProcessorParameter processorParameter = CreateProcessorParameter(target, sourceItem); ITargetProcessor processor = CreateProcessor(target, processorParameter); @@ -98,9 +105,10 @@ namespace Maestro { private bool EnsureSegments(Target target) { if (target.SaveSegments && segments == null) { - segments = trafficIDSelector.trafficAPI.GetSegments(selectedMetadata.VariantID); + if (selectedMetadata?.VariantID != null && selectedMetadata?.VariantID != 0) + segments = trafficIDSelector.trafficAPI.GetSegments(selectedMetadata.VariantID); if (segments == null) { - MessageBox.Show("A {0} folyamat nem futtatható szegmens adatok nélkül."); + MessageBox.Show(String.Format("A {0} folyamat nem futtatható szegmens adatok nélkül.", target.Label)); return false; } } @@ -108,10 +116,10 @@ namespace Maestro { } private bool EnsureMetadata(Target target) { - if (target.CreateMetadata && (archiveMetadatamodel == null || !archiveMetadatamodel.IsFilled)) { - segments = trafficIDSelector.trafficAPI.GetSegments(selectedMetadata.VariantID); - if (segments == null) { - MessageBox.Show("A {0} folyamat nem futtatható kísérő adatok nélkül."); + if (target.CreateMetadata && (archiveMetadata == null || !archiveMetadata.IsFilled)) { + archiveMetadata = GetArchiveMetadata(); + if (archiveMetadata == null) { + MessageBox.Show(String.Format("A {0} folyamat nem futtatható kísérő adatok nélkül.", target.Label)); return false; } } @@ -125,9 +133,9 @@ namespace Maestro { private TargetProcessorParameter CreateProcessorParameter(Target target, ISourceItem sourceItem) { return new TargetProcessorParameter() { - ArchiveMetadata = ArchiveMetadata.DeepClone(archiveMetadatamodel), + ArchiveMetadata = ArchiveMetadata.DeepClone(archiveMetadata), Client = trafficIDSelector.trafficAPI, - ID = selectedMetadata == null ? textSelectedMetadata.Text : selectedMetadata.ID, + ID = textSelectedMetadata.Text, InputFileName = sourceItem.Name, MediaCubeApi = mediaCubeApi, Segments = segments == null ? null : new List(segments), @@ -156,8 +164,7 @@ namespace Maestro { if (actualCheckbox != null && actualCheckbox.Text.Equals(reference)) { if (check) actualCheckbox.Checked = check; - else - currentProcessors.Remove(actualCheckbox); + actualCheckbox.Enabled = !check; } } @@ -217,53 +224,63 @@ namespace Maestro { private void EnableArchiveMetadataButtonAndCreateMetadataModel() { ctxiModifyArchiveMetadata.Enabled = selectedMetadata != null; if (ctxiModifyArchiveMetadata.Enabled) { - archiveMetadatamodel = new ArchiveMetadata(); - Cursor.Current = Cursors.WaitCursor; - IDTypes idType = GetTypeOfSelectedMetadata(); - if (idType == IDTypes.OctopusID) - GetOctopusMetadata(archiveMetadatamodel); - else //if (idType == IDTypes.TrafficID) - GetTrafficMetadata(archiveMetadatamodel); + archiveMetadata = GetArchiveMetadata(); } else - archiveMetadatamodel = null; + archiveMetadata = null; + } + + private ArchiveMetadata GetArchiveMetadata() { + ArchiveMetadata result = null; + Cursor.Current = Cursors.WaitCursor; + IDTypes idType = GetSelectedMetadataType(); + if (idType == IDTypes.OctopusID) + result = GetOctopusMetadata(); + else //if (idType == IDTypes.TrafficID) + result = GetTrafficMetadata(); + Cursor.Current = Cursors.Default; + return result; } - private void GetTrafficMetadata(ArchiveMetadata model) { + private ArchiveMetadata GetTrafficMetadata() { string id = selectedMetadata.ID; - TrafficAPI api = trafficIDSelector.trafficAPI; - List result = null; if (id == null) - return; + return null; + TrafficAPI api = trafficIDSelector.trafficAPI; + List trafficResult = null; if (id.StartsWith("M")) - result = api.GetBroadcastArchiveMetadata(id); + trafficResult = api.GetBroadcastArchiveMetadata(id); else if (id.StartsWith("P")) - result = api.GetPromotionalArchiveMetadata(id); + trafficResult = api.GetPromotionalArchiveMetadata(id); else if (id.StartsWith("R")) - result = api.GetAdvertisementArchiveMetadata(id); - if (result == null) - return; - ArchiveMatadataWrapper actualResult = result[0]; - model.itemHouseId = actualResult.ProgID; - model.itemTitle = actualResult.ProgTitle; - model.itemDescription = actualResult.ProgDescription; - model.mediaHouseId = actualResult.EpisodeID; - model.mediaTitle = !String.IsNullOrEmpty(actualResult.EpisodeTitle) ? actualResult.EpisodeTitle : actualResult.ProgTitle; - model.mediaDescription = actualResult.EpisodeDescription; + trafficResult = api.GetAdvertisementArchiveMetadata(id); + if (trafficResult == null) + return null; + ArchiveMetadata result = new ArchiveMetadata(); + ArchiveMatadataWrapper actualResult = trafficResult[0]; + result.itemHouseId = actualResult.ProgID; + result.itemTitle = actualResult.ProgTitle; + result.itemDescription = actualResult.ProgDescription; + result.mediaHouseId = actualResult.EpisodeID; + result.mediaTitle = !String.IsNullOrEmpty(actualResult.EpisodeTitle) ? actualResult.EpisodeTitle : actualResult.ProgTitle; + result.mediaDescription = actualResult.EpisodeDescription; + return result; } - private void GetOctopusMetadata(ArchiveMetadata model) { + private ArchiveMetadata GetOctopusMetadata() { + ArchiveMetadata result = new ArchiveMetadata(); string id = selectedMetadata.ID; OctopusAPI api = octopusIDSelector.GetClient(); IEnumerable storyEnum = api.GetStoriesById(id); if (storyEnum != null) - FillModelFromStories(model, storyEnum.ToList(), api); + FillModelFromStories(result, storyEnum.ToList(), api); else { IEnumerable storiesEnum = api.GetStoriesByPlaceHolderId(id); - if (storiesEnum == null) - return; - List stories = storiesEnum.ToList(); - FillModelFromStories(model, stories, api); + if (storiesEnum != null) { + List stories = storiesEnum.ToList(); + FillModelFromStories(result, stories, api); + } } + return result; } private void FillModelFromStories(ArchiveMetadata model, List stories, OctopusAPI api) { diff --git a/client/Maestro/Targets/FTPTargetProcessor.cs b/client/Maestro/Targets/FTPTargetProcessor.cs index 52043d14..005b588b 100644 --- a/client/Maestro/Targets/FTPTargetProcessor.cs +++ b/client/Maestro/Targets/FTPTargetProcessor.cs @@ -36,7 +36,7 @@ namespace Maestro.Targets { protected override void UploadFile() { using (FileStream istream = File.OpenRead(Input)) { - using (Stream ostream = targetFTP.OpenWrite(Output)) { + using (Stream ostream = targetFTP.OpenWrite(OutputName)) { try { CopyStream(istream, inputFile.Length, ostream); } @@ -50,9 +50,10 @@ namespace Maestro.Targets { } } FtpReply reply = targetFTP.GetReply(); - if (reply.Success && "226".Equals(reply.Code)) { - if (!FileExists(Output)) - throw new Exception("Feltöltési hiba."); + if ((reply.Success && "226".Equals(reply.Code) && !FileExists(OutputName)) || + !reply.Success || + (reply.Success && !"226".Equals(reply.Code))) { + throw new Exception("Feltöltési hiba."); } } diff --git a/client/Maestro/Targets/FXPTargetProcessor.cs b/client/Maestro/Targets/FXPTargetProcessor.cs index bb4d5279..776ba4fd 100644 --- a/client/Maestro/Targets/FXPTargetProcessor.cs +++ b/client/Maestro/Targets/FXPTargetProcessor.cs @@ -62,6 +62,8 @@ namespace Maestro.Targets { if (!targetReplyTYPE.Success) throw new Exception(targetReplyTYPE.ErrorMessage); + string currentWorkingDir = targetFTP.GetWorkingDirectory(); + logger.Debug("Current target working directory is {0}", currentWorkingDir); FtpReply replySTOR = targetFTP.Execute("STOR " + OutputName); if (!replySTOR.Success) throw new Exception(replySTOR.ErrorMessage); diff --git a/client/Maestro/Targets/UNCTargetProcessor.cs b/client/Maestro/Targets/UNCTargetProcessor.cs index 65f9d049..6fa28f5b 100644 --- a/client/Maestro/Targets/UNCTargetProcessor.cs +++ b/client/Maestro/Targets/UNCTargetProcessor.cs @@ -53,6 +53,7 @@ namespace Maestro.Targets { workingDir = DetermineWorkingDirectory(parameters.TargetConfig.Remote); EnsureDirectoryExistence(workingDir); OutputName = CreateOutputFileName(); + OutputName = OutputName.ToUpper(); Output = "/".Equals(workingDir) ? OutputName : Path.Combine(workingDir, OutputName); workFlowAction.source = Input; workFlowAction.destination = Output; @@ -127,7 +128,7 @@ namespace Maestro.Targets { private void SendEmail(string to, string messagePattern) { try { - string message = messagePattern.Replace("%TARGETNAME%", Output); + string message = messagePattern.Replace("%TARGETNAME%", OutputName); parameters.MediaCubeApi.Notify(to, messagePattern); } catch (Exception e) { @@ -184,7 +185,7 @@ namespace Maestro.Targets { string fileName = String.Format(KILLDATE_FILE, OutputName, date.ToString("yyyyMMdd")); logger.Debug("Creating KILLDATE status file {0}", fileName); KillDatePath = Path.Combine(statusWorkDir, fileName); - UploadContent(KillDatePath, new byte[] { }); + UploadContent(fileName, new byte[] { }); KillDate = date; }