โค้ดครับ
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้public static IEnumerable<YoutubeLink> GetYoutubeLinks(string query, int numberOfResults = 1)
{
List<YoutubeLink> links = new List<YoutubeLink>);
if (query.StartsWith("http"))
{
// Get title
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(GetWebPageCode(query));
HtmlNode node = doc.DocumentNode.QuerySelector(".watch-title-container .watch-title");
links.Add(new YoutubeLink { Url = query, Label = node.InnerText });
}
else
{
int page = 1;
while (page < 20 && links.Count < numberOfResults)
{
string requestUrl = string.Format(URL, HttpUtility.UrlEncode(query)?.Replace("%20", "+"), page);
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(GetWebPageCode(requestUrl));
IEnumerable<HtmlNode> nodes = doc.DocumentNode.QuerySelectorAll("#results h3 > a");
// TODO expand youtube playlist into seperate songs
links.AddRange(nodes.Where(n => !n.Attributes["href"].Value.Contains("&list=")).Select(n => new YoutubeLink { Url = "http://www.youtube.com" + n.Attributes["href"].Value, Label = n.Attributes["title"].Value }));
Thread.Sleep(1000);
page++;
}
}
return links;
// TODO 040 make sure program correctly stops if page is not existent => message to user
}
โค้ดต้นฉบับครับ
https://github.com/bertyhell/PlaylistDownloader/blob/master/PlaylistDownloader/PlaylistDownloader/YoutubeSearcher.cs
ผมลองเอามาเขียนเป็น winApp พอดีไม่ถนัด WPF ครับ
C# HtmlAgilityPack ค้นหาเพลงไม่ตรงครับ
โค้ดครับ
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
โค้ดต้นฉบับครับ
https://github.com/bertyhell/PlaylistDownloader/blob/master/PlaylistDownloader/PlaylistDownloader/YoutubeSearcher.cs
ผมลองเอามาเขียนเป็น winApp พอดีไม่ถนัด WPF ครับ