Пример #1
0
        public static async System.Threading.Tasks.Task Main(string[] args)
        {
            // Connect to twitter
            string consumerKey       = ConfigurationManager.AppSettings.Get("ConsumerKey");
            string consumerSecret    = ConfigurationManager.AppSettings.Get("ConsumerSecret");
            string accessToken       = ConfigurationManager.AppSettings.Get("AccessToken");
            string accessTokenSecret = ConfigurationManager.AppSettings.Get("AccessTokenSecret");
            string bearerToken       = ConfigurationManager.AppSettings.Get("BearerToken");

            var consumerOnlyCredentials =
                new TwitterCredentials(consumerKey, consumerSecret, accessToken, accessTokenSecret);
            var appClient = new TwitterClient(consumerOnlyCredentials);

            await appClient.Auth.InitializeClientBearerTokenAsync();

            // Setup a rate limiter
            var  limiter        = new Throttle(1, TimeSpan.FromSeconds(5));
            long elapsedSeconds = 0;

            // Using the sample stream
            var stream = appClient.Streams.CreateSampleStream();

            stream.TweetMode = TweetMode.Extended;
            var tweetMetrics = new TweetMetricModel();

            stream.FilterLevel = Tweetinvi.Streaming.Parameters.StreamFilterLevel.Low;

            stream.TweetReceived += async(sender, t) =>
            {
                elapsedSeconds = (long)_stopwatch.Elapsed.TotalSeconds;
                tweetMetrics   = ProcessTweets.GenerateMetrics(elapsedSeconds, t.Tweet, tweetMetrics);
                //if ((elapsed % 5) == 0)
                //{
                var ct = new CancellationToken();
                limiter.Enqueue(async() =>
                {
                    UpdateConsole(tweetMetrics);
                }, ct);
                //}
            };

            // Start
            _stopwatch.Start();
            try
            {
                await stream.StartAsync();
            }
            catch (Exception ex)
            {
                // ignored
            }
        }
        public async Task StartTwitterStreamAsync(System.IO.Stream hyConnection)
        {
            _streamWriter = new System.IO.StreamWriter(hyConnection)
            {
                AutoFlush = true
            };
            var limiter = new Throttle(1, TimeSpan.FromMilliseconds(THROTTLE_MILLISECONDS));

            _stream = Stream.CreateFilteredStream();
            AddFiltersStream(_filterOptions);
            _stream.MatchingTweetReceived += (sender, t) =>
            {
                var ct = new CancellationToken();
                limiter.Enqueue(async() =>
                {
                    await _streamWriter.WriteLineAsync(JsonConvert.SerializeObject(t.Tweet.ToTweetInfo()));
                }, ct);
            };
            await _stream.StartStreamMatchingAnyConditionAsync();
        }