udpated code

Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
This commit is contained in:
Matt Bruce 2022-02-13 12:51:07 -06:00
parent d40ab93df2
commit c2ae664d80
4 changed files with 48 additions and 26 deletions

View File

@ -49,7 +49,7 @@ namespace BillboardPlaylistUpdater
else else
songList = new List<SongList>(); songList = new List<SongList>();
RunTest(); //RunTest();
//update Shared Charts and save //update Shared Charts and save
UpdateCurrentCharts(); UpdateCurrentCharts();
client.Set(firepath, songList); client.Set(firepath, songList);
@ -76,7 +76,7 @@ namespace BillboardPlaylistUpdater
static void UpdateCurrentCharts() 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 pop = Download("Pop-Songs", "https://www.billboard.com/charts/pop-songs");
SongList rock = Download("Rock-Songs", "https://www.billboard.com/charts/rock-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"); SongList country = Download("Country-Songs", "https://www.billboard.com/charts/country-songs");
@ -187,36 +187,33 @@ namespace BillboardPlaylistUpdater
var parser = new HtmlParser(); var parser = new HtmlParser();
var document = parser.Parse(html); var document = parser.Parse(html);
//2-? //2-?
var articles = document.QuerySelectorAll("div.chart-list-item "); var articles = document.QuerySelectorAll("ul.o-chart-results-list-row");
if (articles.Count() > 0) if (articles.Count() > 0)
{ {
Console.WriteLine("Found " + articles.Count() + " Songs"); Console.WriteLine("Found " + articles.Count() + " Songs");
songs = new List<SongListSong>(); songs = new List<SongListSong>();
} }
////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; var i = 1;
foreach (var article in articles) foreach (var article in articles)
{ {
var title = article.Attributes["data-title"].Value; var title = "none"; //article.Attributes["data-title"].Value;
var artist = article.Attributes["data-artist"].Value; var artist = "none";//article.Attributes["data-artist"].Value;
var position = article.Attributes["data-rank"].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(); var song = new SongListSong();
song.Artist = artist; song.Artist = artist;
song.Title = title; song.Title = title;
@ -254,7 +251,7 @@ namespace BillboardPlaylistUpdater
var parser = new HtmlParser(); var parser = new HtmlParser();
var document = parser.Parse(html); var document = parser.Parse(html);
//2-? //2-?
var cs = "data-charts=\""; var cs = "chart-results-list=\"";
var ce = "data-icons=\"https:"; var ce = "data-icons=\"https:";
var ics = html.IndexOf(cs) + cs.Length; var ics = html.IndexOf(cs) + cs.Length;
var ice = html.IndexOf(ce); var ice = html.IndexOf(ce);

View File

@ -21,6 +21,8 @@ namespace Herse.Models
[JsonProperty("path")] [JsonProperty("path")]
public string Path { get; set; } public string Path { get; set; }
[JsonProperty("guid")]
public string Guid { get; set; }
[JsonProperty("disabled")] [JsonProperty("disabled")]
public bool Disabled { get; set; } = false; public bool Disabled { get; set; } = false;

View File

@ -74,7 +74,7 @@ namespace KaraokePlayer
songInfoForm.Show(); songInfoForm.Show();
if(controller.Settings == null || controller.Settings.AutoAdvance) if(controller.Settings == null || controller.Settings.AutoAdvance)
{ {
await Task.Delay(TimeSpan.FromSeconds(10)); await Task.Delay(TimeSpan.FromSeconds(5));
player.play(); player.play();
controller.SetState(PlayerState.Playing); controller.SetState(PlayerState.Playing);
songInfoForm.Hide(); songInfoForm.Hide();

View File

@ -11,12 +11,22 @@ using System.Threading.Tasks;
using System.IO.Compression; using System.IO.Compression;
using System.Configuration; using System.Configuration;
using Newtonsoft.Json; using Newtonsoft.Json;
using System.Security.Cryptography;
namespace SongCrawler namespace SongCrawler
{ {
class Program 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) static void Main(string[] args)
{ {
if (args.Count() == 3) if (args.Count() == 3)
@ -33,6 +43,7 @@ namespace SongCrawler
{ {
//string [] test = { "mbrucedogs", "z://" }; //string [] test = { "mbrucedogs", "z://" };
//args = test; //args = test;
var debug = false;
if (args.Length != 2) if (args.Length != 2)
{ {
Console.WriteLine("usage: songcrawler partyid songspath"); Console.WriteLine("usage: songcrawler partyid songspath");
@ -96,6 +107,10 @@ namespace SongCrawler
{ {
Console.WriteLine(ex.Message); Console.WriteLine(ex.Message);
} }
if (debug && i > 1000)
{
break;
}
} }
//sync all favorite, history, disabled //sync all favorite, history, disabled
@ -128,9 +143,16 @@ namespace SongCrawler
} }
}); });
} }
client.Set(songsPath, songs); client.Set(songsPath, songs);
//string test = string.Format("controllers/{0}/testsongs", controller);
//Dictionary<string, Song> testSongs = new Dictionary<string, Song>();
//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 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 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(); var added = first200.Select(s => new PathOnly(path: s.song.Path)).ToList();
@ -357,6 +379,7 @@ namespace SongCrawler
} }
CheckTitle(song); CheckTitle(song);
song.Path = filepath; song.Path = filepath;
song.Guid = GuidFromString(filepath).ToString();
return song; return song;
} }