lunch-rest/parsers/udrevaka.cpp

38 lines
1.3 KiB
C++

#include "parsers.hpp"
#include "../network/network.hpp"
#include "../htmlparser.hpp"
void LunchRest::UDrevakaParser::parse() {
clearMenus();
int menu_index = 0;
Request r;
auto html = r.get(_url);
if(html == "")
return;
HtmlParser hparse(html);
auto &root = hparse.getRoot();
auto days = root.find("//li[@class='item-day']");
for(auto &day : days) {
auto meals = day->find("./div[@class='row']");
for(auto meal : meals) {
auto divs = meal->find(".//div/text()");
Meal meal_obj{};
std::string name = dynamic_cast<const xmlpp::ContentNode *>(divs[0])->get_content();;
auto soup_pos = name.find("Polévka");
if(soup_pos != std::string::npos) {
meal_obj.setSoup();
meal_obj.setName(name.substr(10, name.find('(') - 11));
} else {
meal_obj.setName(name.substr(3, name.find('(') - 4));
}
if(divs.size() > 1) {
std::string price = dynamic_cast<const xmlpp::ContentNode *>(divs[1])->get_content();;
meal_obj.setPrice(std::stoi(price));
}
menus[menu_index].addMeal(meal_obj);
menus[menu_index].setInvalidMenu(false);
}
menu_index++;
}
}