diff --git a/BillboardPlaylistUpdater/Program.cs b/BillboardPlaylistUpdater/Program.cs index de4da01..db9460f 100644 --- a/BillboardPlaylistUpdater/Program.cs +++ b/BillboardPlaylistUpdater/Program.cs @@ -49,7 +49,7 @@ namespace BillboardPlaylistUpdater else songList = new List(); - RunTest(); + //RunTest(); //update Shared Charts and save UpdateCurrentCharts(); client.Set(firepath, songList); @@ -76,7 +76,7 @@ namespace BillboardPlaylistUpdater static void UpdateCurrentCharts() { - SongList hot100 = DownloadHot100("Hot 100", "https://www.billboard.com/charts/hot-100"); + SongList hot100 = Download("Hot 100", "https://www.billboard.com/charts/hot-100"); SongList pop = Download("Pop-Songs", "https://www.billboard.com/charts/pop-songs"); SongList rock = Download("Rock-Songs", "https://www.billboard.com/charts/rock-songs"); SongList country = Download("Country-Songs", "https://www.billboard.com/charts/country-songs"); @@ -187,36 +187,33 @@ namespace BillboardPlaylistUpdater var parser = new HtmlParser(); var document = parser.Parse(html); //2-? - var articles = document.QuerySelectorAll("div.chart-list-item "); + var articles = document.QuerySelectorAll("ul.o-chart-results-list-row"); if (articles.Count() > 0) { Console.WriteLine("Found " + articles.Count() + " Songs"); songs = new List(); } - ////1 - //var number1artist = document.QuerySelectorAll("div.chart-number-one__artist ").First().InnerHtml.TrimStart().TrimEnd(); - //var number1title = document.QuerySelectorAll("div.chart-number-one__title ").First().InnerHtml.TrimStart().TrimEnd(); - //var number1 = new SongListSong(); - //number1.Artist = number1artist; - //number1.Title = number1title; - //number1.Position = 1; - //if (number1artist.Contains("href")) - //{ - // var start = number1artist.IndexOf(">") + 1; - // var end = number1artist.IndexOf("<",1) - 1; - // var art = number1artist.Substring(start, end - start); - // number1.Artist = art.TrimStart().TrimEnd(); - //} - //songs.Add(number1); - - var i = 1; foreach (var article in articles) { - var title = article.Attributes["data-title"].Value; - var artist = article.Attributes["data-artist"].Value; - var position = article.Attributes["data-rank"].Value; + var title = "none"; //article.Attributes["data-title"].Value; + var artist = "none";//article.Attributes["data-artist"].Value; + var position = i; //article.Attributes["data-rank"].Value; + + var listItems = article.QuerySelectorAll("li.o-chart-results-list__item"); + foreach(var listItem in listItems) + {; + var h3 = listItem.QuerySelectorAll("h3"); + var span = listItem.QuerySelectorAll("span"); + if (h3.Length > 0 && span.Length > 0) + { + title = h3[0].InnerHtml.Trim(); + artist = span[0].InnerHtml.Trim(); + break; + } + + } var song = new SongListSong(); song.Artist = artist; song.Title = title; @@ -254,7 +251,7 @@ namespace BillboardPlaylistUpdater var parser = new HtmlParser(); var document = parser.Parse(html); //2-? - var cs = "data-charts=\""; + var cs = "chart-results-list=\""; var ce = "data-icons=\"https:"; var ics = html.IndexOf(cs) + cs.Length; var ice = html.IndexOf(ce); diff --git a/Herse.Models/Song.cs b/Herse.Models/Song.cs index 61d27fa..5514bd3 100644 --- a/Herse.Models/Song.cs +++ b/Herse.Models/Song.cs @@ -21,6 +21,8 @@ namespace Herse.Models [JsonProperty("path")] public string Path { get; set; } + [JsonProperty("guid")] + public string Guid { get; set; } [JsonProperty("disabled")] public bool Disabled { get; set; } = false; diff --git a/KaraokePlayer/MainForm.cs b/KaraokePlayer/MainForm.cs index a2459b5..cef1bbc 100644 --- a/KaraokePlayer/MainForm.cs +++ b/KaraokePlayer/MainForm.cs @@ -74,7 +74,7 @@ namespace KaraokePlayer songInfoForm.Show(); if(controller.Settings == null || controller.Settings.AutoAdvance) { - await Task.Delay(TimeSpan.FromSeconds(10)); + await Task.Delay(TimeSpan.FromSeconds(5)); player.play(); controller.SetState(PlayerState.Playing); songInfoForm.Hide(); diff --git a/SongCrawler/Program.cs b/SongCrawler/Program.cs index ff87fee..f782aa0 100644 --- a/SongCrawler/Program.cs +++ b/SongCrawler/Program.cs @@ -11,12 +11,22 @@ using System.Threading.Tasks; using System.IO.Compression; using System.Configuration; using Newtonsoft.Json; +using System.Security.Cryptography; namespace SongCrawler { class Program { + private static Guid GuidFromString(string input) + { + using (MD5 md5 = MD5.Create()) + { + byte[] hash = md5.ComputeHash(Encoding.Default.GetBytes(input)); + return new Guid(hash); + } + } + static void Main(string[] args) { if (args.Count() == 3) @@ -33,6 +43,7 @@ namespace SongCrawler { //string [] test = { "mbrucedogs", "z://" }; //args = test; + var debug = false; if (args.Length != 2) { Console.WriteLine("usage: songcrawler partyid songspath"); @@ -96,6 +107,10 @@ namespace SongCrawler { Console.WriteLine(ex.Message); } + if (debug && i > 1000) + { + break; + } } //sync all favorite, history, disabled @@ -128,9 +143,16 @@ namespace SongCrawler } }); } - client.Set(songsPath, songs); + //string test = string.Format("controllers/{0}/testsongs", controller); + //Dictionary testSongs = new Dictionary(); + //foreach (Song s in songs) + //{ + // testSongs[s.Guid] = s; + //} + //client.Set(test, testSongs); + var created = songs.Select(s => new CreatedSong(File.GetCreationTime(s.Path), s)).ToList(); var first200 = created.Where(s => s.created != null).OrderByDescending(s => s.created).Take(200); var added = first200.Select(s => new PathOnly(path: s.song.Path)).ToList(); @@ -357,6 +379,7 @@ namespace SongCrawler } CheckTitle(song); song.Path = filepath; + song.Guid = GuidFromString(filepath).ToString(); return song; }