2013年6月17日月曜日

自作Twitterクライアント作成の記録(4)@ツイートとダイレクトメールの受信

先に言っておきますがあくまで受信です送信できるわけではありません。
送信とかをできるようにしようとすると@ツイートの場合、どのツイートに対して返信するのかが必要になってくるからそのための機能をつけないといけないし、ダイレクトメールについては送信テストをする相手がいないという(ぼっち乙)。
とまあ、そんなことも置いておいて、さっそくソースを書いていきますが、今回から変更点だけに絞ろうと思います、その方が変わったところがわかりやすいと思いますし。
※コメント等は自分の解釈で書いてたりするのでわかりにくかったりするかもです、もし間違ってたりしたらコメントしてくれるとうれしいです。
また、いらなくねこれっていうのも教えてくれるとありがたいです。


まずはForm1の変更点から

//更新ボタン
        private void button2_Click(object sender, EventArgs e)
        {
            twittertoolStripStatusLabel1.Text = "取得中・・・";
            //TLの取得
            if ("TimeLine" == ChangeTextMode)
            {                
                try
                {
                    
                    //TLの取得準備
                    var tweets =
                        from tweet in twitterCtx.Status
                        where tweet.Type == StatusType.Home &&
                        tweet.Count == TCount
                        select tweet;
                    TweetRichTextBox.Clear();
                    //TLの取得
                    foreach (var tweet in tweets)
                    {
                        TweetRichTextBox.Text += (tweet.User.Name + "\r\n" +
                            tweet.Text + "\r\n\r\n");
                    }
                    twittertoolStripStatusLabel1.Text = "取得完了!";
                }
                catch (Exception ex) //例外設定
                {
                    MessageBox.Show(ex.Message, "じみったー", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    twittertoolStripStatusLabel1.Text = "取得エラー";
                }
            }
            else if ("Atweet" == ChangeTextMode)    //@ツイートの取得
            {
                try
                {
                    
                    var tweets =
                        from tweet in twitterCtx.Status
                        where tweet.Type == StatusType.Mentions &&
                        tweet.Count == TCount
                        select tweet;
                    TweetRichTextBox.Clear();
                    foreach (var tweet in tweets)
                    {
                        TweetRichTextBox.Text += (tweet.User.Name + "\r\n" +
                            tweet.Text + "\r\n\r\n");
                    }
                    twittertoolStripStatusLabel1.Text = "取得完了!";
                }
                catch (Exception ex) //例外設定
                {
                    MessageBox.Show(ex.Message, "じみったー", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    twittertoolStripStatusLabel1.Text = "取得エラー";
                }
            }
            else if ("DM" == ChangeTextMode)    //DMの取得
            {
                try
                {

                    var tweets =
                        (from tweet in twitterCtx.DirectMessage
                         where tweet.Type == DirectMessageType.SentBy && tweet.Count == TCount
                         select new
                         {
                             tweet.SenderScreenName,
                             tweet.ID,
                             tweet.Text
                         })
                        .ToList();
                    TweetRichTextBox.Clear();
                    foreach (var tweet in tweets)
                    {
                        TweetRichTextBox.Text += (tweet.SenderScreenName + "\r\n" +
                            tweet.ID + "\r\n" + tweet.Text + "\r\n\r\n");
                    }
                    twittertoolStripStatusLabel1.Text = "取得完了!";
                }
                catch (Exception ex) //例外設定
                {
                    MessageBox.Show(ex.Message, "じみったー", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    twittertoolStripStatusLabel1.Text = "取得エラー";
                }
            }
            else
            {
                twittertoolStripStatusLabel1.Text = "取得エラー";
            }
        }
更新ボタンが押された時の挙動を変更、ついでに一度の更新で取得するツイート数を変えれるようにしてみた。ただDMだけはそのまま。

        //タイムラインが押された
        private void TimeLineToolStripMenuItem_Click(object sender, EventArgs e)
        {
            AtweetToolStripMenuItem.Checked = false;
            DMToolStripMenuItem.Checked = false;
            ChangeTextMode = "TimeLine";
            label1.Text = "タイムライン";
        }
        //@ツイートが押された
        private void AtweetToolStripMenuItem_Click(object sender, EventArgs e)
        {
            TimeLineToolStripMenuItem.Checked = false;
            DMToolStripMenuItem.Checked = false;
            ChangeTextMode = "Atweet";
            label1.Text = "@ツイート";
        }
        //DMが押された
        private void DMToolStripMenuItem_Click(object sender, EventArgs e)
        {
            TimeLineToolStripMenuItem.Checked = false;
            AtweetToolStripMenuItem.Checked = false;
            ChangeTextMode = "DM";
            label1.Text = "DM";
        }

メニューバーの表示にてタイムライン、@ツイート、DMのメニューを配置、そしてその処理部分。

設定フォームの追加点

        //設定項目を反映
        public void SetOption()
        {
            if (ResetOAthCheckBox.Checked)
            {
                mainForm.pinReset = "Tokenreset";
                MessageBox.Show("認証情報をリセットしました再起動します。","じみったー",MessageBoxButtons.OK,MessageBoxIcon.Information);
                Application.Restart();
            }
            if (UrlCheckBox.Checked)
            {
                mainForm.RTBox.DetectUrls = false;
            }
            else
            {
                mainForm.RTBox.DetectUrls = true;
            }
            mainForm.Tcount = (int)TCountNumericUpDown1.Value;

        }

設定項目に「一度の更新で取得するツイート数を追加」
最後に画像を何枚か


こんな感じになってますしょっぼ
うーん、@ツイートをできるようにしたいけどテキストボックスじゃこれが限界の気がするな・・・
まだまだ課題はてんこもりですな。
例のごとくソースをここに置いておくので、めんどくさいという方、もっと詳細に見たいという方はどうぞ。

0 件のコメント:

コメントを投稿