Example #1
0
        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));
            }
        }
Example #2
0
        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));
            }
        }
Example #3
0
        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));
        }