Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
This commit is contained in:
parent
d079e5c67d
commit
0500e734cc
@ -4,6 +4,7 @@ using FireSharp.Config;
|
||||
using FireSharp.Interfaces;
|
||||
using Herse.Models;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
@ -23,7 +24,7 @@ namespace BillboardPlaylistUpdater
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
//args = new string[] { "bsully5150" };
|
||||
//args = new string[] { "mbrucedogs" };
|
||||
if (args.Length != 1)
|
||||
{
|
||||
Console.WriteLine("usage: songcrawler partyid songspath");
|
||||
@ -74,7 +75,7 @@ namespace BillboardPlaylistUpdater
|
||||
|
||||
static void UpdateCurrentCharts()
|
||||
{
|
||||
SongList hot100 = Download("Hot 100", "https://www.billboard.com/charts/hot-100");
|
||||
SongList hot100 = DownloadHot100("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");
|
||||
@ -226,6 +227,66 @@ namespace BillboardPlaylistUpdater
|
||||
return songs;
|
||||
}
|
||||
|
||||
static SongList DownloadHot100(string listName, string url)
|
||||
{
|
||||
DateTime now = DateTime.Now;
|
||||
string title = now.Year + " - " + listName;
|
||||
|
||||
Console.WriteLine("Downloading " + title);
|
||||
|
||||
string html = DownloadHtml(url);
|
||||
|
||||
SongList list = null;
|
||||
List<SongListSong> songs = ParseHot100(title, html);
|
||||
if (songs != null)
|
||||
{
|
||||
list = new SongList();
|
||||
list.Title = title;
|
||||
list.Songs = songs;
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
static List<SongListSong> ParseHot100(string name, string html)
|
||||
{
|
||||
List<SongListSong> songs = null;
|
||||
var parser = new HtmlParser();
|
||||
var document = parser.Parse(html);
|
||||
//2-?
|
||||
var cs = "data-charts=\"";
|
||||
var ce = "data-icons=\"https:";
|
||||
var ics = html.IndexOf(cs) + cs.Length;
|
||||
var ice = html.IndexOf(ce);
|
||||
var json = html.Substring(ics, ice - ics);
|
||||
json = json.Replace("\"", "").Replace(""", "\"").Replace(""quot;", "\"").Replace("&quoquot;;", "\"").Replace("&ququot;", "\"");
|
||||
JArray articles = JArray.Parse(json);
|
||||
|
||||
if (articles.Count() > 0)
|
||||
{
|
||||
Console.WriteLine("Found " + articles.Count() + " Songs");
|
||||
songs = new List<SongListSong>();
|
||||
}
|
||||
|
||||
|
||||
|
||||
var i = 1;
|
||||
foreach (var article in articles)
|
||||
{
|
||||
var title = (string)article["title"];
|
||||
var artist = (string)article["artist_name"];
|
||||
var song = new SongListSong();
|
||||
song.Artist = WebUtility.HtmlDecode(artist);
|
||||
song.Title = WebUtility.HtmlDecode(title);
|
||||
song.Position = Convert.ToInt32(i);
|
||||
songs.Add(song);
|
||||
i++;
|
||||
}
|
||||
Console.Write("Parsed " + songs.Count() + " Songs");
|
||||
return songs;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static string DownloadHtml(string url)
|
||||
{
|
||||
string data = null;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user