Esempio n. 1
0
 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();
 }
Esempio n. 2
0
 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();
 }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
 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更新房间状态();
         }
     }
 }
Esempio n. 5
0
        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);
            }
        }
Esempio n. 6
0
            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.系统错误信息);
                    }
                }
            }
Esempio n. 7
0
        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);
        }