private static void 周期更新youtube频道状态() { int a = 0; InfoLog.InfoPrintf("本地房间状态缓存更新开始", InfoLog.InfoClass.Debug); foreach (var roomtask in RoomList) { if (MMPU.连接404使能) { RoomInit.RoomInfo A = GetRoomInfo(roomtask.房间号); if (A != null) { for (int i = 0; i < RoomList.Count(); i++) { if (RoomList[i].房间号 == A.房间号) { RoomList[i].平台 = A.平台; RoomList[i].标题 = A.标题; RoomList[i].UID = A.UID; RoomList[i].直播开始时间 = A.直播开始时间; RoomList[i].直播状态 = A.直播状态; RoomList[i].youtubeVideoId = A.youtubeVideoId; if (A.直播状态) { a++; } break; } } } } } InfoLog.InfoPrintf("本地房间状态更新结束", InfoLog.InfoClass.Debug); }
public static RoomInit.RoomInfo GetRoomInfo(string originalRoomId) { var roomWebPageUrl = "https://api.live.bilibili.com/room/v1/Room/get_info?id=" + originalRoomId; var wc = new WebClient(); wc.Headers.Add("Accept: */*"); wc.Headers.Add("User-Agent: " + MMPU.UA.Ver.UA()); wc.Headers.Add("Accept-Language: zh-CN,zh;q=0.8,en;q=0.6,ja;q=0.4"); if (!string.IsNullOrEmpty(MMPU.Cookie)) { wc.Headers.Add("Cookie", MMPU.Cookie); } //发送HTTP请求 byte[] roomHtml; try { roomHtml = wc.DownloadData(roomWebPageUrl); } catch (Exception e) { InfoLog.InfoPrintf(originalRoomId + "获取房间信息失败:" + e.Message, InfoLog.InfoClass.Debug); return(null); } //解析返回结果 try { var roomJson = Encoding.UTF8.GetString(roomHtml); var result = JObject.Parse(roomJson); var uid = result["data"]["uid"].ToString(); if (result["data"]["room_id"].ToString() != originalRoomId) { for (int i = 0; i < RoomList.Count(); i++) { if (RoomList[i].房间号 == originalRoomId) { RoomList[i].房间号 = result["data"]["room_id"].ToString(); break; } } } var roominfo = new RoomInit.RoomInfo { 房间号 = result["data"]["room_id"].ToString(), 标题 = result["data"]["title"].ToString().Replace(" ", "").Replace("/", "").Replace("\\", "").Replace("\"", "").Replace(":", "").Replace("*", "").Replace("?", "").Replace("<", "").Replace(">", "").Replace("|", ""), 直播状态 = result["data"]["live_status"].ToString() == "1" ? true : false, UID = result["data"]["uid"].ToString(), 直播开始时间 = result["data"]["live_time"].ToString(), 平台 = "bilibili" }; InfoLog.InfoPrintf("获取到房间信息:" + roominfo.UID + " " + (roominfo.直播状态 ? "已开播" : "未开播") + " " + (roominfo.直播状态 ? "开播时间:" + roominfo.直播开始时间 : ""), InfoLog.InfoClass.Debug); return(roominfo); } catch (Exception e) { InfoLog.InfoPrintf(originalRoomId + "房间信息解析失败:" + e.Message, InfoLog.InfoClass.Debug); return(null); } }
private static void 周期更新B站房间状态() { int a = 0; InfoLog.InfoPrintf("本地房间状态缓存更新开始", InfoLog.InfoClass.Debug); foreach (var roomtask in RoomList) { RoomInit.RoomInfo A = GetRoomInfo(roomtask.房间号); if (A != null) { for (int i = 0; i < RoomList.Count(); i++) { if (RoomList[i].房间号 == A.房间号) { RoomList[i].平台 = A.平台; RoomList[i].标题 = A.标题; RoomList[i].UID = A.UID; RoomList[i].直播开始时间 = A.直播开始时间; RoomList[i].直播状态 = A.直播状态; if (A.直播状态) { a++; } break; } } } Thread.Sleep(150); } InfoLog.InfoPrintf("本地房间状态更新结束", InfoLog.InfoClass.Debug); }
public static void 使用B站API更新房间状态() { foreach (var roomtask in RoomList) { if (!roomtask.称.Contains("-NV")) { RoomInit.RoomInfo A = GetRoomInfo(roomtask.房间号); if (A != null) { for (int i = 0; i < RoomList.Count(); i++) { if (RoomList[i].房间号 == A.房间号) { RoomList[i].平台 = A.平台; RoomList[i].标题 = A.标题; RoomList[i].UID = A.UID; RoomList[i].直播开始时间 = A.直播开始时间; RoomList[i].直播状态 = A.直播状态; break; } } } } Thread.Sleep(2000); } }
public static RoomInit.RoomInfo GetRoomInfo(string originalRoomId) { string roomHtml; try { roomHtml = MMPU.使用WC获取网络内容("https://api.live.bilibili.com/room/v1/Room/get_info?id=" + originalRoomId); } catch (Exception e) { InfoLog.InfoPrintf(originalRoomId + "获取房间信息失败:" + e.Message, InfoLog.InfoClass.Debug); return(null); } //解析返回结果 try { JObject result = JObject.Parse(roomHtml); string uid = result["data"]["uid"].ToString(); if (result["data"]["room_id"].ToString() != originalRoomId) { for (int i = 0; i < RoomList.Count(); i++) { if (RoomList[i].房间号 == originalRoomId) { RoomList[i].房间号 = result["data"]["room_id"].ToString(); break; } } } var roominfo = new RoomInit.RoomInfo { 房间号 = result["data"]["room_id"].ToString(), 标题 = result["data"]["title"].ToString().Replace(" ", "").Replace("/", "").Replace("\\", "").Replace("\"", "").Replace(":", "").Replace("*", "").Replace("?", "").Replace("<", "").Replace(">", "").Replace("|", ""), 直播状态 = result["data"]["live_status"].ToString() == "1" ? true : false, UID = result["data"]["uid"].ToString(), 直播开始时间 = result["data"]["live_time"].ToString(), 平台 = "bilibili" }; InfoLog.InfoPrintf("获取到房间信息:" + roominfo.UID + " " + (roominfo.直播状态 ? "已开播" : "未开播") + " " + (roominfo.直播状态 ? "开播时间:" + roominfo.直播开始时间 : ""), InfoLog.InfoClass.Debug); DataCache.BilibiliApiCount++; return(roominfo); } catch (Exception e) { InfoLog.InfoPrintf(originalRoomId + "房间信息解析失败:" + e.Message, InfoLog.InfoClass.Debug); return(null); } }
public static RoomInit.RoomInfo GetRoomInfo(string originalRoomId) { //发送HTTP请求 string roomHtml; try { roomHtml = MMPU.返回网页内容_GET("https://www.youtube.com/channel/" + originalRoomId + "/live"); } catch (Exception e) { InfoLog.InfoPrintf(originalRoomId + "获取房间信息失败:" + e.Message, InfoLog.InfoClass.Debug); return(null); } //解析返回结果 try { string tltie = ""; try { tltie = roomHtml.Replace("\\\"title\\\":\\\"", "⒆").Split('⒆')[1].Replace("\\\",\\\"", "⒆").Split('⒆')[0]; } catch (Exception) { } RoomInit.RoomInfo roominfo = new RoomInit.RoomInfo() { 房间号 = originalRoomId, 标题 = tltie, 直播状态 = false, UID = originalRoomId, 直播开始时间 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), 平台 = "youtube", youtubeVideoId = roomHtml.Replace(":{\\\"videoId\\\":\\\"", "⒆").Split('⒆')[1].Replace("\\\",", "⒆").Split('⒆')[0] }; try { // Console.WriteLine(roomHtml); string BC = roomHtml.Replace("(window.ytcsi) {window.ytcsi.tick(\"cfg\", null, '')", "⒆").Split('⒆')[1].Replace("</div>", "⒆").Split('⒆')[0]; if (BC.Contains("\\\"isLive\\\":true")) { roominfo.直播状态 = true; } else { roominfo.直播状态 = false; } } catch (Exception) { roominfo.直播状态 = false; } InfoLog.InfoPrintf("获取到房间信息:" + roominfo.UID + " " + (roominfo.直播状态 ? "已开播" : "未开播") + " " + (roominfo.直播状态 ? "开播时间:" + roominfo.直播开始时间 : ""), InfoLog.InfoClass.Debug); return(roominfo); } catch (Exception e) { InfoLog.InfoPrintf(originalRoomId + "房间信息解析失败:" + e.Message, InfoLog.InfoClass.Debug); return(null); } }