internal static bool SendPlayoutRequest(PlayoutSettings playout, byte[] data) { //'.' is illegal in url if (playout.Hostname.Trim().Equals(".", StringComparison.InvariantCultureIgnoreCase)) { playout.Hostname = "localhost"; } var url = string.Format("http://{0}:{1}/postbox", playout.Hostname, 5521 + playout.Id); var request = new WebClient(); request.Headers.Add("Content-Type", "text/xml; utf-8"); try { request.UploadData(url, "POST", data); return(true); } catch (Exception e) { Console.WriteLine("{0} - Failed on sending request. Server: {1}, instance: {2}, Error: {3}", DateTime.Now.ToLongTimeString(), playout.Hostname, playout.Id, e.Message); return(false); } }
private PlayoutSettings GetPlayoutSettings() { var result = new PlayoutSettings(); result.RendererSettings.VideoDevice = Properties.Settings.Default.RendererDeviceName; result.PlaylistSettings = PlayoutRepository.GetMPlaylistSettings(); result.CGItems = PlayoutRepository.GetCGItems(); return(result); }
public Player(IPlayPreview preview, PlayoutSettings settings, ILog log, IDateTimeService dateTimeService, IMediaFilePathResolver filePathResolver) { _preview = preview; _log = log; _rendererInfo = settings.RendererSettings; _playlistSettings = settings.PlaylistSettings; _dateTimeService = dateTimeService; _filePathResolver = filePathResolver; }
public PlayoutSystem(IPlayPreview preview, IPlaylist3 playlist, PlayoutSettings settings, ILog log, IChannelSwitcher switcher, IMediaFilePathResolver filePathResolver, CGItemCollection cgItems) { _playlist = playlist; var player = new Player(preview, settings, log, DefaultDateTimeService.Instance, filePathResolver); _scheduler = new PlayScheduler(player, playlist, DefaultDateTimeService.Instance, switcher, cgItems); _scheduler.CurrentPlayItemChanged += OnCurrentPlayItemChanged; _scheduler.NextPlayItemChanged += OnNextPlayItemChanged; }
public void Start() { if (_innerPlayout == null) { PlayoutSettings settings = GetPlayoutSettings(); var playout = new PlayoutSystem(_preview, _playlist, settings, this.Log, ChannelSwitcher.Instance, _filePathResolver, settings.CGItems); playout.CurrentPlayItemChanged += Playout_CurrentPlayItemChanged; playout.NextPlayItemChanged += Playout_NextPlayItemChanged; playout.Start(); _innerPlayout = playout; OnStateChanged(); } }
static void Main(string[] args) { try { var url = ConfigurationManager.AppSettings.Get("RSS_Url"); var startPubDateStr = ConfigurationManager.AppSettings.Get("RSS_StartPubDate"); var formatDateStr = ConfigurationManager.AppSettings.Get("RSS_DateTimeFormat"); var output = ConfigurationManager.AppSettings.Get("Template_File"); var variableName = ConfigurationManager.AppSettings.Get("Target_TextVariable"); var interval = Convert.ToInt32(ConfigurationManager.AppSettings.Get("Update_Interval")); var host = ConfigurationManager.AppSettings.Get("Playout_Hostname"); var instance = Convert.ToInt32(ConfigurationManager.AppSettings.Get("Playout_Instance")); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine(" Input parameters ---------- "); Console.WriteLine("RSS_Url: {0}", url); Console.WriteLine("RSS_StartPubDate: {0}", startPubDateStr); Console.WriteLine("RSS_DateTimeFormat: {0}", formatDateStr); Console.WriteLine("Template_File: {0}", output); Console.WriteLine("Target_TextVariable: {0}", variableName); Console.WriteLine("Update_Interval: {0}", interval); Console.WriteLine("Playout_Hostname: {0}", host); Console.WriteLine("Playout_Instance: {0}", instance); Console.WriteLine(); Console.ResetColor(); #region Validating arguments if (string.IsNullOrEmpty(url)) { throw new ArgumentException("Empty RSS-feed url"); } if (string.IsNullOrEmpty(output)) { throw new ArgumentException("Empty template file url"); } if (string.IsNullOrEmpty(formatDateStr)) { throw new ArgumentException("Empty DateTime format"); } if (!File.Exists(output)) { throw new ArgumentException("Template file not exists"); } if (interval < 0) { throw new ArgumentException("Update interval is out of range"); } if (string.IsNullOrEmpty(host)) { throw new ArgumentException("Empty playout hostname"); } if (interval < 0) { throw new ArgumentException("Instance number is out of range"); } #endregion DateTime startPubDate; try { startPubDate = DateTime.ParseExact(startPubDateStr, formatDateStr, CultureInfo.InvariantCulture, DateTimeStyles.None); } catch (Exception e) { Console.WriteLine("Error datetime format. Apply default start time. {0}", e.Message); startPubDate = DateTime.Now.AddDays(-1); } var rssSettings = new RssSettings { Url = url, StartPubDate = startPubDate, DateTimeFormat = formatDateStr }; var playout = new PlayoutSettings { Id = instance, Hostname = host }; var settings = new Settings(rssSettings, output, variableName, playout); var controller = new Controller(settings, interval); while (Console.KeyAvailable) { Console.ReadKey(true); } Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Press 'Escape' to exit."); Console.WriteLine(); Console.ResetColor(); while (Console.ReadKey(true).Key != ConsoleKey.Escape) /* ignore other key */ } { controller.Dispose(); }