واکشی توئیت از توئیتر با استفاده از سی شارپ و LinqToTwitter
سلام دوستان
در این مقاله آموزشی قصد داریم اطلاعاتی مانند یک توئیت رو از وب سایت توئیتر واکشی کنیم
خوب اول از همه:
به وب سایت Twitter برین اسکرول کنید به اخر صفحه و در قسمت Tools
روی Manage your apps کلیک کنید
یک صفحه می بینید که شامل یک سری فیلد هست
فیلد هارو پر کنید و به مرحله بعدی برین
داخل تب چند کلید وجود دارد که شامل:
1-Consumer key
2-Consumer Secret
3- Access Token
4-Access TokenSecret
برای دریافت کلید های اصلی روی دکمه ی Generate Access Token کلیک کنید.
این 4 کلید برای واکشی اطلاعات لازم است.
یک کنسول اپلیکیشن بسازید
بعد از اتمام ساخت پروژه وارد ناگت منیج بشین و پکیج LinqToTwitter رو نصب کنید
حالا باید یک همچین کلاسی بسازیم:
private static void Main(string[] args)
{
Console.WriteLine("working on it....");
var tweetList = GetTwitterFeeds();
Console.WriteLine("Tweets Count "+tweetList.Count);
var file = new System.IO.StreamWriter("D:\\TweetsList.txt",true); // Make sure to change the path according to your system
foreach (var item in tweetList)
{
file.WriteLine(item.CreatedAt);
}
file.Close();
Console.WriteLine("Done! check your drive file has been created");
Console.ReadLine();
}
public static List<Status> GetTwitterFeeds()
{
string screenname = "csharpcorner";
var auth = new SingleUserAuthorizer
{
CredentialStore = new InMemoryCredentialStore()
{
ConsumerKey = ConfigurationManager.AppSettings["consumerkey"],
ConsumerSecret = ConfigurationManager.AppSettings["consumersecret"],
OAuthToken = ConfigurationManager.AppSettings["accessToken"],
OAuthTokenSecret = ConfigurationManager.AppSettings["accessTokenSecret"]
}
};
var twitterCtx = new TwitterContext(auth);
var ownTweets = new List<Status>();
ulong maxId = 0;
bool flag = true;
var statusResponse = new List<Status>();
statusResponse = (from tweet in twitterCtx.Status
where tweet.Type == StatusType.User
&& tweet.ScreenName == screenname
&& tweet.Count == 200
select tweet).ToList();
if (statusResponse.Count > 0)
{
maxId = ulong.Parse(statusResponse.Last().StatusID.ToString()) - 1;
ownTweets.AddRange(statusResponse);
}
do
{
int rateLimitStatus = twitterCtx.RateLimitRemaining;
if (rateLimitStatus != 0)
{
statusResponse = (from tweet in twitterCtx.Status
where tweet.Type == StatusType.User
&& tweet.ScreenName == screenname
&& tweet.MaxID == maxId
&& tweet.Count == 200
select tweet).ToList();
if (statusResponse.Count != 0)
{
maxId = ulong.Parse(statusResponse.Last().StatusID.ToString()) - 1;
ownTweets.AddRange(statusResponse);
}
else
{
flag = false;
}
}
else
{
flag = false;
}
} while (flag);
return ownTweets;
}
}
پایان.