private async void Window_Loaded(object sender, RoutedEventArgs e) { buttonMore.IsEnabled = false; AddStatus("Starting..."); AddStatus("Find Me at https://t.me/paijemdev"); AddStatus("Reading configs..."); Configs.SetRetryTimeoutValue(); AddStatus("Get my Account..."); var myinfo = await MangoApi.GetMyInfo(); if (myinfo.errno != 0) { while (true) { AddStatus("Login with account..."); var login = await MangoApi.Login(); if (login.errno != 0) { AddStatus("Status : Login Failed!"); var dialog = MessageBox.Show($"{login.msg}\n\n-- -- --\n[YES] Try again? [NO] To close.", this.Title, MessageBoxButton.YesNo, MessageBoxImage.Question); if (dialog == MessageBoxResult.No) { Environment.Exit(1); } } else { AddStatus("Status : Login Success"); break; } } } else { AddStatus("Status : Logged In"); } await GetNextPage(); buttonMore.IsEnabled = true; var serial = App.GetSID(); var isKeyValid = Configs.IsKeyValid(serial); if (!isKeyValid) { var auth = new AuthWindow(); if (auth.ShowDialog() == false) { Environment.Exit(1); } } }
private async Task GetNextPage(bool reset = false) { buttonReset.IsEnabled = false; buttonMore.IsEnabled = false; if (reset) { nextPage = 0; } bool noMore = false; AddStatus($"Loading page {nextPage}"); var rooms = await MangoApi.GetRooms(nextPage); if (rooms.errno == 0) { if (rooms.data.Length > 0) { nextPage++; await Task.Run(() => { InsertUsers(rooms.data, reset); }); } else { AddStatus("No more users"); noMore = true; } } else { AddStatus(rooms.msg); } buttonReset.IsEnabled = true; buttonMore.IsEnabled = !noMore; }
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"); }