1
0
Fork 0
mirror of https://github.com/Nioux/AideDeJeu.git synced 2025-10-31 07:26:09 +00:00

Adaptation aux nouvelles pages AideDD

This commit is contained in:
Yan Maniez 2018-05-13 23:17:11 +02:00
parent 28d833c94d
commit e487488f60
8 changed files with 62 additions and 36 deletions

View file

@ -178,15 +178,15 @@ namespace AideDeJeu.ViewModels
//try //try
//{ //{
ItemDatabaseHelper<ItemDatabaseContext> helper = new ItemDatabaseHelper<ItemDatabaseContext>(); //ItemDatabaseHelper<ItemDatabaseContext> helper = new ItemDatabaseHelper<ItemDatabaseContext>();
await helper.AddOrUpdateSpellsAsync(items); //await helper.AddOrUpdateSpellsAsync(items);
var items2 = await helper.GetSpellsAsync(); //var items2 = await helper.GetSpellsAsync();
//} //}
//catch(Exception ex) //catch(Exception ex)
//{ //{
// Debug.WriteLine(ex); // Debug.WriteLine(ex);
//} //}
var aitems = items2.ToArray(); var aitems = items.ToArray();
Array.Sort(aitems, new ItemComparer()); Array.Sort(aitems, new ItemComparer());
foreach (var item in aitems) foreach (var item in aitems)
{ {

View file

@ -8,6 +8,9 @@
<ContentPage.BindingContext> <ContentPage.BindingContext>
<vm:AboutViewModel /> <vm:AboutViewModel />
</ContentPage.BindingContext> </ContentPage.BindingContext>
<ContentPage.ToolbarItems>
<ToolbarItem Text="truc" />
</ContentPage.ToolbarItems>
<Grid> <Grid>
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />

View file

@ -99,11 +99,12 @@
ItemsSource="{Binding Items}" ItemsSource="{Binding Items}"
VerticalOptions="FillAndExpand" VerticalOptions="FillAndExpand"
HasUnevenRows="true" HasUnevenRows="true"
RefreshCommand="{Binding LoadItemsCommand}"
IsPullToRefreshEnabled="true"
IsRefreshing="{Binding IsBusy, Mode=OneWay}" IsRefreshing="{Binding IsBusy, Mode=OneWay}"
CachingStrategy="RecycleElement" CachingStrategy="RecycleElement"
SelectedItem="{Binding SelectedItem}"> SelectedItem="{Binding SelectedItem}">
<!--RefreshCommand="{Binding LoadItemsCommand}"
IsPullToRefreshEnabled="true"-->
<ListView.ItemTemplate> <ListView.ItemTemplate>
<DataTemplate> <DataTemplate>
<ViewCell> <ViewCell>

View file

@ -12,5 +12,6 @@ namespace AideDeJeuLib
public string Name { get; set; } public string Name { get; set; }
public string NameVO { get; set; } public string NameVO { get; set; }
public string NamePHB { get; set; } public string NamePHB { get; set; }
public string Html { get; set; }
} }
} }

View file

@ -72,13 +72,21 @@ namespace AideDeJeuLib.Monsters
public static Monster FromHtml(HtmlNode divBloc) public static Monster FromHtml(HtmlNode divBloc)
{ {
var monster = new Monster(); var monster = new Monster();
monster.Html = divBloc.OuterHtml;
var divMonster = divBloc?.SelectSingleNode("div[contains(@class,'monstre')]"); var divMonster = divBloc?.SelectSingleNode("div[contains(@class,'monstre')]");
monster.Name = divMonster?.SelectSingleNode("h1").InnerText; monster.Name = divMonster?.SelectSingleNode("h1").InnerText;
var altNames = divMonster.SelectSingleNode("div[@class='trad']").InnerText; var altNames = divMonster.SelectSingleNode("div[@class='trad']")?.InnerText;
var matchNames = new Regex(@"\[ (?<vo>.*?) \](?: \[ (?<alt>.*?) \])?").Match(altNames); if (altNames != null)
monster.NameVO = matchNames.Groups["vo"].Value; {
monster.NamePHB = string.IsNullOrEmpty(matchNames.Groups["alt"].Value) ? monster.Name : matchNames.Groups["alt"].Value; var matchNames = new Regex(@"\[ (?<vo>.*?) \](?: \[ (?<alt>.*?) \])?").Match(altNames);
monster.NameVO = matchNames.Groups["vo"].Value;
monster.NamePHB = string.IsNullOrEmpty(matchNames.Groups["alt"].Value) ? monster.Name : matchNames.Groups["alt"].Value;
}
else
{
monster.NamePHB = monster.Name;
}
var divSansSerif = divMonster?.SelectSingleNode("div[contains(@class,'sansSerif')]"); var divSansSerif = divMonster?.SelectSingleNode("div[contains(@class,'sansSerif')]");
var typeSizeAlignment = divSansSerif?.SelectSingleNode("h2/em")?.InnerText; var typeSizeAlignment = divSansSerif?.SelectSingleNode("h2/em")?.InnerText;

View file

@ -74,11 +74,14 @@ namespace AideDeJeuLib.Monsters
var client = GetHttpClient(); var client = GetHttpClient();
// https://www.aidedd.org/regles/monstres/?min=.25&max=20&c=M&sz=TP&lg=si&t=Humano%C3%AFde&s=srd // https://www.aidedd.org/regles/monstres/?min=.25&max=20&c=M&sz=TP&lg=si&t=Humano%C3%AFde&s=srd
html = await client.GetStringAsync(string.Format($"https://www.aidedd.org/regles/monstres/?c={category}&t={type}&min={minPower}&max={maxPower}&sz={size}&lg={legendary}&s={source}", category, type, minPower, maxPower, size, legendary, source)); //html = await client.GetStringAsync(string.Format($"https://www.aidedd.org/regles/monstres/?c={category}&t={type}&min={minPower}&max={maxPower}&sz={size}&lg={legendary}&s={source}", category, type, minPower, maxPower, size, legendary, source));
var url = string.Format($"https://www.aidedd.org/dnd-filters/monstres.php?c={category}&t={type}&min={minPower}&max={maxPower}&sz={size}&lg={legendary}&s={source}", category, type, minPower, maxPower, size, legendary, source);
html = await client.GetStringAsync(url);
var pack = new HtmlDocument(); var pack = new HtmlDocument();
pack.LoadHtml(html); pack.LoadHtml(html);
var trs = pack.GetElementbyId("liste").Element("table").Elements("tr").ToList(); //var trs = pack.GetElementbyId("liste").Element("table").Elements("tr").ToList();
var trs = pack.DocumentNode.SelectSingleNode("//table[contains(@class,'liste')]").Elements("tr").ToList();
var monsters = new List<Monster>(); var monsters = new List<Monster>();
foreach (var tr in trs) foreach (var tr in trs)
{ {
@ -86,28 +89,28 @@ namespace AideDeJeuLib.Monsters
if (tds.Length > 0) if (tds.Length > 0)
{ {
var monster = new Monster(); var monster = new Monster();
var aname = tds[0].Element("a"); var aname = tds[1].Element("a");
var spanname = aname.Element("span"); var spanname = aname.Element("span");
if (spanname != null) if (spanname != null)
{ {
monster.NamePHB = spanname.GetAttributeValue("title", ""); monster.NamePHB = spanname.GetAttributeValue("title", "");
monster.Name = spanname.Element("strong").InnerText; monster.Name = spanname.InnerText;
} }
else else
{ {
monster.NamePHB = aname.Element("strong").InnerText; monster.NamePHB = aname.InnerText;
monster.Name = aname.Element("strong").InnerText; monster.Name = aname.InnerText;
} }
//monster.Name = tds[0].InnerText; //monster.Name = tds[0].InnerText;
var href = aname.GetAttributeValue("href", ""); var href = aname.GetAttributeValue("href", "");
var regex = new Regex("vf=(?<id>.*)"); var regex = new Regex("vf=(?<id>.*)");
monster.Id = regex.Match(href).Groups["id"].Value; monster.Id = regex.Match(href).Groups["id"].Value;
monster.Power = tds[1].InnerText; monster.Power = tds[2].InnerText;
monster.Type = tds[2].InnerText; monster.Type = tds[3].InnerText;
monster.Size = tds[3].InnerText; monster.Size = tds[4].InnerText;
monster.Alignment = tds[4].InnerText; monster.Alignment = tds[5].InnerText;
monster.Legendary = tds[5].InnerText; monster.Legendary = tds[6].InnerText;
monsters.Add(monster); monsters.Add(monster);
} }
} }

View file

@ -58,11 +58,19 @@ namespace AideDeJeuLib.Spells
public static Spell FromHtml(HtmlNode nodeSpell) public static Spell FromHtml(HtmlNode nodeSpell)
{ {
var spell = new Spell(); var spell = new Spell();
spell.Html = nodeSpell.OuterHtml;
spell.Name = nodeSpell.SelectSingleNode("h1").InnerText; spell.Name = nodeSpell.SelectSingleNode("h1").InnerText;
var altNames = nodeSpell.SelectSingleNode("div[@class='trad']").InnerText; var altNames = nodeSpell.SelectSingleNode("div[@class='trad']")?.InnerText;
var matchNames = new Regex(@"\[ (?<vo>.*?) \](?: \[ (?<alt>.*?) \])?").Match(altNames); if (altNames != null)
spell.NameVO = matchNames.Groups["vo"].Value; {
spell.NamePHB = string.IsNullOrEmpty(matchNames.Groups["alt"].Value) ? spell.Name : matchNames.Groups["alt"].Value; var matchNames = new Regex(@"\[ (?<vo>.*?) \](?: \[ (?<alt>.*?) \])?").Match(altNames);
spell.NameVO = matchNames.Groups["vo"].Value;
spell.NamePHB = string.IsNullOrEmpty(matchNames.Groups["alt"].Value) ? spell.Name : matchNames.Groups["alt"].Value;
}
else
{
spell.NamePHB = spell.Name;
}
spell.LevelType = nodeSpell.SelectSingleNode("h2/em").InnerText; spell.LevelType = nodeSpell.SelectSingleNode("h2/em").InnerText;
spell.Level = spell.LevelType.Split(new string[] { " - " }, StringSplitOptions.None)[0].Split(' ')[1]; spell.Level = spell.LevelType.Split(new string[] { " - " }, StringSplitOptions.None)[0].Split(' ')[1];
spell.Type = spell.LevelType.Split(new string[] { " - " }, StringSplitOptions.None)[1]; spell.Type = spell.LevelType.Split(new string[] { " - " }, StringSplitOptions.None)[1];

View file

@ -72,12 +72,14 @@ namespace AideDeJeuLib.Spells
var client = GetHttpClient(); var client = GetHttpClient();
// https://www.aidedd.org/regles/sorts/ // https://www.aidedd.org/regles/sorts/
var url = string.Format("https://www.aidedd.org/regles/sorts/?c={0}&min={1}&max={2}&e={3}&r={4}&s={5}", classe, niveauMin, niveauMax, ecole, rituel, source); //var url = string.Format("https://www.aidedd.org/regles/sorts/?c={0}&min={1}&max={2}&e={3}&r={4}&s={5}", classe, niveauMin, niveauMax, ecole, rituel, source);
var url = string.Format("https://www.aidedd.org/dnd-filters/sorts.php?c={0}&min={1}&max={2}&e={3}&r={4}&s={5}", classe, niveauMin, niveauMax, ecole, rituel, source);
html = await client.GetStringAsync(url); html = await client.GetStringAsync(url);
var pack = new HtmlDocument(); var pack = new HtmlDocument();
pack.LoadHtml(html); pack.LoadHtml(html);
var tdssort = pack.GetElementbyId("liste").Element("table").Elements("tr").ToList(); //var tdssort = pack.GetElementbyId("liste").Element("table").Elements("tr").ToList();
var tdssort = pack.DocumentNode.SelectSingleNode("//table[contains(@class,'liste')]").Elements("tr").ToList();
var spells = new List<Spell>(); var spells = new List<Spell>();
foreach (var tdsort in tdssort) foreach (var tdsort in tdssort)
{ {
@ -85,27 +87,27 @@ namespace AideDeJeuLib.Spells
if (thssort.Length > 0) if (thssort.Length > 0)
{ {
Spell spell = new Spell(); Spell spell = new Spell();
var aname = thssort[0].Element("a"); var aname = thssort[1].Element("a");
var spanname = aname.Element("span"); var spanname = aname.Element("span");
if(spanname != null) if(spanname != null)
{ {
spell.NamePHB = spanname.GetAttributeValue("title", ""); spell.NamePHB = spanname.GetAttributeValue("title", "");
spell.Name = spanname.Element("strong").InnerText; spell.Name = spanname.InnerText;
} }
else else
{ {
spell.NamePHB = aname.Element("strong").InnerText; spell.NamePHB = aname.InnerText;
spell.Name = aname.Element("strong").InnerText; spell.Name = aname.InnerText;
} }
var href = aname.GetAttributeValue("href", ""); var href = aname.GetAttributeValue("href", "");
var regex = new Regex("vf=(?<id>.*)"); var regex = new Regex("vf=(?<id>.*)");
spell.Id = regex.Match(href).Groups["id"].Value; spell.Id = regex.Match(href).Groups["id"].Value;
spell.Level = thssort[1].InnerText; spell.Level = thssort[2].InnerText;
spell.Type = thssort[2].InnerText; spell.Type = thssort[3].InnerText;
spell.CastingTime = thssort[3].InnerText; spell.CastingTime = thssort[4].InnerText;
spell.Concentration = thssort[4].InnerText; spell.Concentration = thssort[5].InnerText;
spell.Rituel = thssort[5].InnerText; spell.Rituel = thssort[6].InnerText;
spells.Add(spell); spells.Add(spell);
} }
} }