コード例 #1
0
ファイル: Listener.cs プロジェクト: Lenqth/MasterView
        public virtual void UpdateListener(object sender, StreamUpdateEventArgs e)
        {
            var status = e.Status;

            _Contents.AddFirst(Toot.fromMastonetStatus(status));
            Changed("Contents");
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: penta2himajin/cliMa
        private TimelineStreaming StreamTimeline(MastodonClient client, TimelineType type)
        {
            TimelineStreaming streaming = null;

            switch (type)
            {
            case TimelineType.Home:
                streaming = client.GetUserStreaming();
                break;

            default:
                streaming = client.GetPublicStreaming();
                break;
            }
            Console.WriteLine("\n\nStart fetching " + ((int)type == 0 ? "Local" : (int)type == 1 ? "Home" : "Federation") + " Timeline.");
            Console.WriteLine("================================================\n\n");
            streaming.OnUpdate += (sender, e) =>
            {
                StreamUpdateEventArgs s = type == TimelineType.Local ? !Regex.IsMatch(e.Status.Account.AccountName, ".+@.*") ? e : null : e;
                if (s != null)
                {
                    Console.WriteLine(s.Status.Account.DisplayName);
                    Console.WriteLine("@" + s.Status.Account.AccountName);
                    if (s.Status.SpoilerText != "")
                    {
                        Console.WriteLine("Note: " + s.Status.SpoilerText);
                    }
                    Console.WriteLine(HTML_Perser(s.Status.Content));
                    Console.WriteLine();
                }
            };
            return(streaming);
        }
コード例 #3
0
 private void Streaming_OnUpdate(object sender, StreamUpdateEventArgs e)
 {
     this.timer.Change(1000 * StreamingTimeOut, Timeout.Infinite);
     this.Updated?.Invoke(this, new ObjectFunctionUpdateEventArgs <MastodonStatus>
     {
         Object = e.Status.ToMastodonStatus(),
     });
 }
コード例 #4
0
ファイル: Logic.cs プロジェクト: mstdn-workers/Assistandon
        void RoadCheck(string content, StreamUpdateEventArgs e)
        {
            var roadReg = new Regex(RegexStringSet.RoadPattern, RegexOptions.IgnoreCase | RegexOptions.Singleline);
            var m       = roadReg.Match(content);

            this.client.PostStatus($"れてぃあたん、{m.Groups[2].Value}の道路", Visibility.Public);
            roadCheckUsers[m.Groups[2].Value].Add(e.Status.Account.UserName);
        }
コード例 #5
0
ファイル: AudioPlugin.cs プロジェクト: goranzr85/Synechron
 public void OnStreamUpdate(object sender, StreamUpdateEventArgs args)
 {
     stream.Write(args.Data, 0, args.Data.Length);
     if (!IsPlaying)
     {
         StartPlay();
     }
 }
コード例 #6
0
ファイル: Logic.cs プロジェクト: mstdn-workers/Assistandon
        void CalledMe(StreamUpdateEventArgs e)
        {
            var data = this.userHasDataList.GetUserHasData(e.Status.Account.Id);

            if (data.lastCallTime + new TimeSpan(0, 5, 0) < DateTime.Now)
            {
                this.client.PostStatus($"{this.userList.GetUserDataWithUserId(e.Status.Account.Id).NickName} 、呼んだ?", Visibility.Public);
                data.lastCallTime = DateTime.Now;
                this.userHasDataList.SetUserHasData(data);
            }
        }
コード例 #7
0
ファイル: Logic.cs プロジェクト: mstdn-workers/Assistandon
        void UserStreamUpdateBranch(StreamUpdateEventArgs e)
        {
            // htmlタグ除去
            var rejectHtmlTagReg = new Regex("<.*?>");
            var content          = rejectHtmlTagReg.Replace(e.Status.Content, "");

            if (Regex.IsMatch(content, RegexStringSet.EewPattern) && e.Status.Account.Id == long.Parse(ConfigurationManager.AppSettings["eewUserId"]))
            {
                this.EewAnnounce(content);
            }
        }
コード例 #8
0
ファイル: Program.cs プロジェクト: goranzr85/Synechron
        private static void Radio_OnStreamUpdate(object sender, StreamUpdateEventArgs e)
        {
            //if (audioSamples != null)
            //{
            //    var data1 = e.Data;
            //    var floats1 = new float[data1.Length / 4];
            //    Buffer.BlockCopy(data1, 0, floats1, 0, data1.Length);

            //    audioSamples = new AudioSamples(floats1, string.Empty, 44100);
            //}
            //else
            //{
            //    var data = e.Data;
            //    var floats = new float[data.Length / 4];
            //    Buffer.BlockCopy(data, 0, floats, 0, data.Length);



            //    audioSamples = new AudioSamples()
            //}


            var data1   = e.Data;
            var floats1 = new float[data1.Length / 4];

            Buffer.BlockCopy(data1, 0, floats1, 0, data1.Length);

            audioSamples = new AudioSamples(floats1, string.Empty, 44100);

            var hashedFingerprints = FingerprintCommandBuilder.Instance
                                     .BuildFingerprintCommand()
                                     .From(audioSamples)
                                     //.From(pathToAudioFile)
                                     .UsingServices(audioService)
                                     .Hash()
                                     .Result;

            // store hashes in the database for later retrieval
            //modelService.InsertHashDataForTrack(hashedFingerprints, trackReference);
        }
コード例 #9
0
        /// <summary>
        /// We get an event with 1 second of data (PCM 44100hz)
        /// </summary>
        private void IceCastStreamUpdate(object sender, StreamUpdateEventArgs data)
        {
            dtLastEvent = DateTime.Now;

            if (audioSample == null)
            {
                audioSample = new float[44100 * 2 * 15];
                audioOffset = 0;
            }

            int len = data.Data.Length;

            if (audioOffset + len > audioSample.Length)
            {
                len = audioSample.Length - audioOffset;
            }

            Buffer.BlockCopy(data.Data, 0, audioSample, audioOffset * 4, len * 4);
            audioOffset += len;

            if (audioOffset == audioSample.Length)
            {
                // Write wav file to disk
                if (doWriteChunksToWAVFile)
                {
                    string     filename = string.Format("{0}-{1:yyyy-MM-dd}#{1:HHmmss}#.wav", radioName, DateTime.Now);
                    WaveWriter ww       = new WaveWriter(filename, 2, 44100, 16, true);
                    ww.Write(audioSample, audioSample.Length * 4);
                    ww.Close();
                    //ww.Dispose(); // this removes the file
                }

                DetectAudio(audioSample, 44100, 2);
                audioSample = null;
                audioOffset = 0;
            }
        }
コード例 #10
0
 public void OnStreamUpdate(object sender, StreamUpdateEventArgs args)
 {
     // Do nothing
 }
コード例 #11
0
 private void HomeStream_OnUpdate(object sender, StreamUpdateEventArgs e)
 {
     Home.Insert(0, e.Status);
 }
コード例 #12
0
ファイル: TimelineModel.cs プロジェクト: shinmili/muon
 private void Streaming_OnUpdate(object sender, StreamUpdateEventArgs e) => Add(e.Status);
コード例 #13
0
ファイル: Logic.cs プロジェクト: mstdn-workers/Assistandon
        // 処理分割
        void LocalUpdateBranch(StreamUpdateEventArgs e)
        {
            // htmlタグ除去
            var rejectHtmlTagReg = new Regex("<.*?>");
            var content          = rejectHtmlTagReg.Replace(e.Status.Content, "");

            var renchanId = long.Parse(ConfigurationManager.AppSettings["renchanUserId"]);

            if (Regex.IsMatch(content, RegexStringSet.QuakeCheckPattern) && DateTime.Now.CompareTo(this.quakeCheckDateTime + new TimeSpan(0, 15, 0)) == 1)
            {
                this.QuakeCheck();
            }
            else if (Regex.IsMatch(content, RegexStringSet.NullpoPattern))
            {
                this.client.PostStatus("がっ!", Visibility.Public);
            }
            else if (Regex.IsMatch(e.Status.SpoilerText.ToString() + content, @"((ぬ|ヌ|ヌ).*(る|ル|ル).*(ぽ|ポ|ポ))|((ぽ|ポ|ポ).*(る|ル|ル).*(ぬ|ヌ|ヌ))"))
            {
                this.client.PostStatus("がっ!", Visibility.Public);
                this.client.PostStatus($"@{ConfigurationManager.AppSettings["adminName"]} 【ぬるぽっぽい報告】\n{e.Status.SpoilerText.ToString() + content}", Visibility.Direct);
            }
            else if (Regex.IsMatch(content, RegexStringSet.SetNickName))
            {
                this.SetNickName(content, e.Status.Account.UserName);
            }
            else if (WaitingBoard.TryGetValue(e.Status.Account.UserName, out var n))
            {
                this.CallWaitingUser(e.Status.Account.UserName);
            }
            else if (Regex.IsMatch(content, RegexStringSet.WhatTimePattern))
            {
                this.WhatTime();
            }
            else if (Regex.IsMatch(content, RegexStringSet.MatsuyaPattern))
            {
                this.WhereMatsuya(content);
            }
            else if (Regex.IsMatch(content, RegexStringSet.YukiOutPattern))
            {
                this.client.PostStatus("アウトじゃないよ!セーフだよ!", Visibility.Public);
            }
            //else if (Regex.IsMatch(content, RegexStringSet.NewComerPattern) && e.Status.Account.Id == renchanId)
            //this.WellcomeNewComer(content);
            else if (Regex.IsMatch(content, RegexStringSet.MaohBombPattern))
            {
                this.client.PostStatus("ねえ漣ちゃん、まおー城爆破して", Visibility.Public);
            }
            else if (Regex.IsMatch(content, RegexStringSet.WeatherPattern))
            {
                this.WeatherCheck(content);
            }
            else if (Regex.IsMatch(content, RegexStringSet.RoadPattern))
            {
                this.RoadCheck(content, e);
            }
            else if (e.Status.Account.Id == renchanId)
            {
                this.RenchanUrusai();
            }
            else if (Regex.IsMatch(content, RegexStringSet.CallMePattern))
            {
                this.CalledMe(e);
            }
        }