public static void 轮询检查下载任务() { new Task(() => { while (true) { while (轮询检查下载任务开关) { try { if (!string.IsNullOrEmpty(MMPU.TcpSend(Server.RequestCode.GET_IP, "{}", true, 50, 5000))) { 载任务状态检测(); } else { } } catch (Exception) { } Thread.Sleep(30 * 1000); } Thread.Sleep(500); } }).Start(); }
public static void DokiDoki(int 模式) { new Thread(new ThreadStart(delegate { while (true) { try { MMPU.TcpSend(模式 == 0 ? Server.RequestCode.SET_DokiDoki_DDTV : Server.RequestCode.SET_DokiDoki_DDTVLiveRec, "{}", true, 50); } catch (Exception) { } Thread.Sleep(3600 * 1000); } })).Start(); }
public static void 更新VTBS房间数据() { while (true) { int 完整错误次数 = 0; try { if (完整错误次数 >= 5) { InfoLog.InfoPrintf($"----------【重要】----------\r\n多次尝试获取服务器RoomList缓存失败,切换为纯WSS连接模式,该模式下初始化连接速度较慢,大约20连接一个房间\r\n----------【重要】----------", InfoLog.InfoClass.载必要提示); wss连接初始化准备已完成 = true; return; } string vtbs房间数据 = string.Empty; try { vtbs房间数据 = MMPU.返回网页内容_GET(VTBS.API.VTBS服务器CDN.VTBS_Url + "/v1/short", 5000); } catch (Exception) { InfoLog.InfoPrintf($"通过原始数据源更新VTBS房间数据失败,切换到备用DDTV服务器获取", InfoLog.InfoClass.Debug); vtbs房间数据 = MMPU.TcpSend(Server.RequestCode.GET_VTBSROOMLIST, "{}", true, 1500); } JArray JO = (JArray)JsonConvert.DeserializeObject(vtbs房间数据); //InfoLog.InfoPrintf($"获取VTBS房间数据完成:{JO}", InfoLog.InfoClass.Debug); foreach (var item in JO) { if (int.Parse(item["roomid"].ToString()) != 0) { VtbsRoomList.Add(new VtbsRoom() { mid = int.Parse(item["mid"].ToString()), room = int.Parse(item["roomid"].ToString()), name = item["uname"].ToString() }); } } InfoLog.InfoPrintf($"VTBS数据数据准备完成", InfoLog.InfoClass.Debug); wss连接初始化准备已完成 = true; break; } catch (Exception) { 完整错误次数++; InfoLog.InfoPrintf($"VTBS获取RoomList失败,再次重试,已重试次数{完整错误次数}/5", InfoLog.InfoClass.Debug); } Thread.Sleep(5000); } }
public static void 使用vtbsAPI更新房间状态() { try { JArray JO = (JArray)JsonConvert.DeserializeObject(MMPU.返回网页内容_GET("https://api.vtbs.moe/v1/living", 8000)); foreach (var roomtask in RoomList) { roomtask.直播状态 = false; if (JO.ToString().Contains(roomtask.房间号)) { roomtask.直播状态 = true; } else { roomtask.直播状态 = false; } } InfoLog.InfoPrintf("Vtbs数据加载成功", InfoLog.InfoClass.Debug); } catch (Exception e) { InfoLog.InfoPrintf("Vtbs数据加载失败,使用备用数据源开始获取", InfoLog.InfoClass.Debug); try { JArray JO = (JArray)JsonConvert.DeserializeObject(MMPU.TcpSend(Server.RequestCode.GET_LIVELSIT, "{}", true)); foreach (var roomtask in RoomList) { roomtask.直播状态 = false; if (JO.ToString().Contains(roomtask.房间号)) { roomtask.直播状态 = true; } else { roomtask.直播状态 = false; } } InfoLog.InfoPrintf("备用数据源加载成功", InfoLog.InfoClass.Debug); } catch (Exception) { InfoLog.InfoPrintf("备用缓存数据加载失败,使用原生阿Bapi开始获取开始获取", InfoLog.InfoClass.Debug); 使用B站API更新房间状态(); } } }
public static void 更新VTBS房间数据() { while (true) { try { string vtbs房间数据 = string.Empty; try { vtbs房间数据 = MMPU.返回网页内容_GET(VTBS.API.VTBS服务器CDN.VTBS_Url + "/v1/short", 5000); } catch (Exception) { vtbs房间数据 = MMPU.TcpSend(Server.RequestCode.GET_VTBSROOMLIST, "{}", true); } JArray JO = (JArray)JsonConvert.DeserializeObject(vtbs房间数据); foreach (var item in JO) { if (int.Parse(item["roomid"].ToString()) != 0) { VtbsRoomList.Add(new VtbsRoom() { mid = int.Parse(item["mid"].ToString()), room = int.Parse(item["roomid"].ToString()), name = item["uname"].ToString() }); } } wss连接初始化准备已完成 = true; break; } catch (Exception) { } Thread.Sleep(5000); } }
public void 更新正在直播数据() { string UURL = MMPU.TcpSend(30002, "{}", true); string URL = string.IsNullOrEmpty(UURL)?"https://hiyoko.sonoj.net/dy-st/30s/6c6cb639-1d2f-4151-81c7-fd877700cf98.json": UURL; JArray jo = (JArray)JsonConvert.DeserializeObject(MMPU.返回网页内容(URL)); for (int i = 0; i < jo.Count; i++) { JToken item = jo[i]; try { 直播数据.Add(new 直播信息()); #region 实际开始时间 try { 直播数据[直播数据.Count - 1].实际开始时间 = long.Parse(item["actual_start_time"].ToString()); } catch (Exception) { 直播数据[直播数据.Count - 1].实际开始时间 = 0; } #endregion #region 频道ID try { 直播数据[直播数据.Count - 1].频道ID = item["ch_id"].ToString(); } catch (Exception) { 直播数据[直播数据.Count - 1].频道ID = "0"; } #endregion #region 频道类型 try { 直播数据[直播数据.Count - 1].频道类型 = int.Parse(item["ch_type"].ToString()); } catch (Exception) { 直播数据[直播数据.Count - 1].频道类型 = 0; } #endregion #region 称 try { 直播数据[直播数据.Count - 1].称 = item["name"].ToString(); } catch (Exception) { 直播数据[直播数据.Count - 1].称 = "获取失败"; } #endregion #region 已直播时长_秒 try { 直播数据[直播数据.Count - 1].已直播时长_秒 = int.Parse(item["seconds"].ToString()); } catch (Exception) { 直播数据[直播数据.Count - 1].已直播时长_秒 = 0; } #endregion #region 已直播时长_日本时间 try { 直播数据[直播数据.Count - 1].已直播时长_日本时间 = item["start_time_str"].ToString(); } catch (Exception) { 直播数据[直播数据.Count - 1].已直播时长_日本时间 = "null"; } #endregion #region 主播名称 try { 直播数据[直播数据.Count - 1].主播名称 = item["streamer_name"].ToString(); } catch (Exception) { 直播数据[直播数据.Count - 1].主播名称 = "null"; } #endregion #region 标题 try { 直播数据[直播数据.Count - 1].标题 = item["title"].ToString(); } catch (Exception) { 直播数据[直播数据.Count - 1].标题 = "null"; } #endregion #region 当前观众 try { 直播数据[直播数据.Count - 1].当前观众 = item["viewers"].ToString(); } catch (Exception) { 直播数据[直播数据.Count - 1].当前观众 = "null"; } #endregion #region 频道相关信息 try { 直播数据[直播数据.Count - 1].频道相关信息 = item["channel_misc"].ToString(); } catch (Exception) { 直播数据[直播数据.Count - 1].频道相关信息 = "null"; } #endregion #region 阿B房间号 try { 直播数据[直播数据.Count - 1].阿B房间号 = item["desc"].ToString(); } catch (Exception) { 直播数据[直播数据.Count - 1].阿B房间号 = "null"; } #endregion 直播数据[直播数据.Count() - 1].直播连接 = 根据频道类型返回直播地址(直播数据[直播数据.Count() - 1]); } catch (Exception ex) { InfoLog.InfoPrintf("外部API:正在直播的列表更新出现错误" + ex.ToString(), InfoLog.InfoClass.系统错误信息); } } }
public static void 使用vtbsAPI更新房间状态() { int C1 = 0; int C2 = RoomList.Count; try { while (!wss连接初始化准备已完成) { Thread.Sleep(1000); } JArray JO = (JArray)JsonConvert.DeserializeObject(MMPU.返回网页内容_GET(VTBS.API.VTBS服务器CDN.VTBS_Url + "/v1/living", 8000)); List <int> MTPlist = new List <int>(); foreach (var item in VtbsRoomList) { MTPlist.Add(item.room); } List <RoomInit.RoomInfo> Vtbs存在的直播间 = new List <RoomInit.RoomInfo>(); List <RoomInit.RoomInfo> Vtbs不存在的直播间 = new List <RoomInit.RoomInfo>(); foreach (var item in RoomList) { if (MTPlist.Contains(int.Parse(item.房间号))) { Vtbs存在的直播间.Add(item); } else { Vtbs不存在的直播间.Add(item); } } foreach (var roomtask in Vtbs存在的直播间) { if (!WSokRoomList.Contains(roomtask.房间号)) { C1++; roomtask.直播状态 = false; if (JO.ToString().Contains(roomtask.房间号)) { roomtask.直播状态 = true; } else { roomtask.直播状态 = false; } } else { ; } } InfoLog.InfoPrintf("Vtbs数据加载成功", InfoLog.InfoClass.Debug); } catch (Exception e) { InfoLog.InfoPrintf("Vtbs数据加载失败,使用备用数据源开始获取", InfoLog.InfoClass.Debug); try { JArray JO = (JArray)JsonConvert.DeserializeObject(MMPU.TcpSend(Server.RequestCode.GET_LIVELSIT, "{}", true)); foreach (var roomtask in RoomList) { if (!roomtask.称.Contains("-NV")) { roomtask.直播状态 = false; if (JO.ToString().Contains(roomtask.房间号)) { roomtask.直播状态 = true; } else { roomtask.直播状态 = false; } } else { ; } } InfoLog.InfoPrintf("备用数据源加载成功", InfoLog.InfoClass.Debug); } catch (Exception) { InfoLog.InfoPrintf("备用缓存数据加载失败,使用原生阿Bapi开始获取开始获取", InfoLog.InfoClass.Debug); 使用B站API更新房间状态(); } } InfoLog.InfoPrintf("使用VTBS数据库加载数据量:" + C1.ToString() + "/" + C2.ToString(), InfoLog.InfoClass.Debug); }