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
songList = new List<SongList>();
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<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;
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);

View File

@ -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;

View File

@ -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();

View File

@ -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<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 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;
}