private async void ButtonDump_Click(object sender, RoutedEventArgs e) { if (isRecording) { return; } if (string.IsNullOrWhiteSpace(user.videoPlayUrl)) { SetStatus("[Error] Can't find the stream link"); return; } LockInput(true); cardFind.Visibility = Visibility.Collapsed; buttonDump.Visibility = Visibility.Collapsed; buttonStop.Visibility = Visibility.Visible; isRecording = true; var firsttime = true; var timestart = DateTime.Now; while (isRecording) { var dump = false; var isPlaying = !App.CheckBeforeRecording; if (!firsttime && App.CheckBeforeRecording) { SetStatus("Checking room..."); var room = await MangoApi.GetRoomInfo(user.rid); if (room.errno == 0) { isPlaying = room.data.isPlaying; textViewer.Text = room.data.isPlaying ? "Online" : "Offline"; SetStatus(room.data.isPlaying ? "User Online" : "User Offline"); } else { isPlaying = true; textViewer.Text = "Unknown"; SetStatus(room.msg); } labelViewer.Text = "LiveShow :"; } if (isPlaying) { dump = await DumpStream(); } firsttime = false; if (dump) { timestart = DateTime.Now; } if (!isRecording) { SetStatus("Stopped by user"); break; } if (radioManual.IsChecked == false) { if (radioImmediately.IsChecked == true) { SetStatus("Timeout!"); break; } if (radioCustomTimeout.IsChecked == true) { if (IsTimeout(timestart)) { SetStatus("Timeout!"); break; } var to = Timeout(timestart); SetStatus($"Timeout in {to.Minutes.ToString("00")}:{to.Seconds.ToString("00")}"); } } else { SetStatus("Please wait... Retry in 10s"); } await Task.Delay(10000); } isRecording = false; LockInput(false); buttonDump.Visibility = Visibility.Visible; buttonStop.Visibility = Visibility.Collapsed; }
private async void ButtonFind_Click(object sender, RoutedEventArgs e) { var text = textInput.Text.Trim(); if (string.IsNullOrWhiteSpace(text)) { SetStatus("Input isn't valid!!!"); return; } var id = text; if (text.StartsWith("rtmp") || text.StartsWith("http")) { Match regex = Regex.Match(text, @"live/(\d+)/?"); if (regex.Success) { id = regex.Groups[1].Value; } } Console.WriteLine("ID : " + id); if (Regex.IsMatch(id, @"^\d$")) { SetStatus("Input isn't valid!!!"); return; } LockInput(true); LockButtonAndReset(true); SetStatus($"Get userid: {id}"); var getUser = await MangoApi.GetUser(id); if (getUser.errno != 0) { SetStatus(getUser.msg); return; } var userInfo = getUser.data; // parse userInfo to user user = new User { rid = userInfo.rid, mid = userInfo.id, nickname = userInfo.nickname, announcement = userInfo.signature, videoPlayUrl = userInfo.videoPlayUrl }; LoadUserInfo(userInfo); var room = await MangoApi.GetRoomInfo(user.rid); if (room.errno == 0) { textViewer.Text = room.data.isPlaying ? "Online" : "Offline"; if (room.data.isPlaying) { cardFind.Visibility = Visibility.Collapsed; } } LockInput(false); LockButtonAndReset(false); SetStatus("Let's start the party"); }