This commit is contained in:
zvon 2021-02-11 18:39:39 +01:00
parent 560cd28e78
commit bcb6120199
2 changed files with 8 additions and 17 deletions

View File

@ -99,7 +99,7 @@ int main(int argc, char **argv, char **env) {
restaurants["lightofindia"] = std::make_unique<LunchRest::LightOfIndiaRestaurant>(); restaurants["lightofindia"] = std::make_unique<LunchRest::LightOfIndiaRestaurant>();
restaurants["ukarla"] = std::make_unique<LunchRest::UKarlaRestaurant>(); restaurants["ukarla"] = std::make_unique<LunchRest::UKarlaRestaurant>();
restaurants["alcapone"] = std::make_unique<LunchRest::AlCaponeRestaurant>(); restaurants["alcapone"] = std::make_unique<LunchRest::AlCaponeRestaurant>();
// restaurants["plac"] = std::make_unique<LunchRest::PlacRestaurant>(); restaurants["plac"] = std::make_unique<LunchRest::PlacRestaurant>();
restaurants["zo"] = std::make_unique<LunchRest::ZoRestaurant>(); restaurants["zo"] = std::make_unique<LunchRest::ZoRestaurant>();
// restaurants["suzzies"] = std::make_unique<LunchRest::SuzziesRestaurant>(); // restaurants["suzzies"] = std::make_unique<LunchRest::SuzziesRestaurant>();
std::cout << "Initial parsing" << std::endl; std::cout << "Initial parsing" << std::endl;

View File

@ -1,16 +1,7 @@
#include "restaurants.hpp" #include "restaurants.hpp"
#include "../network/network.hpp" #include "../network/network.hpp"
#include "../htmlparser.hpp" #include "../htmlparser.hpp"
#include <iostream>
void trim(std::string &str) {
int start = 0;
int end = str.length() - 1;
while(std::isspace(str[start]))
start++;
while(std::isspace(str[end]))
end--;
str = str.substr(start, end - start);
}
void LunchRest::PlacRestaurant::parse() { void LunchRest::PlacRestaurant::parse() {
Request r; Request r;
@ -23,12 +14,12 @@ void LunchRest::PlacRestaurant::parse() {
auto pizzas = root.find("//div[@class='mt-c cf']//div[@class='mt-i cf']"); auto pizzas = root.find("//div[@class='mt-c cf']//div[@class='mt-i cf']");
if(pizzas.size() == 0) if(pizzas.size() == 0)
return; return;
auto soups = pizzas[0]; auto soups = pizzas[0]->find(".//div[@class='b b-text cf']");
int soup_price = std::stoi(nodeToText(pizzas[1]->find(".//strong/text()")[0])); int soup_price = std::stoi(nodeToText(soups[1]->find(".//strong/text()")[0]));
int cur_day = -1; int cur_day = -1;
for(auto &soup : soups->find(".//text()")) { for(auto &soup : soups[0]->find(".//p/text()")) {
std::string soup_text = nodeToText(soup); std::string soup_text = nodeToText(soup);
auto soup_day = soup_text.substr(0,2); auto soup_day = soup_text.substr(0,2);
if(soup_day == "Po") if(soup_day == "Po")
@ -46,15 +37,15 @@ void LunchRest::PlacRestaurant::parse() {
} }
for(unsigned long int i = 2; i < pizzas.size(); i++) { for(unsigned long int i = 2; i < pizzas.size(); i++) {
auto content = pizzas[i]->find(".//div[@class='b-c b-text-c b-s b-s-t60 b-s-b60 cf']"); auto content = pizzas[i]->find(".//div[@class='b b-text cf']");
auto name_candidates = content[0]->find(".//h3/text()"); auto name_candidates = content[0]->find(".//h3/text()");
std::string name = nodeToText(name_candidates[0]); std::string name = nodeToText(name_candidates[0]);
auto desc_candidates = content[0]->find(".//p//text()"); auto desc_candidates = content[0]->find(".//p//text()");
std::string desc = nodeToText(desc_candidates[0]); std::string desc = nodeToText(desc_candidates[0]);
auto price_candidates = content[1]->find(".//p/strong/text()"); auto price_candidates = content[1]->find(".//p/strong/text()");
int price = std::stoi(nodeToText(price_candidates[0])); int price = std::stoi(nodeToText(price_candidates[0]));
trim(name); name = trim(name);
trim(desc); desc = trim(desc);
addPermanent(false, name, desc, price); addPermanent(false, name, desc, price);
} }
} }