プログラミングとかブログ

Unity/C#/SRPGStudio/RPGツクールMVの情報とかその他気になったことを調べて書きます。

【C#】自分がリツイートしたツイートをリンク付きでHTML出力するアプリとコード

RTしたツイートだけ確認したいなぁと思ったら検索クエリにないので自作。
DLはこちら

使い方

1.ツイッターの全ツイート履歴をダウンロードしてください
Twitter、「全ツイート履歴」をダウンロードできる機能、日本でも提供開始 -INTERNET Watch Watch
(フォルダ内のtweets.csvを開けば大体確認できるけどダルい)

2.ダウンロードした中身を適当なフォルダにつっこんで、そのフォルダをアプリにD&Dしてください

3.RetweetData.htmlが吐き出されるので開くとリンク一覧が出ます。

f:id:shirakamisauto:20170828154700j:plain

一部の文が途切れてるのは元データの仕様です。

コード

using System;
using System.IO;
using System.Collections.Generic;
using Microsoft.VisualBasic.FileIO;

namespace TweetDataExtractor
{
    class Program
    {
        static void Main(string[] args)
        {
            var path = args[0] + @"\tweets.csv";

            using (var parser = new TextFieldParser(path))
            {
                parser.TextFieldType = FieldType.Delimited;
                parser.SetDelimiters(",");

                var urlList = new List<Tuple<string, string>>();

                //一行目読み飛ばし
                parser.ReadFields();

                while (!parser.EndOfData)
                {
                    var row = parser.ReadFields();
                    //リツイートならば
                    if (row[6] != string.Empty)
                    {
                        //本文の取得
                        var nameAndText = row[5].Replace("RT @", "");

                        //ツイートURLの生成
                        string userName = nameAndText.Split(':')[0];
                        var twId = row[0];
                        string twUrl = "https://twitter.com/" + userName + "/status/" + twId;

                        urlList.Add(Tuple.Create(nameAndText, twUrl));
                    }
                }

                //HTMLを作って吐く
                using (var sw = new StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\RetweetData.html"))
                {
                    sw.WriteLine("<html lang=\"ja\">");
                    sw.WriteLine("<body>");

                    foreach (var data in urlList)
                        sw.WriteLine("<a href = \"" + data.Item2 + "\" >" + data.Item1 + "</a ></br>");

                    sw.WriteLine("</body>");
                    sw.WriteLine("</html>");
                }
            }
        }
    }
}