public TwicasAutoReconnector(string broadcasterId, CookieContainer cc, IDataServer server, ILogger logger, WebsocketMessageProvider p1, MetadataProvider p2) { _broadcasterId = broadcasterId; _cc = cc; _server = server; _logger = logger; _connectionManager = new ConnectionManager(logger); _p1 = p1; _p2 = p2; p2.LiveIdReceived += P2_LiveIdReceived; }
public override async Task ConnectAsync(string input, IBrowserProfile browserProfile) { BeforeConnect(); _first.Reset(); _cc = GetCookieContainer(browserProfile, "twitcasting.tv"); _broadcasterId = Tools.ExtractBroadcasterId(input); _lastCommentId = 0; var(context, contextRaw) = await API.GetLiveContext(_server, _broadcasterId, _cc); if (!string.IsNullOrEmpty(context.AudienceId)) { SendSystemInfo($"ログイン済みユーザID:{context.AudienceId}", InfoType.Notice); IsLoggedIn = true; } else { SendSystemInfo("未ログイン", InfoType.Notice); IsLoggedIn = false; } //配信歴がある場合は初期コメントを取得する if (context.MovieId > 0) { var initialComments = await GetInitialComments(context.MovieId); foreach (var initialComment in initialComments) { RaiseMessageReceived(initialComment); } } var p1 = new WebsocketMessageProvider(new Websocket(), _server); p1.MessageReceived += P1_MessageReceived; var p2 = new MetadataProvider(_logger, _server, _broadcasterId, _messenger); p2.ItemReceived += P2_ItemReceived; p2.LiveIdReceived += P2_LiveIdReceived; p2.MetadataReceived += P2_MetadataReceived; _autoReconnector = new TwicasAutoReconnector(_broadcasterId, _cc, _server, _logger, p1, p2); try { await _autoReconnector.AutoReconnectAsync(); } finally { _autoReconnector = null; AfterDisconnected(); } }