示例#1
0
文件: Tweet.cs 项目: hrtk91/FavColle
 public Retweet(CoreTweet.Status status)
 {
     Id   = status.Id;
     User = new TweetUser
     {
         IconSource = new ProfileImage(status.RetweetedStatus.User.ProfileImageUrl),
         ScreenName = status.RetweetedStatus.User.ScreenName,
         Name       = status.RetweetedStatus.User.Name,
     };
     Text = status.RetweetedStatus.ExtendedTweet?.FullText != null ?
            status.RetweetedStatus.ExtendedTweet?.FullText :
            status.RetweetedStatus.FullText ?? status.RetweetedStatus.Text ?? "";
     Medias =
         status?.RetweetedStatus?.ExtendedEntities?.Media?
         .Where(media => media.Type == "photo")
         .Select(media => new TweetImage(media.MediaUrl));
     RetweetCount    = status.RetweetedStatus.RetweetCount ?? 0;
     FavoriteCount   = status.RetweetedStatus.FavoriteCount ?? 0;
     IsRetweetByUser = status.IsRetweeted ?? false;
     IsFavorited     = status.RetweetedStatus.IsFavorited ?? false;
     OriginUser      = new TweetUser
     {
         UserId     = status.User.Id ?? 0,
         IconSource = new ProfileImage(status.User.ProfileImageUrl),
         ScreenName = status.User.ScreenName,
         Name       = status.User.Name
     };
 }
示例#2
0
        public void Stop()
        {
            this.disposable.Dispose();
            this.timer.Change(Timeout.Infinite, Timeout.Infinite);
            rt_data.Clear();

            if (setdata.d.propaganda && check_num.NUM != 0)
            {
                foreach (var token in tokens)
                {
                    if (token.IsEnabled)
                    {
                        try
                        {
                            string           text   = check_num.NUM + Properties.Resources.tweet_propaganda;
                            CoreTweet.Status Status = token.token.Statuses.Update(new Dictionary <string, object>()
                            {
                                { "status", text }
                            });
                            Console.WriteLine(text);
                        }
                        catch
                        {
                        }
                    }
                }
            }

            //Console.WriteLine("---------------RT End--------------------");
        }
示例#3
0
 public static Tweet Convert(CoreTweet.Status source) =>
 new Tweet(
     id: source.Id,
     tweetUrl: $"https://twitter.com/{source.User.ScreenName}/status/{source.Id}",
     user: ConvertUser(source.User),
     postedAt: source.CreatedAt.LocalDateTime,
     body: source.Text,
     imageUrls: source.Entities.Urls.Select(e => e.ExpandedUrl).ToList()
     );
示例#4
0
文件: Tweet.cs 项目: hrtk91/FavColle
 public static ITweet Create(CoreTweet.Status status)
 {
     if (status.RetweetedStatus == null)
     {
         return(new Tweet(status));
     }
     else
     {
         return(new Retweet(status));
     }
 }
示例#5
0
        public RetweetInformation(CoreTweet.Status cOrigStatus)
        {
            if (cOrigStatus.RetweetedStatus == null)
            {
                return;
            }

            User      = new User(cOrigStatus.User);
            Id        = cOrigStatus.Id;
            CreatedAt = cOrigStatus.CreatedAt.DateTime;
        }
示例#6
0
        public Status(CoreTweet.Status cOrigStatus)
        {
            var cStatus = cOrigStatus;

            if (cStatus.RetweetedStatus != null)
            {
                cStatus = cOrigStatus.RetweetedStatus;
            }

            CreatedAt = cStatus.CreatedAt.DateTime;
            Entities  = new Entities(cStatus.ExtendedTweet?.Entities ?? cStatus.Entities,
                                     cStatus.ExtendedTweet?.ExtendedEntities ?? cStatus.ExtendedEntities);
            FavoriteCount       = cStatus.FavoriteCount ?? 0;
            RetweetCount        = cStatus.RetweetCount ?? 0;
            InReplyToStatusId   = cStatus.InReplyToStatusId ?? 0;
            InReplyToScreenName = cStatus.InReplyToScreenName;
            InReplyToUserId     = cStatus.InReplyToUserId ?? 0;
            Id                    = cStatus.Id;
            Text                  = cStatus.ExtendedTweet?.FullText ?? cStatus.FullText ?? cStatus.Text;
            User                  = cStatus.User != null ? new User(cStatus.User) : null;
            IsFavorited           = cStatus.IsFavorited ?? false;
            IsRetweeted           = cStatus.IsRetweeted ?? false;
            PossiblySensitive     = cStatus.PossiblySensitive ?? false;
            RetweetInformation    = cOrigStatus.RetweetedStatus != null ? new RetweetInformation(cOrigStatus) : null;
            HasRetweetInformation = cOrigStatus.RetweetedStatus != null;
            MentionStatus         = null;
            QuotedStatus          = cStatus.QuotedStatus?.User != null
                ? new Status(cStatus.QuotedStatus)
                : null;
            QuotedStatusId = cStatus.QuotedStatusId.HasValue && QuotedStatus != null ? cStatus.QuotedStatusId.Value : 0;
            Url            = "https://twitter.com/" + cStatus.User.ScreenName + "/status/" + cStatus.Id;

            var sourceMatch = SourceRegex.Match(cStatus.Source);

            Source = sourceMatch.Success ? sourceMatch.Groups[1].Value : cStatus.Source;
        }
示例#7
0
        //引数で受け取るのは実際にタップした詳細ツイートです
        public DetailTwtPage(CoreTweet.Status item)
        {
            TwitterDatabase database = new TwitterDatabase();

            var btnMenu = new StackLayout
            {
                VerticalOptions = LayoutOptions.EndAndExpand,
                Orientation     = StackOrientation.Horizontal,
                Children        =
                {
                    new Button {
                        Text    = "戻る",
                        Command = new Command(() =>{
                            // IsEnabled = false;
                            //System.Console.WriteLine("call");
                            // Navigation.PushModalAsync(new SerchResult(entry.Text));
                            Navigation.PopModalAsync();
                            // Navigation.PushAsync(new SerchResult(entry.Text));
                            //IsEnabled = true;
                            // Navigation.PushAsync(new SerchResult(entry.Text));
                            //.PushAsync(new SerchResult(entry.Text));
                        })
                    },

                    new Button {
                        Text    = "保存する",
                        Command = new Command(() =>{
                            var twitem = new TwItem{
                                UserName  = item.User.ScreenName,
                                CreateDay = item.User.CreatedAt.DateTime.ToString(),
                                Text      = item.Text,
                                saveTime  = DateTime.Now
                            };

                            database.SaveData(twitem);

                            DisplayAlert("完了", "保存しました", "OK");
                        })
                    },
                }
            };



            Content = new StackLayout
            {
                Children =
                {
                    new Label {
                        Text = item.User.ScreenName
                    },
                    new Label {
                        Text = item.User.CreatedAt.DateTime.ToString()
                    },
                    new Label {
                        Text = item.Text
                    },
                    btnMenu
                },
                Padding = new Thickness(0, Device.OnPlatform(20, 0, 20), 0, 0)
            };
        }
示例#8
0
        private void RT_Go(object o)
        {
            //Console.WriteLine("RT_GO");
            bool IsRetweeted = false;

            if (rt_data.Count != 0)
            {
                foreach (var ids in blocklist.Select((v, i) => new{ v, i }))
                {
                    if (tokens[ids.i].UseBlock)
                    {
                        foreach (var id in ids.v)
                        {
                            if (id == rt_data[0].usr)
                            {
                                rt_data.RemoveAt(0);
                                RT_Go(o);
                                return;
                            }
                        }
                    }
                }
                if (setdata.d.Use_NG_ACC)
                {
                    foreach (var ng_acc in ng_datas.account.Select((v, i) => new { v, i }))
                    {
                        if (ng_acc.v.id == rt_data[0].usr)
                        {
                            rt_data.RemoveAt(0);
                            RT_Go(o);
                            return;
                        }
                    }
                }

                foreach (var id in improper_tweet)
                {
                    if (id == rt_data[0].id)
                    {
                        rt_data.RemoveAt(0);
                        RT_Go(o);
                        return;
                    }
                }


                foreach (var token in tokens)
                {
                    if (token.IsEnabled)
                    {
                        if ((!(setdata.d.rt_from_me)) && (token.token.UserId == rt_data[0].usr))
                        {
                            continue;
                        }

                        try
                        {
                            CoreTweet.Status retweetedStatus = token.token.Statuses.Retweet(id => rt_data[0].id);
                            if (WithHeart)
                            {
                                token.token.Favorites.Create(id => rt_data[0].id);
                            }
                            //CoreTweet.Status favstatus =token.token.Favorites.Create(id => rt_data[0].id);
                            IsRetweeted = true;
                            //Console.WriteLine(token.token.ScreenName +";RT->" + rt_data[0].text);
                        }
                        //catch(CoreTweet.TwitterException e)
                        //{
                        //Console.WriteLine(rt_data[0].text);
                        //Console.WriteLine(e);
                        //}
                        catch
                        {
                            //Console.WriteLine(rt_data[0].text);
                            //Console.WriteLine(e);
                            if (rt_data.Count != 0)
                            {
                                improper_tweet.Add(rt_data[0].id);
                            }
                        }
                    }
                }
                if (IsRetweeted)
                {
                    check_num.Num_Inc();
                }
                //Console.WriteLine(rt_data.Count);
                if (rt_data.Count != 0)
                {
                    rt_data.RemoveAt(0);
                    if (!(IsRetweeted))
                    {
                        RT_Go(o);
                    }
                }//Console.WriteLine(rt_data.Count);
                 //Console.WriteLine(DateTime.Now);
            }
        }
示例#9
0
 public StatusRanking(int ranking, CoreTweet.Status status)
 {
     Ranking = ranking;
     Status  = status;
 }