Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile("appsettings.json")
                          .AddJsonFile("appsecrets.json");

            IConfiguration config = new ConfigurationBuilder()
                                    .AddJsonFile("appsettings.json", true, true)
                                    .AddJsonFile("appsecrets.json")
                                    .Build();

            //Console.Read();
            //The Key has been revoked
            //TODO  Sleeping looks like :) , the secrets will be moved to an ennrypted files
            Auth.SetUserCredentials(config["TwitterAuthConfig:consumerKey"],
                                    config["TwitterAuthConfig:consumerSecret"],
                                    config["TwitterAuthConfig:userAccessToken"], config["TwitterAuthConfig:userAccessSecret"]);
            //Tweetinvi.Tweet.PublishTweet("SensingApp:Snowed in)");
            //var authenticatedUser = User.GetAuthenticatedUser();
            //var tweets = Timeline.GetUserTimeline();
            var usertimeline = from c in Timeline.GetUserTimeline(User.GetUserFromScreenName(args[0]).Id) orderby c.CreatedAt ascending select c;

            foreach (var tweet in usertimeline)
            {
                Tweetinvi.Models.ITweet t = tweet;
                Utility.WriteWithColor("<<" + t.CreatedAt + ">>");
                Utility.WriteWithColor(tweet.ToString() + ":");
            }
            Console.Read();
        }
Ejemplo n.º 2
0
    public Tweet(Tweetinvi.Models.ITweet tweet)
    {
        this.ID      = tweet.Id.ToString();
        this.Content = tweet.FullText;

        //Get media URL
        try
        {
            this.MediaUrl = tweet.Entities.Medias[0].MediaURL;
        }
        catch (Exception e)
        {
            try
            {
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.WriteLine(e);
                Console.ForegroundColor = ConsoleColor.White;
                this.MediaUrl           = tweet.ExtendedTweet.ExtendedEntities.Medias[0].MediaURL;
            }
            catch (Exception e2)
            {
                Console.Error.WriteLine($"FOR SOME REASON THERE IS NO IMAGE LINK IN THIS IMAGE TWEET \n GO YELL AT TWITTER FOR THIS I GUESS \n \nSTACK TRACE: {e2}");
                throw e2;
                //TODO: handle this
            }
        }

        //Get reply count. tweet.replycount is nullable so replace the null with zero
        var temp = tweet.ReplyCount;

        if (temp == null)
        {
            this.Replies = 0;
        }
        else
        {
            this.Replies = temp;
        }
        this.Fav          = tweet.FavoriteCount;
        this.CreationTime = tweet.CreatedAt;
        this.RT           = tweet.RetweetCount;
        this.TweetUrl     = tweet.Url;
        this.Followers    = tweet.CreatedBy.FollowersCount;

        //Use this to take into account user popularity
        if (Fav != 0)
        {
            this.LikeFollowRatio = (float)Followers / (float)Fav;
        }
        else
        {
            this.LikeFollowRatio = -1;
        }

        this.AgeHours = DateTime.Today.Date.Subtract(tweet.CreatedAt.Date).Hours;
        this.AgeDays  = DateTime.Today.Date.Subtract(tweet.CreatedAt.Date).Days;
    }
Ejemplo n.º 3
0
        private static void HandleUserReply(Tweetinvi.Models.ITweet userTweet)
        {
            if (!userTweet.InReplyToStatusId.HasValue ||
                userTweet.InReplyToScreenName != gridExplorerBotScreenName)
            {
                Console.WriteLine("Not a reply to grid explorer bot. id: " + userTweet.Id);
                return;
            }

            if (userTweet.CreatedBy == null ||
                userTweet.CreatedBy.ScreenName == "" ||
                userTweet.CreatedBy.ScreenName == gridExplorerBotScreenName)
            {
                Console.WriteLine("Invalid user info or reply to self. id: " + userTweet.Id);
                return;
            }

            string userTextLower   = userTweet.GetSafeDisplayText().ToLower();
            string cleanedUserText = System.Net.WebUtility.HtmlDecode(userTextLower);

            Console.WriteLine("Cleaned user text: " + cleanedUserText);

            if (Game.MatchesResetCommand(cleanedUserText))
            {
                string freshGameOutput = Program.StartFreshGame(DateTimeOffset.UtcNow);

                Tweet(freshGameOutput);
                return;
            }

            if (Game.MatchesHelpCommand(cleanedUserText))
            {
                string commandsListText = Game.GetCommandsList();

                TweetChain(commandsListText, userTweet);
                return;
            }

            Console.WriteLine("Fetching parent tweet");
            Tweetinvi.Models.ITweet parentGridBotTweet = Tweetinvi.Tweet.GetTweet(userTweet.InReplyToStatusId.Value);

            if (parentGridBotTweet.CreatedAt < Program.oldestSupportedData)
            {
                Console.WriteLine("Parent tweet too old. Save data may not be read in correctly. id: " + userTweet.Id);

                TweetReplyTo("This tweet is too old to parse correctly.", userTweet);
                return;
            }

            string cleanedParentText = System.Net.WebUtility.HtmlDecode(parentGridBotTweet.Text);

            Console.WriteLine("Running one tick");
            string gameOutput = Program.RunOneTick(cleanedParentText, cleanedUserText, parentGridBotTweet.CreatedAt);

            TweetReplyTo(gameOutput, userTweet);
        }
Ejemplo n.º 4
0
Archivo: Form1.cs Proyecto: eimink/TVNK
 private void button1_Click(object sender, EventArgs e)
 {
     if (tweetList.SelectedIndex >= 0)
     {
         selectedTweet = tweetDict[tweetList.SelectedIndex];
         Dictionary <string, string> payload = new Dictionary <string, string>();
         payload.Add("user", selectedTweet.CreatedBy.Name);
         payload.Add("tweet", "@" + selectedTweet.CreatedBy.Name + ": " + selectedTweet.FullText);
         payload.Add("profileImage", selectedTweet.CreatedBy.ProfileImageUrl400x400);
         wssv.WebSocketServices.Broadcast(Newtonsoft.Json.JsonConvert.SerializeObject(payload));
     }
 }
Ejemplo n.º 5
0
        public void pack(Tweetinvi.Models.ITweet tweet)
        {
            ImageDownloader image = new ImageDownloader(tweet.CreatedBy.ProfileImageUrl400x400);

            m_date            = tweet.CreatedAt;
            m_userName        = "******" + tweet.CreatedBy.UserIdentifier.ScreenName;
            m_fullName        = tweet.CreatedBy.Name;
            m_profile.Image   = image.download();
            m_identifier.Text = m_fullName + " " + m_userName + " " + m_date.ToString();
            m_text.Text       = tweet.Text;
            m_id = tweet.IdStr;
        }
Ejemplo n.º 6
0
        private static void GivePhoneAndTweetReply(string likeTempleTweetIdString)
        {
            Console.WriteLine("Awarding phone " + likeTempleTweetIdString);
            long likeTempleTweetId = long.Parse(likeTempleTweetIdString);

            Tweetinvi.Models.ITweet likeTempleTweet = Tweetinvi.Tweet.GetTweet(likeTempleTweetId);

            string cleanedParentText = System.Net.WebUtility.HtmlDecode(likeTempleTweet.Text);

            string gameOutput = Program.AwardMobilePhone(cleanedParentText, likeTempleTweet.CreatedAt);

            TweetReplyTo(gameOutput, likeTempleTweet);
        }
Ejemplo n.º 7
0
        private static void HandleFavorites(AccountActivityBody accountActivity, Dictionary <string, PrayerCount> tweetIdToPrayerCountMap)
        {
            if (accountActivity.favorite_events == null || accountActivity.favorite_events.Length == 0)
            {
                Console.WriteLine("No favorites events");
                return;
            }

            foreach (Tweetinvi.Streams.Model.AccountActivity.AccountActivityFavouriteEventDTO favoriteEvent in accountActivity.favorite_events)
            {
                Tweetinvi.Models.ITweet favoritedTweet = Tweetinvi.Tweet.GenerateTweetFromDTO(favoriteEvent.FavouritedTweet);

                if (favoritedTweet == null ||
                    favoritedTweet.CreatedBy == null ||
                    favoritedTweet.CreatedBy.ScreenName != gridExplorerBotScreenName)
                {
                    Console.WriteLine("Didn't favorite a Grid Explorer Bot tweet");
                    continue;
                }

                if (favoritedTweet.CreatedAt < Program.oldestSupportedData)
                {
                    Console.WriteLine("Favorited tweet is too old.");
                    continue;
                }

                string cleanedFavoritedTweetText = System.Net.WebUtility.HtmlDecode(favoritedTweet.Text);

                if (!Program.IsInLikeTemple(cleanedFavoritedTweetText, favoritedTweet.CreatedAt))
                {
                    Console.WriteLine("Isn't in Like Temple");
                    continue;
                }

                if (tweetIdToPrayerCountMap.ContainsKey(favoritedTweet.IdStr))
                {
                    tweetIdToPrayerCountMap[favoritedTweet.IdStr].mCurrent -= Program.prayersPerFavorite;
                }
                else
                {
                    int currentPrayerCount = GetPrayerCount(favoritedTweet);
                    tweetIdToPrayerCountMap[favoritedTweet.IdStr] = new PrayerCount()
                    {
                        mInitial = currentPrayerCount - Program.prayersPerFavorite,
                        mCurrent = currentPrayerCount,
                    };
                }
            }
        }
Ejemplo n.º 8
0
 public void AddFromTweet(Tweetinvi.Models.ITweet tweet, Event ev)
 {
     using (TweetContext context = GetContext())
     {
         Tweet result = context.Tweets.Where(t => t.TweetId == tweet.Id && t.Event.Id == ev.Id).SingleOrDefault();
         if (result != null)
         {
             List <Tweetinvi.Models.Entities.IMediaEntity> mediaEntities = tweet.Media.Where(e => e.MediaType.Equals("photo")).ToList();
             foreach (Tweetinvi.Logic.TwitterEntities.MediaEntity entity in mediaEntities)
             {
                 Add(new MediaUrl(entity.MediaURL, result));
             }
         }
     }
 }
Ejemplo n.º 9
0
 public static string GetLatestTweet(BotInstance BotInstance)
 {
     try
     {
         Auth.SetUserCredentials(
             BotInstance.LoginConfig["Twitter"]["ConsumerKey"].ToString(),
             BotInstance.LoginConfig["Twitter"]["ConsumerSecret"].ToString(),
             BotInstance.LoginConfig["Twitter"]["AccessToken"].ToString(),
             BotInstance.LoginConfig["Twitter"]["AccessSecret"].ToString()
             );
         Tweetinvi.Models.IUser  TwitterUser      = User.GetUserFromScreenName("TheHarbonator");
         Tweetinvi.Models.ITweet UsersLatestTweet = TwitterUser.GetUserTimeline(1).Last();
         return(UsersLatestTweet.Url);
     }
     catch { return("!Was Unable To Find URL!"); }
 }
Ejemplo n.º 10
0
        public static Tweetinvi.Models.ITweet Tweet(string text)
        {
            Console.WriteLine("Publishing tweet: " + text);
            Tweetinvi.Models.ITweet newTweet = Tweetinvi.Tweet.PublishTweet(text);

            if (newTweet != null)
            {
                Console.WriteLine("Published new tweet: " + newTweet.Id);
            }
            else
            {
                Console.WriteLine("Failed to publish tweet");
            }

            return(newTweet);
        }
Ejemplo n.º 11
0
Archivo: Form1.cs Proyecto: eimink/TVNK
 public void OnClientConnected()
 {
     if (this.IsHandleCreated)
     {
         Invoke(new Action(() =>
         {
             if (selectedTweet != null)
             {
                 selectedTweet = tweetDict[tweetList.SelectedIndex];
                 Dictionary <string, string> payload = new Dictionary <string, string>();
                 payload.Add("user", selectedTweet.CreatedBy.Name);
                 payload.Add("tweet", "@" + selectedTweet.CreatedBy.Name + ": " + selectedTweet.FullText);
                 payload.Add("profileImage", selectedTweet.CreatedBy.ProfileImageUrl400x400);
                 wssv.WebSocketServices.Broadcast(Newtonsoft.Json.JsonConvert.SerializeObject(payload));
             }
         }));
     }
 }
Ejemplo n.º 12
0
        private static void HandleUserRetweet(Tweetinvi.Models.ITweet userTweet, Dictionary <string, PrayerCount> tweetIdToPrayerCountMap)
        {
            if (!userTweet.IsRetweet)
            {
                Console.WriteLine("Not a retweet");
                return;
            }

            if (userTweet.RetweetedTweet == null ||
                userTweet.RetweetedTweet.CreatedBy == null ||
                userTweet.RetweetedTweet.CreatedBy.ScreenName != gridExplorerBotScreenName)
            {
                Console.WriteLine("Not a retweet of grid explorer bot");
                return;
            }

            if (userTweet.RetweetedTweet.CreatedAt < Program.oldestSupportedData)
            {
                Console.WriteLine("Retweeted tweet is too old.");
                return;
            }

            string cleanedFavoritedTweetText = System.Net.WebUtility.HtmlDecode(userTweet.RetweetedTweet.Text);

            if (!Program.IsInLikeTemple(cleanedFavoritedTweetText, userTweet.RetweetedTweet.CreatedAt))
            {
                Console.WriteLine("Isn't in the Like Temple");
                return;
            }

            if (tweetIdToPrayerCountMap.ContainsKey(userTweet.RetweetedTweet.IdStr))
            {
                tweetIdToPrayerCountMap[userTweet.RetweetedTweet.IdStr].mInitial -= Program.prayersPerRetweet;
            }
            else
            {
                int currentPrayerCount = GetPrayerCount(userTweet.RetweetedTweet);
                tweetIdToPrayerCountMap[userTweet.RetweetedTweet.IdStr] = new PrayerCount()
                {
                    mInitial = currentPrayerCount - Program.prayersPerRetweet,
                    mCurrent = currentPrayerCount,
                };
            }
        }
Ejemplo n.º 13
0
        public static void TweetChain(string longText, Tweetinvi.Models.ITweet previousTweet)
        {
            Console.WriteLine("Publishing Tweet Chain");
            Console.WriteLine("Text: " + longText);

            var tweetTexts = SplitLinesIntoTweets(longText);

            foreach (string text in tweetTexts)
            {
                if (previousTweet == null)
                {
                    previousTweet = Tweet(text);
                }
                else
                {
                    previousTweet = TweetReplyTo(text, previousTweet);
                }
            }
        }
Ejemplo n.º 14
0
        private Usuarios getUsuario(Tweetinvi.Models.ITweet oTweet)
        {
            Usuarios oUsuario = new Usuarios();

            oUsuario.Id              = oTweet.CreatedBy.Id;
            oUsuario.Name            = oTweet.CreatedBy.Name;
            oUsuario.ScreenName      = oTweet.CreatedBy.ScreenName;
            oUsuario.Description     = oTweet.CreatedBy.Description;
            oUsuario.Location        = oTweet.CreatedBy.Location.ToString();
            oUsuario.FriendsCount    = oTweet.CreatedBy.FriendsCount;
            oUsuario.FollowersCount  = oTweet.CreatedBy.FollowersCount;
            oUsuario.Language        = oTweet.CreatedBy.Language.ToString();
            oUsuario.ProfileImageUrl = oTweet.CreatedBy.ProfileImageUrl;
            oUsuario.StatusesCount   = oTweet.CreatedBy.StatusesCount;
            oUsuario.Verified        = oTweet.CreatedBy.Verified;
            oUsuario.Url             = oTweet.CreatedBy.Url;
            oUsuario.CreatedAt       = oTweet.CreatedBy.CreatedAt;

            return(oUsuario);
        }
Ejemplo n.º 15
0
        private Texto getTexto(Tweetinvi.Models.ITweet oTweet)
        {
            Texto oTexto = new Texto();

            oTexto.Id          = oTweet.Id;
            oTexto.CreatedById = oTweet.CreatedBy.Id;
            oTexto.FullText    = oTweet.FullText;

            oTexto.Hashtags = new string[oTweet.Hashtags.Count];
            int hash_count = 0;

            foreach (Tweetinvi.Logic.TwitterEntities.HashtagEntity hashtag in oTweet.Hashtags)
            {
                oTexto.Hashtags[hash_count] = hashtag.Text;
                hash_count++;
            }
            oTexto.Language             = oTweet.Language.ToString();
            oTexto.PublishedTweetLength = oTweet.PublishedTweetLength;

            return(oTexto);
        }
Ejemplo n.º 16
0
        static void TweetAppraisal(Bitmap image, string text)
        {
            using (MemoryStream memoryStream = new MemoryStream())
            {
                image.SaveAsPng(memoryStream);
                byte[] bytes = memoryStream.ToArray();

                Console.WriteLine("Uploading image to twitter");
                Tweetinvi.Models.IMedia media = Tweetinvi.Upload.UploadBinary(new Tweetinvi.Parameters.UploadParameters {
                    Binary = bytes
                });

                Console.WriteLine("Publishing tweet");

                Tweetinvi.Models.ITweet tweet = Tweetinvi.Tweet.PublishTweet(text, new Tweetinvi.Parameters.PublishTweetOptionalParameters
                {
                    Medias = new List <Tweetinvi.Models.IMedia> {
                        media
                    }
                });
                Console.WriteLine("Tweet published to: " + tweet.Url);
            }
        }
Ejemplo n.º 17
0
        public static Tweetinvi.Models.ITweet TweetReplyTo(string text, Tweetinvi.Models.ITweet tweet)
        {
            string screenName    = tweet.CreatedBy.ScreenName;
            long   parentTweetID = tweet.Id;

            Console.WriteLine("Publishing tweet in reply to : " + screenName + " " + parentTweetID);
            Console.WriteLine("Text: " + text);

            string textToPublish = string.Format("@{0} {1}", screenName, text);

            Tweetinvi.Models.ITweet newTweet = Tweetinvi.Tweet.PublishTweetInReplyTo(textToPublish, parentTweetID);

            if (newTweet != null)
            {
                Console.WriteLine("Published new tweet: " + newTweet.Id);
            }
            else
            {
                Console.WriteLine("Failed to publish tweet");
            }

            return(newTweet);
        }
Ejemplo n.º 18
0
 private void Print(Tweetinvi.Models.ITweet t)
 {
     Console.WriteLine(t.CreatedAt.ToString("yyyy-MM-dd hh:mm") + "\t: " + t.Text);
 }
Ejemplo n.º 19
0
 public async Task SendTweet(Tweetinvi.Models.ITweet tweet)
 {
     await Clients.All.SendAsync("ReceiveTweet", tweet);
 }
Ejemplo n.º 20
0
 private static string GetSafeDisplayText(this Tweetinvi.Models.ITweet tweet)
 {
     return(tweet.Text.Substring(tweet.SafeDisplayTextRange[0]));
 }
Ejemplo n.º 21
0
 private static int GetPrayerCount(Tweetinvi.Models.ITweet tweet)
 {
     return(tweet.FavoriteCount * Program.prayersPerFavorite + tweet.RetweetCount * Program.prayersPerRetweet);
 }
Ejemplo n.º 22
0
Archivo: Form1.cs Proyecto: eimink/TVNK
 private void tweetList_SelectedIndexChanged(object sender, EventArgs e)
 {
     selectedTweet = tweetDict[tweetList.SelectedIndex];
 }
Ejemplo n.º 23
0
        private async Task Publish()
        {
            try
            {
                Console.WriteLine("Publishing...");
                var mainTweet = await _composeTweetService.ComposeTotalVolumeTweet();

                if (!string.IsNullOrEmpty(mainTweet))
                {
                    Console.WriteLine(mainTweet);
                    var childrenTweets = await _composeTweetService.ComposeVolumePerCoinTweets();

                    childrenTweets.ForEach(ct => Console.WriteLine(ct));

                    var completedOrdersTweet = await _composeTweetService.ComposeCompletedOrderTweet();

                    Console.WriteLine(completedOrdersTweet);

                    var openOrdersTweets = await _composeTweetService.ComposeOrdersAndActiveMarkets();

                    openOrdersTweets.ForEach(ct => Console.WriteLine(ct));

                    var detailsTweet = _composeTweetService.ComposeMoreDetailsTweet();

                    Console.WriteLine(detailsTweet);

                    var parentTweet = Tweet.PublishTweet(mainTweet);

                    Tweetinvi.Models.ITweet prevTweet = parentTweet;
                    Tweetinvi.Models.ITweet currTweet;
                    foreach (var childTweet in childrenTweets)
                    {
                        currTweet = Tweet.PublishTweetInReplyTo(childTweet, prevTweet);
                        prevTweet = currTweet;
                    }
                    ;

                    var completedOrdersPostedTweet = Tweet.PublishTweetInReplyTo(completedOrdersTweet, prevTweet);

                    prevTweet = completedOrdersPostedTweet;
                    foreach (var openOrderTweet in openOrdersTweets)
                    {
                        currTweet = Tweet.PublishTweetInReplyTo(openOrderTweet, prevTweet);
                        prevTweet = currTweet;
                    }
                    ;


                    Tweet.PublishTweetInReplyTo(detailsTweet, prevTweet);

                    var channelId = Convert.ToUInt64(_discordCredentials.Value.ChannelId);

                    var discordChannel = _discordSocketClient.GetChannel(channelId) as IMessageChannel;
                    await discordChannel.SendMessageAsync(parentTweet.Url);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);
            }
        }