void Session_PostFilterProcessTimelineStatus(object sender, TimelineStatusEventArgs e)
        {
            // Remove Redundant Suffixes
            if (CurrentSession.Config.EnableRemoveRedundantSuffix)
            {
                if (e.Status.User == null)
                {
                    return;
                }

                if (!_lastStatusFromFriends.ContainsKey(e.Status.User.Id))
                {
                    _lastStatusFromFriends[e.Status.User.Id] = new LinkedList <String>();
                }
                LinkedList <String> lastStatusTextsByUId = _lastStatusFromFriends[e.Status.User.Id];
                String suffix = DetectRedundantSuffix(e.Text, lastStatusTextsByUId);
                lastStatusTextsByUId.AddLast(e.Text);
                if (lastStatusTextsByUId.Count > 5)
                {
                    lastStatusTextsByUId.RemoveFirst();
                }
                if (!String.IsNullOrEmpty(suffix))
                {
                    Debug.WriteLine("Remove Redundant suffix: " + suffix);
                    e.Text = e.Text.Substring(0, e.Text.Length - suffix.Length);
                }
            }
        }
Beispiel #2
0
 private void Session_PostFilterProcessTimelineStatus(Object sender, TimelineStatusEventArgs e)
 {
     if (_regex != null)
     {
         e.Text = _regex.Replace(e.Text, "");
     }
 }
        void Session_PostFilterProcessTimelineStatus(object sender, TimelineStatusEventArgs e)
        {
            // Remove Redundant Suffixes
            if (CurrentSession.Config.EnableRemoveRedundantSuffix)
            {
                if (e.Status.User == null) return;

                if (!_lastStatusFromFriends.ContainsKey(e.Status.User.Id))
                {
                    _lastStatusFromFriends[e.Status.User.Id] = new LinkedList<String>();
                }
                LinkedList<String> lastStatusTextsByUId = _lastStatusFromFriends[e.Status.User.Id];
                String suffix = DetectRedundantSuffix(e.Text, lastStatusTextsByUId);
                lastStatusTextsByUId.AddLast(e.Text);
                if (lastStatusTextsByUId.Count > 5)
                {
                    lastStatusTextsByUId.RemoveFirst();
                }
                if (!String.IsNullOrEmpty(suffix))
                {
                    Debug.WriteLine("Remove Redundant suffix: " + suffix);
                    e.Text = e.Text.Substring(0, e.Text.Length - suffix.Length);
                }
            }
        }
 void Session_PostSendMessageTimelineStatus(object sender, TimelineStatusEventArgs e)
 {
     // ウェイト
     if (CurrentSession.Config.ClientMessageWait > 0)
     {
         Thread.Sleep(CurrentSession.Config.ClientMessageWait);
     }
 }
 void Session_PreSendMessageTimelineStatus(object sender, TimelineStatusEventArgs e)
 {
     // TypableMap
     if (CurrentSession.Config.EnableTypableMap)
     {
         String typableMapId = _typableMapCommands.TypableMap.Add(e.Status);
         // TypableMapKeyColorNumber = -1 の場合には色がつかなくなる
         if (CurrentSession.Config.TypableMapKeyColorNumber < 0)
             e.Text = String.Format("{0} ({1})", e.Text, typableMapId);
         else
             e.Text = String.Format("{0} \x0003{1}({2})", e.Text, CurrentSession.Config.TypableMapKeyColorNumber, typableMapId);
     }
 }
Beispiel #6
0
        //void Session_PreSendUpdateStatus(object sender, StatusUpdateEventArgs e)
        //{
        //    e.Text = Utility.UrlToTinyUrlInMessage(e.Text);
        //}

        void Session_PreFilterProcessTimelineStatus(object sender, TimelineStatusEventArgs e)
        {
            // t.co (Twitter Url Shortener)
            List <Entities> entities_list = new List <Entities>();
            Status          rts           = e.Status.RetweetedStatus;

            if (rts != null && rts.ExtendedStatus != null && rts.ExtendedStatus.Entities != null)
            {
                entities_list.Add(rts.ExtendedStatus.Entities);
            }
            else if (e.Status.ExtendedStatus != null && e.Status.ExtendedStatus.Entities != null)
            {
                entities_list.Add(e.Status.ExtendedStatus.Entities);
            }
            if (e.Status.Entities != null)
            {
                entities_list.Add(e.Status.Entities);
            }
            foreach (var entities in entities_list)
            {
                if (entities.Urls != null && entities.Urls.Length > 0)
                {
                    foreach (var urlEntity in entities.Urls)
                    {
                        if (!String.IsNullOrEmpty(urlEntity.ExpandedUrl))
                        {
                            e.Text = Regex.Replace(e.Text, Regex.Escape(urlEntity.Url), urlEntity.ExpandedUrl);
                        }
                    }
                }
                if (entities.Media != null && entities.Media.Length > 0)
                {
                    foreach (var urlEntity in entities.Media)
                    {
                        if (!String.IsNullOrEmpty(urlEntity.ExpandedUrl))
                        {
                            String expandedUrl = Regex.Replace(urlEntity.ExpandedUrl, "^http:", "https:");
                            e.Text = Regex.Replace(e.Text, Regex.Escape(urlEntity.Url), expandedUrl);
                        }
                    }
                }
            }

            // TinyURL
            e.Text = (CurrentSession.Config.ResolveTinyUrl) ? Utility.ResolveShortUrlInMessage(Utility.ResolveTinyUrlInMessage(e.Text))
                                                            : e.Text;
        }
 void Session_PreSendMessageTimelineStatus(object sender, TimelineStatusEventArgs e)
 {
     // TypableMap
     if (CurrentSession.Config.EnableTypableMap)
     {
         String typableMapId = _typableMapCommands.TypableMap.Add(e.Status);
         // TypableMapKeyColorNumber = -1 の場合には色がつかなくなる
         if (CurrentSession.Config.TypableMapKeyColorNumber < 0)
         {
             e.Text = String.Format("{0} ({1})", e.Text, typableMapId);
         }
         else
         {
             e.Text = String.Format("{0} \x0003{1}({2})", e.Text, CurrentSession.Config.TypableMapKeyColorNumber, typableMapId);
         }
     }
 }
        //void Session_PreSendUpdateStatus(object sender, StatusUpdateEventArgs e)
        //{
        //    e.Text = Utility.UrlToTinyUrlInMessage(e.Text);
        //}
        void Session_PreFilterProcessTimelineStatus(object sender, TimelineStatusEventArgs e)
        {
            // t.co (Twitter Url Shortener)
            if (e.Status.Entities != null && e.Status.Entities.Urls != null && e.Status.Entities.Urls.Length > 0)
            {
                foreach (var urlEntity in e.Status.Entities.Urls)
                {
                    if (!String.IsNullOrEmpty(urlEntity.ExpandedUrl))
                    {
                        e.Text = Regex.Replace(e.Text, Regex.Escape(urlEntity.Url), urlEntity.ExpandedUrl);
                    }
                }
            }

            // TinyURL
            e.Text = (CurrentSession.Config.ResolveTinyUrl) ? Utility.ResolveShortUrlInMessage(Utility.ResolveTinyUrlInMessage(e.Text))
                                                            : e.Text;
        }
        //void Session_PreSendUpdateStatus(object sender, StatusUpdateEventArgs e)
        //{
        //    e.Text = Utility.UrlToTinyUrlInMessage(e.Text);
        //}

        void Session_PreFilterProcessTimelineStatus(object sender, TimelineStatusEventArgs e)
        {
            // t.co (Twitter Url Shortener)
            if (e.Status.Entities != null && e.Status.Entities.Urls != null && e.Status.Entities.Urls.Length > 0)
            {
                foreach (var urlEntity in e.Status.Entities.Urls)
                {
                    if (!String.IsNullOrEmpty(urlEntity.ExpandedUrl))
                    {
                        e.Text = Regex.Replace(e.Text, Regex.Escape(urlEntity.Url), urlEntity.ExpandedUrl);
                    }
                }
            }

            // TinyURL
            e.Text = (CurrentSession.Config.ResolveTinyUrl) ? Utility.ResolveShortUrlInMessage(Utility.ResolveTinyUrlInMessage(e.Text))
                                                            : e.Text;
        }
 void Session_PreSendMessageTimelineStatus(object sender, TimelineStatusEventArgs e)
 {
     if (Config.Enable && (_followerIds != null || UpdateFollowerIds()))
     {
         Int32 uid = e.Status.User.Id;
         if (uid == 0)
         {
             // Follower から探してみる
             User user = CurrentSession.FollowingUsers.FirstOrDefault(u => u.ScreenName == e.Status.User.ScreenName);
             if (user != null && user.Id != 0)
             {
                 uid = user.Id;
             }
         }
         if (uid != Session.TwitterUser.Id && _followerIds.BinarySearch(uid) < 0)
         {
             e.Text += " (片思い)";
         }
     }
 }
Beispiel #11
0
 void Session_PreSendMessageTimelineStatus(object sender, TimelineStatusEventArgs e)
 {
     if (Config.Enable && (_followerIds != null || UpdateFollowerIds()))
     {
         Int32 uid = e.Status.User.Id;
         if (uid == 0)
         {
             // Follower から探してみる
             User user = CurrentSession.FollowingUsers.FirstOrDefault(u => u.ScreenName == e.Status.User.ScreenName);
             if (user != null && user.Id != 0)
             {
                 uid = user.Id;
             }
         }
         if (uid != CurrentSession.TwitterUser.Id && _followerIds.BinarySearch(uid) < 0)
         {
             e.Text += " (片思い)";
         }
     }
 }
Beispiel #12
0
        void CurrentSession_PreProcessTimelineStatus(object sender, TimelineStatusEventArgs e)
        {
            lock (_dataContext)
            {
                var status = new Status
                {
                    Id         = e.Status.Id,
                    CreatedAt  = e.Status.CreatedAt,
                    ScreenName = e.Status.User.ScreenName,
                    Text       = e.Status.Text,
                    UserId     = (e.Status.User.Id == 0) ? null : (Int32?)e.Status.User.Id
                };

                if (!_dataContext.Status.Contains(status))
                {
                    using (var ctx = new TwitterIrcGatewayDataContext())
                    {
                        try
                        {
                            ctx.Status.InsertOnSubmit(status);
                            ctx.SubmitChanges();
                        }
                        catch (DuplicateKeyException dupE)
                        {
                        }
                        catch (SqlException sqlE)
                        {
                            // キー制約
                            if (sqlE.Number == 2627)
                            {
                                return;
                            }

                            throw;
                        }
                    }
                }
            }
        }
 void Session_PostSendMessageTimelineStatus(object sender, TimelineStatusEventArgs e)
 {
     // ウェイト
     if (CurrentSession.Config.ClientMessageWait > 0)
         Thread.Sleep(CurrentSession.Config.ClientMessageWait);
 }