/// <summary> /// Prüft, ob diese Aufzeichnung zu einem gerade aufgezeichneten Datenstrom gehört. /// </summary> /// <param name="stream">Ein beliebiger Datenstrom.</param> /// <returns>Gesetzt, wenn diese die Aufzeichnung zum Datenstrom ist.</returns> public bool Match(StreamInformation stream) { // Test all if (stream == null) { return(false); } else if (!Equals(stream.UniqueIdentifier, ScheduleUniqueID.GetValueOrDefault(Guid.Empty))) { return(false); } else if (Source == null) { return(false); } else { return(Equals(Source.Source, stream.Source)); } }
/// <summary> /// Ermittelt die Ersetzungsmuster für Dateinamen gemäß den Daten dieser Aufzeichnung. /// </summary> /// <returns>Die konkreten Ersetzungswertes für diesen Auftrag.</returns> public Dictionary <string, string> GetReplacementPatterns() { // Pattern map static parts var localNow = DateTime.Now; var patterns = new Dictionary <string, string> { { "%ScheduleIdentifier%", ScheduleUniqueID.GetValueOrDefault().ToString("N").ToUpper() }, { "%JobIdentifier%", JobUniqueID.GetValueOrDefault().ToString("N").ToUpper() }, { "%End%", EndsAt.ToLocalTime().ToString("dd-MM-yyyy HH-mm-ss") }, { "%UniqueIdentifier%", Guid.NewGuid().ToString("N").ToUpper() }, { "%SortableStart%", localNow.ToString("yyyy-MM-dd HH-mm-ss") }, { "%Start%", localNow.ToString("dd-MM-yyyy HH-mm-ss") }, { "%SortableDate%", localNow.ToString("yyyy-MM-dd") }, { "%Date%", localNow.ToString("dd-MM-yyyy") }, { "%Time%", localNow.ToString("HH-mm-ss") }, { "%Year%", localNow.ToString("yyyy") }, { "%Minute%", localNow.ToString("mm") }, { "%Second%", localNow.ToString("ss") }, { "%Month%", localNow.ToString("MM") }, { "%Hour%", localNow.ToString("HH") }, { "%Day%", localNow.ToString("dd") }, { "%Transponder%", string.Empty }, { "%StationFull%", string.Empty }, { "%AllAudio%", string.Empty }, { "%Profile%", string.Empty }, { "%Station%", string.Empty }, { "%Service%", string.Empty }, { "%DVBSub%", string.Empty }, { "%Audio%", string.Empty }, { "%AC3%", string.Empty }, { "%TTX%", string.Empty }, }; // Fill it if (RelatedSchedule != null) { patterns["%Schedule%"] = RelatedSchedule.Name; } if (RelatedJob != null) { patterns["%Job%"] = RelatedJob.Name; } // Duration var start = PhysicalStart; var end = EndsAt; if (start.HasValue) { patterns["%Duration%"] = ((int)(end - start.Value).TotalMinutes).ToString(); } else if (StartsAt.HasValue) { patterns["%Duration%"] = ((int)(end - StartsAt.Value).TotalMinutes).ToString(); } // Check station var source = CurrentSource; if (source != null) { // Attach to the station var station = (Station)source.Source; // Copy over patterns["%Transponder%"] = station.Provider; patterns["%StationFull%"] = station.FullName; patterns["%Profile%"] = source.ProfileName; patterns["%Station%"] = station.Name; } else if (Source != null) { // Copy over if (!string.IsNullOrEmpty(Source.DisplayName)) { // Pseudo-Source patterns["%StationFull%"] = Source.DisplayName; patterns["%Station%"] = Source.DisplayName; } if (!string.IsNullOrEmpty(Source.ProfileName)) { patterns["%Profile%"] = Source.ProfileName; } } // Check streams if (Streams != null) { // Videotext if (Streams.Videotext) { patterns["%TTX%"] = "TTX"; } // Check MP2 switch (Streams.MP2Tracks.LanguageMode) { case LanguageModes.Selection: if (Streams.MP2Tracks.Languages.Count == 1) { patterns["%Audio%"] = Streams.MP2Tracks.Languages[0]; } break; case LanguageModes.All: patterns["%AllAudio%"] = "MultiLang"; break; case LanguageModes.Primary: break; } // Check AC3 bool usesAC3 = false; switch (Streams.AC3Tracks.LanguageMode) { case LanguageModes.Selection: usesAC3 = (Streams.AC3Tracks.Languages.Count > 0); break; case LanguageModes.Primary: usesAC3 = true; break; case LanguageModes.All: usesAC3 = true; break; } // Store if (usesAC3) { patterns["%AC3%"] = "AC3"; } // Check DVB Subtitles bool usesSUB = false; switch (Streams.SubTitles.LanguageMode) { case LanguageModes.Selection: usesSUB = (Streams.SubTitles.Languages.Count > 0); break; case LanguageModes.Primary: usesSUB = true; break; case LanguageModes.All: usesSUB = true; break; } // Store if (usesSUB) { patterns["%DVBSub%"] = "DVBSUB"; } } // Report return(patterns); }