Beispiel #1
0
        //Max return 50 videos...
        public static List <YoutubeVideo> GetVideosByChannelId(string channelId, int count = 5)
        {
            var client = new MyHttpClient();
            var json   = JObject.Parse(client.Get(
                                           $"https://www.googleapis.com/youtube/v3/search?key={ApiKey}&channelId={channelId}&part=snippet,id&order=date&maxResults={count}"));
            var a = json.ToString();

            if (json["items"] == null)
            {
                return(new List <YoutubeVideo>());
            }
            var result = (from token in json["items"]
                          where token["id"]["kind"].ToObject <string>() == "youtube#video"
                          let snippet = token["snippet"]
                                        select new YoutubeVideo()
            {
                Title = snippet["title"].ToObject <string>(),
                PublishTime = DateTime.Parse(snippet["publishedAt"].ToObject <string>()),
                ChannelId = snippet["channelId"].ToObject <string>(),
                VideoId = token["id"]["videoId"].ToObject <string>(),
                VideoLink = "https://www.youtube.com/watch?v=" + token["id"]["videoId"].ToObject <string>(),
                ChannelTitle = snippet["channelTitle"].ToObject <string>(),
                ThumbnailLink = snippet["thumbnails"]["default"]["url"].ToObject <string>(),
                Description = snippet["description"].ToObject <string>(),
                IsLive = snippet["liveBroadcastContent"].ToObject <string>() == "live"
            }).ToList();

            return(result);
        }
Beispiel #2
0
        public static YoutubeLiveChatInfo GetLiveChatInfo(string liveChatId)
        {
            var client = new MyHttpClient();

            return(JsonConvert.DeserializeObject <YoutubeLiveChatInfo>(client.Get(
                                                                           $"https://www.googleapis.com/youtube/v3/liveChat/messages?liveChatId={liveChatId}&part=id%2Csnippet&key={ApiKey}&maxResults=2000")));
        }
Beispiel #3
0
        public static YoutubeVideo GetYoutubeVideo(string videoId)
        {
            var client = new MyHttpClient();
            var json   = JObject.Parse(client.Get(
                                           $"https://www.googleapis.com/youtube/v3/videos?id={videoId}&key={ApiKey}&part=liveStreamingDetails,snippet"));

            if (json["pageInfo"]["totalResults"].ToObject <int>() != 1)
            {
                return(null);
            }
            var item    = json["items"].First();
            var snippet = item["snippet"];
            var result  = new YoutubeVideo()
            {
                Title         = snippet["title"].ToObject <string>(),
                PublishTime   = DateTime.Parse(snippet["publishedAt"].ToObject <string>()),
                ChannelId     = snippet["channelId"].ToObject <string>(),
                VideoId       = item["id"].ToObject <string>(),
                VideoLink     = "https://www.youtube.com/watch?v=" + item["id"].ToObject <string>(),
                ChannelTitle  = snippet["channelTitle"].ToObject <string>(),
                ThumbnailLink = snippet["thumbnails"]["default"]["url"].ToObject <string>(),
                Description   = snippet["description"].ToObject <string>(),
                IsLive        = snippet["liveBroadcastContent"].ToObject <string>() == "live",
            };

            if (item["liveStreamingDetails"] != null)
            {
                result.LiveDetails = item["liveStreamingDetails"].ToObject <LiveStreamingDetail>();
            }
            return(result);
        }
Beispiel #4
0
        public static BiliBiliUser GetBiliBiliUser(long userId)
        {
            var client = new MyHttpClient();
            var json   = JObject.Parse(client.Get($"https://api.bilibili.com/x/space/app/index?mid={userId}"));

            return(json["data"]["info"].ToObject <BiliBiliUser>());
        }
Beispiel #5
0
        public static string GetUploadsPlaylistId(string channelId)
        {
            var client = new MyHttpClient();
            var json   = JObject.Parse(client.Get(
                                           $"https://www.googleapis.com/youtube/v3/channels?part=contentDetails&id={channelId}&key={ApiKey}"));

            return(json["pageInfo"]["totalResults"].ToObject <int>() == 0
                ? null
                : json["items"].First()["contentDetails"]["relatedPlaylists"]["uploads"].ToObject <string>());
        }
Beispiel #6
0
        public void InitDanmuServer()
        {
            var client = new MyHttpClient();
            var xml    = client.Get("https://live.bilibili.com/api/player?id=cid:" + RoomId);

            xml = $"<root>{xml}</root>";
            var doc = new XmlDocument();

            doc.LoadXml(xml);
            DanmuServer = doc["root"]["dm_host_list"].InnerText.Split(',').First();
        }
Beispiel #7
0
        public static List <TweetInfo> GetTimelineByUser(string username, int count = 5)
        {
            if (string.IsNullOrEmpty(AccessToken))
            {
                InitAccessToken();
            }
            var client = new MyHttpClient()
            {
                AccessToken = "Bearer " + AccessToken
            };

            return(JsonConvert.DeserializeObject <List <TweetInfo> >(client.Get(
                                                                         $"https://api.twitter.com/1.1/statuses/user_timeline.json?count={count}&screen_name={username}")));
        }
Beispiel #8
0
        public static List <UserLocalLiveInfo> GetTimeLine()
        {
            var client = new MyHttpClient();
            var text   = client.Get("http://virtual-youtuber.userlocal.jp/");
            var html   = new HtmlDocument();

            html.LoadHtml(text);
            var body     = html.DocumentNode.SelectNodes("html").First().SelectNodes("body").First();
            var listNode = body.SelectSingleNode("/html/body/div[2]/div[2]/div[3]/table").ChildNodes.Where(v => v.Name == "tr");
            var time     = string.Empty;
            var result   = new List <UserLocalLiveInfo>();

            foreach (var node in listNode)
            {
                if (node.GetAttributeValue("class") == "text-white bg-dark")
                {
                    time = node.InnerText.Trim();
                    time = time.Substring(0, time.IndexOf('('));
                    continue;
                }

                var subTime  = time;
                var subNodes = node.ChildNodes.Where(v => v.Name == "td");
                subTime += subNodes.First().InnerText.Trim();
                subNodes = subNodes.Last().ChildNodes.Where(v => v.Name == "div");
                foreach (var subNode in subNodes)
                {
                    var dateTime = Convert.ToDateTime(subTime + subNode.ChildNodes.First(v => v.Name == "div").InnerText.Trim(), new DateTimeFormatInfo()
                    {
                        ShortDatePattern = "MM月dd日hh時mm分"
                    });
                    dateTime += new TimeSpan(1, 0, 0);
                    var spans = subNode.ChildNodes.Last(v => v.Name == "div").ChildNodes.Where(v => v.Name == "span");
                    result.AddRange(from span in spans
                                    select span.InnerText.Trim()
                                    into titleOrigin
                                    let liveTitle = titleOrigin.Substring(0, titleOrigin.IndexOf("(") == -1 ? titleOrigin.Length : titleOrigin.IndexOf("(")).Trim()
                                                    let vtuberName =
                                        titleOrigin.Substring(titleOrigin.IndexOf("(") + 1,
                                                              titleOrigin.Length - titleOrigin.IndexOf("(") - 2)
                                        select new UserLocalLiveInfo()
                    {
                        LiveTime = dateTime, Title = liveTitle, VTuber = vtuberName
                    });
                }
            }
            return(result);
        }
Beispiel #9
0
        public static List <BiliBiliUser> SearchBiliBiliUsers(string keyword)
        {
            var client = new MyHttpClient();
            var json   = JObject.Parse(client.Get($"https://app.bilibili.com/x/v2/search/type?&build=12080&highlight=1&keyword={Uri.EscapeDataString(keyword)}&order=totalrank&order_sort=1&type=2"));

            if (json["data"].HasValues)
            {
                var items = json["data"]["items"];
                var users = items.Select(v => new BiliBiliUser()
                {
                    Username    = v["title"]?.ToString(),
                    Id          = int.Parse(v["param"]?.ToString()),
                    Description = v["sign"]?.ToString(),
                    Follower    = v["fans"]?.ToObject <int>() ?? 0,
                    IsUploader  = v["is_up"]?.ToObject <bool>() ?? false
                });
                return(users.ToList());
            }
            return(new List <BiliBiliUser>());
        }
Beispiel #10
0
        public static List <YoutubeVideo> GetPlaylistItems(string playListId, int count = 5)
        {
            var client = new MyHttpClient();
            var json   = JObject.Parse(client.Get(
                                           $"https://www.googleapis.com/youtube/v3/playlistItems?part=snippet%2CcontentDetails&maxResults={count}&playlistId={playListId}&key={ApiKey}"));
            var result = (from token in json["items"]
                          let snippet = token["snippet"]
                                        select new YoutubeVideo()
            {
                Title = snippet["title"].ToObject <string>(),
                PublishTime = DateTime.Parse(snippet["publishedAt"].ToObject <string>()),
                ChannelId = snippet["channelId"].ToObject <string>(),
                VideoId = snippet["resourceId"]["videoId"].ToObject <string>(),
                VideoLink = "https://www.youtube.com/watch?v=" + snippet["resourceId"]["videoId"].ToObject <string>(),
                ChannelTitle = snippet["channelTitle"].ToObject <string>(),
                ThumbnailLink = snippet["thumbnails"]["default"]["url"].ToObject <string>(),
                Description = snippet["description"].ToObject <string>(),
                IsLive = false
            }).ToList();

            return(result);
        }
Beispiel #11
0
        public static UserLocalOfficeInfo GetOfficeInfo(string officeName)
        {
            var client = new MyHttpClient();
            var text   = client.Get("http://virtual-youtuber.userlocal.jp/office/" + officeName);
            var html   = new HtmlDocument();

            html.LoadHtml(text);
            var body         = html.DocumentNode.SelectNodes("html").First().SelectNodes("body").First();
            var channelCount = body.SelectSingleNode("/html/body/div[2]/div[3]/div/div[2]/div/div[3]/span[2]")
                               .InnerText;
            var fanCount          = body.SelectSingleNode("/html/body/div[2]/div[3]/div/div[2]/div/div[4]/span[2]").InnerText;
            var avgFanCount       = body.SelectSingleNode("/html/body/div[2]/div[3]/div/div[2]/div/div[5]/span[2]").InnerText;
            var officeDisPlayName = body.SelectSingleNode("/html/body/div[2]/div[3]/div/div[2]/div/div[1]/div[2]/h2")
                                    .InnerText;

            return(new UserLocalOfficeInfo()
            {
                OfficeName = officeDisPlayName,
                ChannelCount = channelCount,
                TotalFanCount = fanCount,
                AvgFanCount = avgFanCount
            });
        }