async Task ReportLikeToAWS(CustomVisionResponse imagePrediction, IEnumerable <string> hashtags) { var client = new HttpClient(); var dataProcessingPipeReport = new DataProcessingPipelineReport { ImageAnalysis = imagePrediction, Username = Username, Timestamp = DateTime.Now, Hashtags = hashtags, Id = Guid.NewGuid() }; var json = JsonConvert.SerializeObject(dataProcessingPipeReport); using (var content = new StringContent(json)) { var response = await client.PostAsync(Ec2MasterUrl, content); } }
public void LikeLoop() { // Run infinite loop while (true) { var all = app.Query(q => q.Class("WKWebView").Css("*")); var hashtags = new List <string> (); // Search for hashtag foreach (var element in all) { if (!string.IsNullOrEmpty(element.TextContent) && element.Class == "_ezgzd") { var regex = new Regex(@"(?<=#)\w+"); var matches = regex.Matches(element.TextContent); foreach (Match m in matches) { hashtags.Add(m.Value); } } } // Search for the like button foreach (var element in all) { if (element.Class.Contains("coreSpriteHeartOpen")) { // Tap the like button app.TapCoordinates(element.Rect.CenterX, element.Rect.CenterY); // Capture a screenshot var imageFileInfo = app.Screenshot(DateTime.Now.ToString()); CustomVisionResponse imagePrediction = null; try { // Analyze the image with Microsoft Custom Vision var predictionRequestTask = MakePredictionRequest(imageFileInfo.FullName); predictionRequestTask.Wait(); // Save predictions imagePrediction = predictionRequestTask.Result; } catch (Exception ex) { Console.WriteLine($"Failed to get image ML details: {ex.Message}"); } finally { File.Delete(imageFileInfo.FullName); } try { // Report results: hashtags + ML predictions + metadata to AWS ReportLikeToAWS(imagePrediction, hashtags).Wait(); } catch (Exception ex) { Console.WriteLine($"Failed to report like to AWS: {ex.Message}"); } break; } } app.ScrollDown(); } }