Пример #1
0
        public void Can_get_friends_on_first_page()
        {
            var service = GetAuthenticatedService();
            TwitterCursorList <TwitterUser> followers = service.ListFriends(new ListFriendsOptions());

            Assert.IsNotNull(followers);
        }
Пример #2
0
        public static IEnumerable <TwitterUser> FollowersList(long?userId = null, string scrrenName = null)
        {
            if (userId == null && scrrenName == null)
            {
                return(new List <TwitterUser>());
            }

            TweetSharp.ListFollowersOptions option = new ListFollowersOptions
            {
                UserId     = userId,
                ScreenName = scrrenName,
            };

            TwitterCursorList <TwitterUser> followers = service.ListFollowers(option);

            IEnumerable <TwitterUser> returns = followers?.ToList();

            while (followers?.NextCursor != null)
            {
                option.Cursor = followers.NextCursor;

                followers = service.ListFollowers(option);

                if (followers != null)
                {
                    returns = returns.Concat(followers.ToList());
                }
            }

            return(returns);
        }
Пример #3
0
        private static void ReceiveFriends(TwitterCursorList <TwitterUser> friends, TwitterResponse response, UserToken user)
        {
            if (friends == null || response.StatusCode != HttpStatusCode.OK)
            {
                return;
            }

            if (dicUsers.ContainsKey(user))
            {
                dicUsers[user] = dicUsers[user].Union(friends.Select(x => x.ScreenName)).ToList();
            }
            else
            {
                dicUsers[user] = friends.Select(x => x.ScreenName).ToList();
            }

            if (friends.NextCursor != null && friends.NextCursor != 0)
            {
                ServiceDispatcher.GetService(user).ListFriends(new ListFriendsOptions {
                    ScreenName = user.ScreenName, Cursor = (long)friends.NextCursor
                }, (l, r) => ReceiveFriends(l, r, user));
            }
            else
            {
                finishedUsers[user] = true;
                SaveUserCache(user, dicUsers[user]);
            }
        }
Пример #4
0
        private void Connect(string consumerKey, string consumerSecret, string accessToken, string accessTokenSecret)
        {
            // In v1.1, all API calls require authentication
            var service = new TwitterService(consumerKey, consumerSecret);

            service.AuthenticateWith(accessToken, accessTokenSecret);

            Log("Connected");

            TwitterRateLimitStatusSummary rate = service.GetRateLimitStatus(new GetRateLimitStatusOptions());

            Log("Limimte rate: " + rate.RawSource);

            var tweets = service.ListTweetsOnHomeTimeline(new ListTweetsOnHomeTimelineOptions());

            foreach (var tweet in tweets)
            {
                Console.WriteLine("{0} says '{1}'", tweet.User.ScreenName, tweet.Text);
            }

            TwitterCursorList <TwitterUser> friends = service.ListFollowers(new ListFollowersOptions());

            Log("Friends: " + friends.Count);

            foreach (var friend in friends)
            {
                Log(String.Format("Friend: {0}", friend.Name));
            }
        }
        public static void FollowBackNotFollowed()
        {
            string _consumerKey       = ConfigurationManager.AppSettings["consumerKey"];
            string _consumerSecret    = ConfigurationManager.AppSettings["consumerSecret"];
            string _accessToken       = ConfigurationManager.AppSettings["accessToken"];
            string _accessTokenSecret = ConfigurationManager.AppSettings["accessTokenSecret"];

            var service = new TwitterService(_consumerKey, _consumerSecret);

            service.AuthenticateWith(_accessToken, _accessTokenSecret);

            TwitterUser self = service.GetUserProfile(new GetUserProfileOptions()
            {
                IncludeEntities = false, SkipStatus = false
            });

            ListFollowersOptions options = new ListFollowersOptions();

            options.UserId = self.Id;
            options.IncludeUserEntities = true;
            TwitterCursorList <TwitterUser> followers = service.ListFollowers(options);

            foreach (var follow in followers)
            {
                service.FollowUser(new FollowUserOptions {
                    UserId = follow.Id
                });                                                              //seems to work w/ no errors, even if already followed
            }
        }
Пример #6
0
        public void Can_get_friends()
        {
            var service = GetAuthenticatedService();
            TwitterCursorList <TwitterUser> followers = service.ListFriends(-1);

            Assert.IsNotNull(followers);
        }
Пример #7
0
        private void ReceiveList(TwitterCursorList <TwitterUser> users, TwitterResponse response)
        {
            bool finish = false;

            if (users == null || response.StatusCode != HttpStatusCode.OK)
            {
                if (Error != null)
                {
                    Error(this, response);
                }
                finish = true;
                return;
            }

            if (users.NextCursor != null && users.NextCursor != 0 && _service != null)
            {
                if (GetFollowing)
                {
                    _service.ListFriends(new ListFriendsOptions {
                        ScreenName = User.ScreenName, Cursor = (long)users.NextCursor
                    }, ReceiveList);
                }
                if (GetFollowers)
                {
                    _service.ListFollowers(new ListFollowersOptions {
                        ScreenName = User.ScreenName, Cursor = (long)users.NextCursor
                    }, ReceiveList);
                }
            }
            else
            {
                finish = true;
            }

            if (Users == null)
            {
                Users = new SafeObservable <TwitterUser>();
            }

            foreach (var user in users)
            {
                if (!Users.Contains(user))
                {
                    Users.Add(user);
                }
            }

            if (finish && Finished != null)
            {
                Finished(this, new EventArgs());
            }
        }
Пример #8
0
        private List <long> GetTwitterFollowers()
        {
            var service = new TwitterService(_consumerKey, _consumerSecret);

            service.AuthenticateWith(_accessToken, _accessTokenSecret);

            //Set Rate Options
            GetRateLimitStatusOptions rateOptions    = new GetRateLimitStatusOptions();
            List <string>             checkResources = new List <string>();

            checkResources.Add("followers/ids");
            rateOptions.Resources = checkResources;

            //GetRateLimitStatus
            TwitterRateLimitStatusSummary summary = service.GetRateLimitStatus(rateOptions);

            List <long> followers = new List <long>();
            long        cursor    = -1;
            bool        loop      = true;

            do
            {
                //Base.CheckApiLimit()
                ListFollowerIdsOfOptions followersOptions = new ListFollowerIdsOfOptions();
                followersOptions.ScreenName = _username;
                followersOptions.Cursor     = cursor;
                followersOptions.Count      = 5000;

                TwitterCursorList <long> batchFollowers = service.ListFollowerIdsOf(followersOptions);

                Debug.WriteLine("Reset in " + "" + " seconds.");

                if (batchFollowers.Count == 0)
                {
                    return(null);
                }

                foreach (long l in batchFollowers)
                {
                    followers.Add(l);
                }

                cursor = batchFollowers.NextCursor ?? 0;

                if (cursor == 0)
                {
                    loop = false;
                }
            } while (loop);

            return(followers);
        }
Пример #9
0
        protected override IData OnGetData()
        {
            List <TwitterUser> ls = new List <TwitterUser>();
            TwitterCursorList <TwitterUser> tweets = null;

            do
            {
                if (Type == ETwitterFollowType.Him)
                {
                    tweets = Service.ListFriends(new ListFriendsOptions()
                    {
                        IncludeUserEntities = IncludeUserEntities,
                        ScreenName          = ScreenName,
                        SkipStatus          = SkipStatus,
                        UserId = UserId,

                        Cursor = tweets == null ? null : tweets.NextCursor
                    });
                }
                else
                {
                    tweets = Service.ListFollowers(new ListFollowersOptions()
                    {
                        IncludeUserEntities = IncludeUserEntities,
                        ScreenName          = ScreenName,
                        SkipStatus          = SkipStatus,
                        UserId = UserId,

                        Cursor = tweets == null ? null : tweets.NextCursor
                    });
                }

                if (tweets != null)
                {
                    foreach (TwitterUser u in tweets)
                    {
                        ls.Add(u);
                    }
                }
            } while (tweets != null && tweets.NextCursor != null);

            if (ls.Count == 0)
            {
                return(DataEmpty());
            }

            return(DataEnumerable(ls));
        }
Пример #10
0
        private static void ReceiveFriends(TwitterCursorList<TwitterUser> friends, TwitterResponse response, UserToken user)
        {
            if (friends == null || response.StatusCode != HttpStatusCode.OK)
                return;

            if (dicUsers.ContainsKey(user))
                dicUsers[user] = dicUsers[user].Union(friends.Select(x => x.ScreenName)).ToList();
            else
                dicUsers[user] = friends.Select(x => x.ScreenName).ToList();

            if (friends.NextCursor != null && friends.NextCursor != 0)
                ServiceDispatcher.GetService(user).ListFriends(new ListFriendsOptions { ScreenName = user.ScreenName, Cursor = (long)friends.NextCursor }, (l, r) => ReceiveFriends(l, r, user));
            else
            {
                finishedUsers[user] = true;
                SaveUserCache(user, dicUsers[user]);
            }
        }
Пример #11
0
        private void ReceiveUsers(TwitterCursorList <TwitterUser> users, TwitterResponse response)
        {
            if (response.StatusCode == HttpStatusCode.NotFound)
            {
                MessageService.ShowError(Resources.CouldntFindUser);
                GoBack();
                return;
            }
            else if (response.StatusCode != HttpStatusCode.OK || users == null)
            {
                MessageService.ShowError(Resources.ErrorMessage);
                GoBack();
                return;
            }

            foreach (var usr in users)
            {
                if (!list.Contains(usr))
                {
                    list.Add(usr);
                }
            }

            if (users.NextCursor != null && users.NextCursor != 0)
            {
                if (whatUserList == "followers")
                {
                    ServiceDispatcher.GetCurrentService().ListFollowers(new ListFollowersOptions {
                        ScreenName = user
                    }, ReceiveUsers);
                }
                else if (whatUserList == "following")
                {
                    ServiceDispatcher.GetCurrentService().ListFriends(new ListFriendsOptions {
                        ScreenName = user
                    }, ReceiveUsers);
                }
            }
            else
            {
                IsLoading = false;
            }
        }
Пример #12
0
        public static TwitterUser[] GetFollowersFor(string sUsername)
        {
            // Pass your credentials to the service
            TwitterService service = new TwitterService("g0fsdKhJObiZLamY2P7vfg", "ghUKQ9y0LvN08clZq6wwU41a0gMlrv9oGj9zd55292w");

            // Step 1 - Retrieve an OAuth Request Token
            OAuthRequestToken requestToken = service.GetRequestToken();

            // Step 2 - Redirect to the OAuth Authorization URL
            Uri uri = service.GetAuthorizationUri(requestToken);
            //Process.Start(uri.ToString());

            // Step 3 - Exchange the Request Token for an Access Token
            string verifier = "123456"; // <-- This is input into your application by your user
            OAuthAccessToken access = service.GetAccessToken(requestToken, verifier);
            access.TokenSecret = "6CFvw63PNUNx4cbj53n5idwlaRUVSz9lKNhr8FM";
            access.Token = "14820993-dEh4f6mD1RNSe1pp8ZmKwJb9g0TGyyGqyHuvZsM9s";

            // Step 4 - User authenticates using the Access Token
            service.AuthenticateWith(access.Token, access.TokenSecret);
            TwitterCursorList<TwitterUser> followersList = null;
            TwitterCursorList<TwitterUser> list = service.ListFollowersOf(sUsername, -1);
            long? nextCursor = list.NextCursor;

            followersList = new TwitterCursorList<TwitterUser>(list);

            while ((nextCursor ?? 0) != 0)
            {
                TwitterCursorList<TwitterUser> tempFollowersList = service.ListFollowersOf(sUsername, (long)nextCursor);
                if (tempFollowersList.Count <= 0)
                    break;

               followersList.AddRange(tempFollowersList);

               nextCursor = tempFollowersList.NextCursor;
            }

            TwitterUser[] array = new TwitterUser[followersList.Count];
            followersList.CopyTo(array);
            return array;
        }
Пример #13
0
        public static void TestAPI()
        {
            TwitterService twitterService = new TwitterService(ConsumerKey, ConsumerKeySecret);

            ListFollowersOptions userID = new ListFollowersOptions();

            //options.UserId = tuSelf.Id;
            userID.ScreenName          = "narendramodi";
            userID.IncludeUserEntities = true;
            userID.SkipStatus          = false;
            userID.Cursor = -1;
            TwitterCursorList <TwitterUser> followers = twitterService.ListFollowers(userID);

            while (followers != null)
            {
                foreach (TwitterUser follower in followers)
                {
                    //Do something with the user profile here
                }

                userID.Cursor = followers.NextCursor;
                followers     = twitterService.ListFollowers(userID);
            }
        }
Пример #14
0
        public static List <long> getFollowerIDs(int index = 0, string next_cursor = "")
        {
            // JObject result_ids = null;

            /*   public static JObject getFollowerIDs(string next_cursor ,int index=0)
             *           try
             *         {
             *
             *
             *             var oauth_consumer_key = consumer_key;
             *             var oauth_consumer_secret = consumer_seckey;
             *             //Token URL
             *             var oauth_url = "https://api.twitter.com/oauth2/token";
             *             var headerFormat = "Basic {0}";
             *             var authHeader = string.Format(headerFormat,
             *             Convert.ToBase64String(Encoding.UTF8.GetBytes(Uri.EscapeDataString(oauth_consumer_key[index]) + ":" +
             *             Uri.EscapeDataString((oauth_consumer_secret[index])))
             *             ));
             *
             *             var postBody = "grant_type=client_credentials";
             *
             *             ServicePointManager.Expect100Continue = false;
             *             HttpWebRequest request = (HttpWebRequest)WebRequest.Create(oauth_url);
             *             request.Headers.Add("Authorization", authHeader);
             *             request.Method = "POST";
             *             request.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";
             *
             *             using (Stream stream = request.GetRequestStream())
             *             {
             *                 byte[] content = ASCIIEncoding.ASCII.GetBytes(postBody);
             *                 stream.Write(content, 0, content.Length);
             *             }
             *
             *             request.Headers.Add("Accept-Encoding", "gzip");
             *             HttpWebResponse response = request.GetResponse() as HttpWebResponse;
             *             Stream responseStream = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress);
             *             JObject result_token;
             *             TwitAuthenticateResponse twitAuthResponse;
             *             using (var reader = new StreamReader(responseStream))
             *             {
             *                 // JavaScriptSerializer js = new JavaScriptSerializer();
             *                 var objText = reader.ReadToEnd();
             *                 // result_token = JObject.Parse(objText);
             *                 twitAuthResponse = JsonConvert.DeserializeObject<TwitAuthenticateResponse>(objText);
             *             }
             *
             *             //Get the follower ids
             *
             *             var url = "https://api.twitter.com/1.1/followers/ids.json?cursor=" + next_cursor + "&screen_name=vacationsabroad&skip_status=true&include_user_entities=false";
             *             //var url = "https://api.twitter.com/1.1/direct_messages/new.json?text=hello%2C%20tworld.%20welcome%20to%201.1.&screen_name=andrew_lidev";
             *
             *             HttpWebRequest timeLineRequest = (HttpWebRequest)WebRequest.Create(url);
             *             var timelineHeaderFormat = "{0} {1}";
             *             timeLineRequest.Headers.Add("Authorization", string.Format(timelineHeaderFormat, twitAuthResponse.token_type, twitAuthResponse.access_token));
             *             timeLineRequest.Method = "GET";
             *             WebResponse timeLineResponse = timeLineRequest.GetResponse();
             *             var timeLineJson = string.Empty;
             *
             *
             *
             *             using (timeLineResponse)
             *             {
             *                 using (var reader = new StreamReader(timeLineResponse.GetResponseStream()))
             *                 {
             *                     timeLineJson = reader.ReadToEnd();
             *                     CommonProvider.WriteErrorLog(timeLineJson);
             *                     result_ids = JObject.Parse(timeLineJson);
             *
             *                 }
             *             }
             *         }
             *         catch(Exception ex)
             *         {
             *             CommonProvider.WriteErrorLog(index +"===>" + ex.Message + " :Source Message" +ex.Source);
             *         }
             *         return result_ids;
             */
            List <long> lstFollowers = new List <long>();

            try
            {
                var service = new TwitterService(consumer_key[index], consumer_seckey[index]);
                service.AuthenticateWith(access_token[index], access_sectoken[index]);

                long t_userid = userids[index];

                try
                {
                    TwitterUser tuSelf = service.GetUserProfile(
                        new GetUserProfileOptions()
                    {
                        IncludeEntities = false, SkipStatus = false
                    });
                    t_userid = tuSelf.Id;
                }catch (Exception ex)
                {
                    WriteErrorLog(String.Format("{0}==>Used instead of userid. Get Profile Error;{1} source:{2} stack:{3}", index, ex.Message, ex.Source, ex.StackTrace));
                }

                //Console.WriteLine(String.Format("{0} {1} {2}", tuSelf.Id, tuSelf.ScreenName, tuSelf.FollowersCount));
                // return;
                // var options = new ListFollowersOptions { ScreenName = tuSelf.ScreenName };

                /*        ListFollowersOptions options = new ListFollowersOptions();
                 *           //   options.UserId = tuSelf.Id;
                 *              options.ScreenName = tuSelf.ScreenName;
                 *              options.IncludeUserEntities = false;
                 *              options.SkipStatus = true;
                 *              options.Cursor = -1;
                 *
                 *              List<TwitterUser> lstFollowers = new List<TwitterUser>();
                 *            TwitterCursorList<TwitterUser> followers = service.ListFollowers(options);
                 */

                ListFollowerIdsOfOptions options = new ListFollowerIdsOfOptions();
                options.Cursor = -1;
                options.Count  = 3000;
                options.UserId = t_userid;

                // if the API call did not succeed

                while (true)
                {
                    TwitterCursorList <long> followers = service.ListFollowerIdsOf(options);
                    //If the followers exists
                    if (followers == null)
                    {
                        WriteErrorLog(index + "===> there is no followers !! error");
                        break;
                    }
                    else
                    {
                        foreach (long user in followers)
                        {
                            // do something with the user (I'm adding them to a List)
                            lstFollowers.Add(user);
                        }
                    }

                    // if there are more followers
                    if (followers.NextCursor != null &&
                        followers.NextCursor != 0)
                    {
                        // then advance the cursor and load the next page of results
                        options.Cursor = followers.NextCursor;
                        followers      = service.ListFollowerIdsOf(options);
                    }
                    // otherwise, we're done!
                    else
                    {
                        break;
                    }
                }
            }catch (Exception ex)
            {
                WriteErrorLog(String.Format("{0}===>Error: {1} Sourc: {2}", index, ex.Message, ex.Source));
            }

            return(lstFollowers);
        }
Пример #15
0
        private void ReceiveUsers(TwitterCursorList<TwitterUser> users, TwitterResponse response)
        {
            if (response.StatusCode == HttpStatusCode.NotFound)
            {
                MessageService.ShowError(Resources.CouldntFindUser);
                GoBack();
                return;
            }
            else if (response.StatusCode != HttpStatusCode.OK || users == null)
            {
                MessageService.ShowError(Resources.ErrorMessage);
                GoBack();
                return;
            }

            foreach (var usr in users)
                if (!list.Contains(usr))
                    list.Add(usr);

            if (users.NextCursor != null && users.NextCursor != 0)
            {
                if (whatUserList == "followers")
                    ServiceDispatcher.GetCurrentService().ListFollowers(new ListFollowersOptions { ScreenName = user }, ReceiveUsers);
                else if (whatUserList == "following")
                    ServiceDispatcher.GetCurrentService().ListFriends(new ListFriendsOptions { ScreenName = user }, ReceiveUsers);
            }
            else
            {
                IsLoading = false;
            }
        }
Пример #16
0
        private void ReceiveList(TwitterCursorList<TwitterUser> users, TwitterResponse response)
        {
            bool finish = false;
            if (users == null || response.StatusCode != HttpStatusCode.OK)
            {
                if (Error != null)
                    Error(this, response);
                finish = true;
                return;
            }

            if (users.NextCursor != null && users.NextCursor != 0 && _service != null)
            {
                if (GetFollowing)
                    _service.ListFriends(new ListFriendsOptions { ScreenName = User.ScreenName, Cursor = (long)users.NextCursor }, ReceiveList);
                if (GetFollowers)
                    _service.ListFollowers(new ListFollowersOptions { ScreenName = User.ScreenName, Cursor = (long)users.NextCursor }, ReceiveList);
            }
            else
                finish = true;

            if (Users == null)
                Users = new SafeObservable<TwitterUser>();

            foreach (var user in users)
                if(!Users.Contains(user))
                    Users.Add(user);

            if (finish && Finished != null)
                Finished(this, new EventArgs());
        }
Пример #17
0
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            string name = req.Query["name"];

            string  requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            dynamic data        = JsonConvert.DeserializeObject(requestBody);

            name = name ?? data?.name;

            if (name != null)
            {
                var twitterService = new TwitterService(
                    consumerKey: Environment.GetEnvironmentVariable("twitterconsumerkey"),
                    consumerSecret: Environment.GetEnvironmentVariable("twitterconsumersecret"));

                twitterService.AuthenticateWith(
                    token: Environment.GetEnvironmentVariable("twitteraccesstoken"),
                    tokenSecret: Environment.GetEnvironmentVariable("twitteraccesstokensecret"));

                var followerList = new List <string>();

                var options = new ListFollowersOptions();
                options.ScreenName          = name;
                options.IncludeUserEntities = false;
                options.SkipStatus          = true;
                options.Count  = 200;
                options.Cursor = -1;

                TwitterCursorList <TwitterUser> cursorList = null;
                do
                {
                    var cursorRequest = await twitterService.ListFollowersAsync(options);

                    if (cursorRequest.Response.Error != null)
                    {
                        return(new BadRequestObjectResult(cursorRequest.Response.Error.Message));
                    }

                    cursorList = cursorRequest.Value;
                    foreach (TwitterUser user in cursorList)
                    {
                        followerList.Add(user.ScreenName);
                    }

                    if (options.Cursor != -1)
                    {
                        break;                      //only load two pages (2*200 followers) because of rate limiting :(
                    }
                    options.Cursor = cursorList.NextCursor;
                } while(cursorList.NextCursor != null);

                return(new OkObjectResult($"Followers of {name} (continue with cursor {cursorList.NextCursor}):"
                                          + Environment.NewLine + string.Join(Environment.NewLine, followerList)));
            }
            else
            {
                return(new BadRequestObjectResult($"Please pass a name on the query string or in the request body."));
            }
        }
        protected override object ExecuteCommand(string target, string parameters)
        {
            Logger.Log(GetContext() + "ExecuteCommand");

            List <long> followers             = new List <long>(); //followers
            TwitterCollectionsService service = new TwitterCollectionsService(_station, _collector);

            long cursor;

            if (String.IsNullOrEmpty(parameters))
            {
                cursor = -1;
            }
            else
            {
                cursor = long.Parse(parameters);
            }

            bool loop = true;

            do
            {
                TwitterCursorList <long> cursorList = service.GetTwitterFollowers(target, cursor); //followers

                if (service.twitterService.Response.StatusCode != System.Net.HttpStatusCode.OK)
                {
                    if (service.twitterService.Response.Error.Message == "Rate limit exceeded")
                    {
                        Logger.Log(GetContext() + "Sleep Thread, First Hit Exception");
                        Thread.Sleep(_sleepTime); //Sleep Thread, First Hit Exception
                    }
                    else
                    {
                        string error = GetContext() + "RESPONSE ERROR: " + service.twitterService.Response.StatusCode.ToString();
                        Logger.Log(error);
                        throw new Exception(error);
                    }
                }
                else
                {
                    //Sync Result
                    foreach (long follower in cursorList)
                    {
                        followers.Add(follower);
                    }
                    Logger.Log(GetContext() + "Followers.Count = " + followers.Count.ToString());

                    //Done?
                    cursor = cursorList.NextCursor ?? 0;
                    if (cursor <= 0)
                    {
                        loop = false;
                    }

                    if (service.twitterService.Response.RateLimitStatus.RemainingHits == 0)
                    {
                        Logger.Log(GetContext() + "Sleep Thread, RemainingHits = 0");
                        Thread.Sleep(_sleepTime); //Sleep Thread
                    }
                }
            } while (loop);

            return(followers);
        }