public virtual void UpdateListener(object sender, StreamUpdateEventArgs e) { var status = e.Status; _Contents.AddFirst(Toot.fromMastonetStatus(status)); Changed("Contents"); }
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); }
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(), }); }
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); }
public void OnStreamUpdate(object sender, StreamUpdateEventArgs args) { stream.Write(args.Data, 0, args.Data.Length); if (!IsPlaying) { StartPlay(); } }
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); } }
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); } }
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); }
/// <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; } }
public void OnStreamUpdate(object sender, StreamUpdateEventArgs args) { // Do nothing }
private void HomeStream_OnUpdate(object sender, StreamUpdateEventArgs e) { Home.Insert(0, e.Status); }
private void Streaming_OnUpdate(object sender, StreamUpdateEventArgs e) => Add(e.Status);
// 処理分割 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); } }