public void Can_get_friends_on_first_page() { var service = GetAuthenticatedService(); TwitterCursorList <TwitterUser> followers = service.ListFriends(new ListFriendsOptions()); Assert.IsNotNull(followers); }
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); }
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]); } }
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 } }
public void Can_get_friends() { var service = GetAuthenticatedService(); TwitterCursorList <TwitterUser> followers = service.ListFriends(-1); Assert.IsNotNull(followers); }
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()); } }
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); }
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)); }
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]); } }
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; } }
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; }
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); } }
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); }
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; } }
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()); }
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); }