Sometimes, you just realized that you're following some many people that might or not follow you back...for some "accounts", it doesn't matter...I mean...if I follow @annafaris I don't expect her to follow me back...would love that of course, but I have some common sense -:) But...when it's a John Doe that I follow...and doesn't follow me back...things get personal...and it's time to clean up Twitter a little bit...
Twitter provides some useful APIs that are sadly restricted to only 150 calls per hours as you can verify by calling Rate_Limit_Status.
Anyway...I was thinking about doing something with Twitter and specially the people that I follow and doesn't follow me back...so of course...I choose #R as I have already done some interesting things with Python...
setwd("C:/Debug/R Source Codes") Get_Twitter_Info<-function(p_source){ web_page<-readLines(p_source) mypattern = '<id>([^<]*)</id>' datalines = grep(mypattern,web_page,value=TRUE) getexpr = function(s,g)substring(s,g,g+attr(g,'match.length')-1) g_list = gregexpr(mypattern,datalines) matches = mapply(getexpr,datalines,g_list) result = gsub(mypattern,'\\1',matches) names(result) = NULL return(result) } Get_Screen_Name<-function(p_userid){ user_url<-paste("https://api.twitter.com/1/users/lookup.xml?user_id=", p_userid,"&include_entities=false") web_page<-readLines(user_url) mypattern = '<screen_name>([^<]*)</screen_name>' datalines = grep(mypattern,web_page,value=TRUE) getexpr = function(s,g)substring(s,g,g+attr(g,'match.length')-1) g_list = gregexpr(mypattern,datalines) matches = mapply(getexpr,datalines,g_list) screen_name = gsub(mypattern,'\\1',matches) names(screen_name) = NULL return(screen_name) } trim <- function(x){ x<-gsub(' ','',x) return(x) } followers<-Get_Twitter_Info("https://api.twitter.com/1/followers/ids.xml? cursor=-1&screen_name=Blag") following<-Get_Twitter_Info("https://api.twitter.com/1/friends/ids.xml? cursor=-1&screen_name=Blag") People_Id<-"" Bad_People<-c() Bad_Names<-c() j<-0 for(i in 1:length(following)) { j<-j+1 if(j>=100){ j<-0 People_Id<-substring(People_Id,2) Bad_People<-Get_Screen_Name(People_Id) Bad_Names<-append(Bad_Names,Bad_People) People_Id<-"" } Match<-following[i] %in% followers if(Match == TRUE){ } else{ following[i]<-trim(following[i]) People_Id<-paste(People_Id,following[i],sep=",") } } write.csv(Bad_Names,"Bad_Names.csv",row.names=FALSE)
This little program will take my followers (from my account @Blag), and the people I follow...a simple loop at the people I'm following allows me to determine who is following back or not. With that identified, I made groups of 100 User Id's (As the Lookup API only support 100 accounts) and grab their user names...
Finally, I generate a .CSV file with all the people who I follow but doesn't follow me back...time to clean up my Twitter -;)
P.S: Would love to show the generated file...but...don't want to expose the names of the Bad People, who only but unforgivable crime is not to follow me back -:)
Greetings,
Blag.
No hay comentarios:
Publicar un comentario