Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
 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);
     }
 }
Ejemplo n.º 5
0
        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);
            }
        }
Ejemplo n.º 6
0
        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);
            }
        }