loadHTML($html); @$dom->loadHTML(mb_convert_encoding(@$html, 'HTML-ENTITIES', 'UTF-8')); return element_to_obj($dom->documentElement); } function element_to_obj($element) { @$obj = array("tag" => @$element->tagName); foreach (@$element->attributes as $attribute) { $obj[$attribute->name] = $attribute->value; } foreach ($element->childNodes as $subElement) { if ($subElement->nodeType == XML_TEXT_NODE) { $obj["html"] = $subElement->wholeText; } else { $obj["children"][] = element_to_obj($subElement); } } return $obj; } // https://www.bober-stroy.ru//stroymaterialy/izolyatsionnye_materialy_1/paklya_dzhut_mezhventsovyy_uteplitel_1/ /* ищет str в txt если находит, возвращает единичку */ function findtxt($txt, $str) { $pos1 = stripos($txt, $str); if ($pos1 === false) return 0; else return 1; } function add_link($html) { preg_match_all("/<[Aa][\s]{1}[^>]*[Hh][Rr][Ee][Ff][^=]*=[ '\"\s]*([^ \"'>\s#]+)[^>]*>/", $html, $matches); $urls = $matches[1]; // Берём то место, где сама ссылка (благодаря группирующим скобкам в регулярном выражении) /* Выводим все ссылки */ for ($j = 0; $j < count($urls); $j++) { $link = $urls[$j]; if (findtxt($link, 'https://www.deznet.ru') == 0) $link = 'https://www.deznet.ru' . leopak($link); $id = DB::getValue("SELECT `id` FROM `sm2` WHERE `link` LIKE '%" . $link . "' LIMIT 1"); if (!$id) DB::add("INSERT INTO `sm2` (`link`, `status`) VALUES (?, ?)", array($link, 1)); } } function generate_password($number) { $arr = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'v', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'); $pass = ""; for ($i = 0; $i < $number; $i++) { $index = rand(0, count($arr) - 1); $pass .= $arr[$index]; } return $pass; } function setTovarCategory($massiv) { $idp = 0; for ($i = 0; $i < count($massiv); $i++) { unset($id); if ($massiv[$i]['children'][1]['children'][0]['html']) $cat = $massiv[$i]['children'][1]['children'][0]['html']; //echo $cat . "\n"; if ($cat) { $id = DB::getValue("SELECT `id` FROM `tovar_category` WHERE `title`='" . $cat . "' LIMIT 1"); if (!$id) { // echo "no\n"; $idp = DB::add("INSERT INTO `tovar_category` (`title`, `category`) VALUES (?, ?)", array($cat, $idp)); } } } $id = DB::getValue("SELECT `id` FROM `tovar_category` WHERE `title`='" . $cat . "' LIMIT 1"); //echo $id; return $id; } $LinkList = DB::getAll("SELECT `id`, `link`, `html` FROM `donorLinks` WHERE `status`=0 AND `html` IS NOT NULL AND LINK LIKE 'https://market.leopak.ru/products/%-%' ORDER BY RAND() LIMIT 7000"); for ($i = 0; $i < count($LinkList); $i++) { $html = gzuncompress(base64_decode($LinkList[$i]['html'])); //$html=file_get_contents('9022-01'); $a = html_to_obj($html); $category = setTovarCategory($a['children'][1]['children'][0]['children'][13]['children'][1]['children'][0]['children'][0]['children'][2]['children'][1]['children'][0]['children']); $title = $a['children'][1]['children'][0]['children'][13]['children'][1]['children'][0]['children'][0]['children'][2]['children'][0]['children'][0]['children'][0]['html']; $artikul = trim($a['children'][1]['children'][0]['children'][13]['children'][1]['children'][0]['children'][0]['children'][2]['children'][2]['children'][0]['children'][0]['children'][1]['children'][1]['html']); $cena = $a['children'][1]['children'][0]['children'][13]['children'][1]['children'][0]['children'][0]['children'][2]['children'][3]['children'][1]['children'][0]['children'][0]['children'][3]['children'][0]['children'][0]['children'][0]['content']; $img = $a['children'][1]['children'][0]['children'][13]['children'][1]['children'][0]['children'][0]['children'][2]['children'][3]['children'][0]['children'][0]['children'][0]['children'][0]['href']; if ($cena && $title) { $cena = $cena * 1.5; $tovar_id=DB::getValue("SELECT `id` FROM `tovar` WHERE `title`=? AND `artikul`=?", array($title, $artikul)); if ($tovar_id){//Есть, обновляем инфу - цену, картинку, категорию DB::set("DELETE FROM `tovar_img` WHERE `tovar_id`=?", $tovar_id); $fn=generate_password(30); //$dst='/home/cloud/core/img/tk-ligat.ru/tovar' . $fn . '.jpg'; //$src=$img; exec("wget " . $img . " -O /home/cloud/core/img/tk-ligat.ru/tovar/" . $fn . ".jpg"); DB::add("INSERT INTO `tovar_img` (`filename`, `tovar_id`) VALUES (?, ?)", array($fn, $tovar_id)); DB::set("UPDATE `tovar` SET `status`=1, `category`=? WHERE `id`=?", array($category, $tovar_id)); }else{//Добавляем $tovar_id=DB::add("INSERT INTO `tovar` (`title`, `artikul`, `donor`, `status`, `category`) VALUES (?, ?, ?, 1, ?)", array($title, $artikul, $LinkList[$i]['link'], $category)); //Загружаем картинку: $fn=generate_password(30); //$dst='/home/cloud/core/img/tk-ligat.ru/tovar' . $fn . '.jpg'; //$src=$img; exec("wget " . $img . " -O /home/cloud/core/img/tk-ligat.ru/tovar/" . $fn . ".jpg"); DB::add("INSERT INTO `tovar_img` (`filename`, `tovar_id`) VALUES (?, ?)", array($fn, $tovar_id)); //Сверяем цену, если не совпадает - обновляем // $cena_id=DB::getValue("SELECT `id` FROM `tovar_price_history` WHERE `tovar_id`=? AND `cena`=? AND `status`=1 ORDER BY `t` DESC LIMIT 1", array($tovar_id, $cena)); } //ищем товар, если не находим, добавляем } DB::set("UPDATE `donorLinks` SET `status`=2 WHERE `id`=?", $LinkList[$i]['id']); } ?>