public static async Task ProcessMethod(TextWriter log) { string connectionString = CloudConfigurationManager.GetSetting("Microsoft.ServiceBus.ConnectionString"); QueueClient client = QueueClient.CreateFromConnectionString(connectionString, "sociolroom"); DateTime createdDateTime = DateTime.MinValue; while (true) { try { var grams = await InstagramService.GetPhoto(Config.Tag); grams = grams.OrderBy(c => c.CreatedAt).ToList(); List <BrokeredMessage> toSend = new List <BrokeredMessage>(); foreach (var gram in grams) { if (gram.CreatedAt > createdDateTime) { SocialAnalytics analytics = new SocialAnalytics { SocialNetwork = SocialNetwork.Instagram, Id = gram.Id, CreatedAt = gram.CreatedAt, CreatedAtTimeStamp = gram.CreatedAt.Ticks, From = gram.User, Tags = gram.Tags, ImageUrl = gram.ImageUrl }; toSend.Add(new BrokeredMessage(analytics)); createdDateTime = gram.CreatedAt; } } await client.SendBatchAsync(toSend); } catch (Exception ex) { log.WriteLine(DateTime.UtcNow + " -- InstagramListener: " + ex.Message); } await Task.Delay(TimeSpan.FromMinutes(3)); } }
public static async Task ProcessMethod(TextWriter log) { string connectionString = CloudConfigurationManager.GetSetting("Microsoft.ServiceBus.ConnectionString"); QueueClient client = QueueClient.CreateFromConnectionString(connectionString, "sociolroom"); while (true) { try { TwitterService service = new TwitterService(); await service.Authenticate(); service.OnNewMessage += async(s, e) => { SocialAnalytics analytics = new SocialAnalytics { TweetID = e.Data.StatusID, SocialNetwork = SocialNetwork.Twitter, Id = e.Data.StatusID.ToString(), CreatedAt = e.Data.CreatedAt, CreatedAtTimeStamp = e.Data.CreatedAt.Ticks, From = e.Data.User.Name, Tags = string.Join(", ", e.Data.Entities.HashTagEntities.Select(t => "#" + t.Tag)), ImageUrl = e.Data.Entities.MediaEntities[0].MediaUrl + ":large" }; await client.SendAsync(new BrokeredMessage(analytics)); }; await service.GetStreamTweets(Config.Tag); } catch (Exception ex) { log.WriteLine(DateTime.UtcNow + " -- TwitterListener: " + ex.Message); } await Task.Delay(TimeSpan.FromSeconds(5)); } }
public static async Task ProcessQueueMessage(TextWriter log, [ServiceBusTrigger("sociolroom", AccessRights.Listen)] SocialAnalytics socialAnalytics, [ServiceBus("sociolroom")] IAsyncCollector <SocialAnalytics> output) { var client = new DocumentClient(new Uri(Config.EndpointUri), Config.PrimaryKey); try { if (string.IsNullOrWhiteSpace(socialAnalytics.Id)) { log.WriteLine(DateTime.UtcNow + " -- ProcessImage: id is null"); return; } using (ImageProcessor processor = new ImageProcessor()) { var result = await processor.ProcessImage(socialAnalytics.ImageUrl); socialAnalytics.AnalysisResult = result.VisionTask.Result; socialAnalytics.EmotionResult = result.EmotionTask.Result; socialAnalytics.FaceResult = result.FaceTask.Result; await client.CreateDocumentIfNotExists(Config.DataBaseId, Config.DatabaseCollectionName, socialAnalytics, (t) => t.Id.ToString()); } } catch (ClientException ex) { if (ex.Error.Code != "InvalidImageUrl") { log.WriteLine(DateTime.UtcNow + " -- ProcessImage: " + ex.Message); await output.AddAsync(socialAnalytics); } } catch (Exception ex) { log.WriteLine(DateTime.UtcNow + " -- ProcessImage: " + ex.Message); await output.AddAsync(socialAnalytics); } await Task.Delay(TimeSpan.FromSeconds(30)); }