Exemple #1
0
        private bool ApplyAttributesAndExpandMacros()
        {
            bool attributesApplied = _attributes.BindAndApply();
            bool macrosExpanded    = _macroExpander.ExpandAll();

            return(attributesApplied || macrosExpanded);
        }
        private void ReportDetailReport()
        {
            const string Separator = "\t";

            string path = RemoveInvalidPathChars(MacroExpander.ExpandAll(config.FuhaReports.DetailReportFilePath));

            using var writer = new StreamWriter(path, false, reportFileEncoidng);

            writer.WriteLine(string.Join(Separator, new[] {
                "順番",
                "ツイート日時",
                "ツイートID",
                "ユーザー名",
                "@ID",
                "ツイート内容",
            }));

            int rank = 1;

            collectedTweets.ForEach(t =>
            {
                writer.WriteLine(string.Join(Separator, new[]
                {
                    rank.ToString(),
                    t.TweetedAt.ToString("yyyy-MM-dd HH:mm:ss.fff"),
                    t.Id.ToString(),
                    t.UserName,
                    t.FormatedUserScreenName,
                    t.EscapedText,
                }));
                rank++;
            });
        }
        private void ReportTweetReport()
        {
            Tweet?lastBossTweet = GetLastBossTweet();

            string path = RemoveInvalidPathChars(MacroExpander.ExpandAll(config.FuhaReports.TweetReportFilePath));

            using var writer = new StreamWriter(path, false, reportFileEncoidng);

            writer.WriteLine("本日のフハツイランキング");

            if (lastBossTweet == null)
            {
                writer.WriteLine();
                writer.WriteLine("ラスボスのツイートが見つからなかった為、集計できませんでした");
                return;
            }

            bool isFlyingStart = true;
            int  rank          = -1; // -1: フライングツイート, 1以降: ツイート順位

            collectedTweets.ForEach(t =>
            {
                // ラスボスアカウントのツイートになったタイミングから順位付け開始
                // それより前はフライング扱い
                if (t.UserScreenName == config.RankingCollection.RankingBaseId)
                {
                    isFlyingStart = false;
                    rank          = 1;
                    return;
                }

                var tweet = new FuhaTweet(t, lastBossTweet, rank);
                writer.WriteLine($"[{tweet.DifferenceFromLastBossTweetFlag}{tweet.DifferenceFromLastBossTweet:mm\\:ss\\.fff}]{tweet.DisplayRank}: {t.UserName}");
                if (!isFlyingStart)
                {
                    rank++;
                }
            });

            writer.WriteLine();
            writer.Write($"[ ]内はラスボスのフリージオがツイートした時間({lastBossTweet.TweetedAt:HH:mm:ss.fff})からの差");
        }