| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- using LinqToTwitter;
- using TwitterSearch.Portable.Models;
- using Refractored.Xam.TTS;
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace TwitterSearch.Portable.ViewModels
- {
- public class TwitterViewModel
- {
- public ObservableCollection<Tweet> Tweets { get; set; }
- public bool IsBusy { get; set; }
-
- public TwitterViewModel()
- {
- Tweets = new ObservableCollection<Tweet>();
- }
- public async Task LoadTweetsCommand(string search)
- {
- if (IsBusy)
- return;
- IsBusy = true;
- try
- {
- Tweets.Clear();
- var auth = new ApplicationOnlyAuthorizer()
- {
- CredentialStore = new InMemoryCredentialStore
- {
- ConsumerKey = "ZTmEODUCChOhLXO4lnUCEbH2I",
- ConsumerSecret = "Y8z2Wouc5ckFb1a0wjUDT9KAI6DUat5tFNdmIkPLl8T4Nyaa2J",
- },
- };
- await auth.AuthorizeAsync();
- var twitterContext = new TwitterContext(auth);
-
- var queryResponse = await
- (from tweet in twitterContext.Search
- where tweet.Type == SearchType.Search &&
- tweet.Query == search &&
- tweet.Count == 100
- select tweet).SingleOrDefaultAsync();
- if (queryResponse == null || queryResponse.Statuses == null)
- return;
- var tweets =
- (from tweet in queryResponse.Statuses
- select new Tweet
- {
- StatusID = tweet.StatusID,
- ScreenName = tweet.User.ScreenNameResponse,
- Text = tweet.Text,
- CurrentUserRetweet = tweet.CurrentUserRetweet,
- CreatedAt = tweet.CreatedAt,
- Url = string.Format("https://m.twitter.com/{0}/status/{1}", tweet.User.ScreenNameResponse, tweet.StatusID),
- Image = (tweet.RetweetedStatus != null && tweet.RetweetedStatus.User != null ?
- tweet.RetweetedStatus.User.ProfileImageUrl.Replace("http://", "https://") : tweet.User.ProfileImageUrl.Replace("http://", "https://"))
- }).ToList();
- foreach (var tweet in tweets)
- {
- Tweets.Add(tweet);
- }
- }
- catch
- {
- }
- IsBusy = false;
- }
- public void Speak(int index)
- {
- var tweet = Tweets[index];
- CrossTextToSpeech.Current.Speak(tweet.Text);
- }
- }
- }
|