Nexo78

Untitled

Nov 6th, 2018
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 11.29 KB | None | 0 0
  1. <?php
  2. /**
  3.  * Copyright (c) 2018.
  4.  * Author NightTrolley
  5.  */
  6. require ('../parser/phpQuery-onefile.php');
  7.  
  8. $db_connect = mysqli_connect("localhost", "h134194_a", "12345aZ", "h134194_a");
  9. if (!mysqli_set_charset($db_connect, "utf8")) {
  10.     printf("Ошибка при загрузке набора символов utf8: %s\n", mysqli_error($db_connect));
  11.     exit();
  12. } else {
  13.     printf("Текущий набор символов: %s\n", mysqli_character_set_name($db_connect));
  14. }
  15. if($db_connect)
  16. echo 'Соединение установлено.';
  17. else
  18. die('Ошибка подключения к серверу баз данных.');
  19. if(!empty($_POST['url'])){
  20.  
  21. }
  22. else{
  23.     echo "Введите url";
  24.     exit();
  25. }
  26. if(!empty($_POST['page_count'])) {
  27.  
  28.     $i = 1;
  29.     $j = $_POST['page_count'];
  30.     for ($i; $i<=$j; $i++){
  31.         $links[] = $_POST['url'] . '&page=' . $i;
  32.     }
  33.  
  34. }
  35. else{
  36.     echo "Введите кол-во страниц";
  37.     exit();
  38. }
  39.  
  40. $replace = array(
  41.     'Детский мир » ',
  42.     '» Одежда для девочек',
  43.     '» Одежда для мальчиков',
  44.     'Детская одежда »',
  45.     'Одежда для новорожденных',
  46.     'Квартиры, комнаты » ',
  47.     'Дома » ',
  48.     'Посуточная аренда жилья » ',
  49.     'Земля » ',
  50.     '» Audi',
  51.     '» Volkswagen',
  52.     '» Opel',
  53.     'Транспорт » ',
  54.     '» Saab',
  55.     '» Skoda',
  56.     '» Renault',
  57.     '» Ford',
  58.     '» Nissan',
  59.     '» Peugeot',
  60.     '» Hyundai',
  61.     '» Honda',
  62.     '» BMW',
  63.     '» Chevrolet',
  64.     '» Mazda',
  65.     '» Kia',
  66.     '» ВАЗ',
  67.     'и аксессуары » Аксессуары для телефонов',
  68.     'и аксессуары » Мобильные телефоны / смартфоны',
  69.     '» Прочая техника для дома',
  70.     '» Портативная акустика',
  71.     '» Пылесосы',
  72.     'Электроника » ',
  73.     '» Приставки',
  74.     ' и комплектующие » Настольные компьютеры',
  75.     '» Кофеварки / кофемолки',
  76.     'Животные »',
  77.     '» Медицина',
  78.     '» Volvo',
  79.     '» Chery',
  80.     '» Daewoo',
  81.     '» Fiat',
  82.     '» Renault',
  83.     '» Mercedes-Benz',
  84.     '» Dacia',
  85.     '» Subaru',
  86.     '» Toyota',
  87.     '» Suzuki',
  88.     'Все',
  89.     '/ напитки',
  90.     '» Кухонная мебель',
  91.     '» Мебель для гостиной',
  92.     '» Прочие стройматериалы',
  93.     '» Отделочные и облицовочные материалы',
  94.     '» Электроинструмент',
  95.     'Дом и сад »',
  96.     '» Отопление',
  97.     '» Мебель для спальни',
  98.     '» Кирпич и бетон и пеноблоки',
  99.     '» Бензоинструмент',
  100.     '» Офисная мебель'
  101.  
  102. );
  103.  
  104. function curl_content($url){
  105.     $ch = curl_init($url);
  106.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  107.     curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; WinNT; en; rv:1.0.2) Gecko/20030311 Beonex/0.8.2-stable');
  108.     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  109.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  110.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER ,false);
  111.  
  112.     $html=curl_exec($ch);
  113.     unset($url);
  114.     return $html;
  115.  
  116. }
  117.  
  118. function category_replace($cat, $replace){
  119.  
  120.     $slash_replace = str_replace('/', 'и', $cat);
  121.     $replaces = str_replace($replace, '', $slash_replace);
  122.     return trim($replaces);
  123.  
  124. }
  125.  
  126. /**
  127.  * @param $url
  128.  * @param $id
  129.  * @param $token
  130.  * @return array
  131.  */
  132. function get_phone_number($url)
  133. {
  134.     $cookie_path = $_SERVER['DOCUMENT_ROOT'] . '/cookie.dat';
  135.     preg_match('|-ID(.*).html|', $url, $id);
  136.     $olx = curl_init($url);
  137.     curl_setopt($olx, CURLOPT_SSL_VERIFYPEER, false);
  138.     curl_setopt($olx, CURLOPT_RETURNTRANSFER, true);
  139.     curl_setopt($olx, CURLOPT_HEADER, 1);
  140.     curl_setopt($olx, CURLOPT_COOKIEFILE, $cookie_path);
  141.     curl_setopt($olx, CURLOPT_COOKIEJAR, $cookie_path);
  142.     $result = curl_exec($olx);
  143.     $content = $result;
  144.     curl_close($olx);
  145.     preg_match("|phoneToken = '(.*)';|", $result, $token);
  146.     $olx_number = curl_init('https://www.olx.ua/ajax/misc/contact/phone/' . $id[1] . '/?pt=' . $token[1]);
  147.     curl_setopt($olx_number, CURLOPT_HTTPHEADER, [
  148.         'Host: www.olx.ua',
  149.         'Accept: */*',
  150.         'Accept-Language: uk,ru;q=0.8,en-US;q=0.5,en;q=0.3',
  151.         'Accept-Encoding: gzip, deflate, br',
  152.         'Connection: keep-alive',
  153.         'X-Requested-With: XMLHttpRequest'
  154.     ]);
  155.     curl_setopt($olx_number, CURLOPT_REFERER, $url);
  156.     curl_setopt($olx_number, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  157.     curl_setopt($olx_number, CURLOPT_COOKIEFILE, $cookie_path);
  158.     curl_setopt($olx_number, CURLOPT_SSL_VERIFYPEER, false);
  159.     curl_setopt($olx_number, CURLOPT_RETURNTRANSFER, true);
  160.     $result = curl_exec($olx_number);
  161.     curl_close($olx_number);
  162.    
  163.     $json = json_decode($result);
  164.     var_dump($json);
  165.     // unlink( $_SERVER['DOCUMENT_ROOT'].'/cookie.dat');
  166.     return array($content, $json);
  167. }
  168.  
  169. /**
  170.  * @param $db_connect
  171.  * @param $linkimgbd
  172.  */
  173. function get_img($img, $thumb, $preview){
  174.  
  175.     $ch = curl_init($img);
  176.     curl_setopt($ch, CURLOPT_HEADER, 0);
  177.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  178.     curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
  179.     $raw = curl_exec($ch);
  180.     curl_close($ch);
  181.  
  182.     $saveto1 = $thumb;
  183.     $fp = fopen($saveto1, 'w');
  184.     fwrite($fp, $raw);
  185.     fclose($fp);
  186.  
  187.     $saveto2 = $preview;
  188.     $fp2 = fopen($saveto2, 'w');
  189.     fwrite($fp2, $raw);
  190.     fclose($fp2);
  191.  
  192. }
  193.  
  194. /**
  195.  * @param $pricebd
  196.  * @param $titlebd
  197.  * @return string
  198.  */
  199. function price_replace($pricebd)
  200. {
  201.     $price_replace = str_replace(" грн.", "", $pricebd);
  202.     $r = str_replace(' ', '', $price_replace) . '000000';
  203.     return $r;
  204. }
  205.  
  206. function country ($db_connect, $location){
  207.  
  208.     $explode = explode(",", $location);
  209.  
  210.     $city = trim($explode[0]);
  211.     $reg = trim($explode[1]);
  212.     $region_sql = mysqli_query($db_connect, "select pk_i_id from oc_t_region where s_name = '$reg'");
  213.     $city_sql = mysqli_query($db_connect, "select pk_i_id from oc_t_city where s_name = '$city'");
  214.     $region_res = mysqli_fetch_all($region_sql);
  215.     $city_res = mysqli_fetch_all($city_sql);
  216.  
  217.     return array($region_res, $city_res, $reg, $city);
  218.  
  219. }
  220.  
  221. /**
  222.  * @param $db_connect
  223.  * @param $titlebd
  224.  * @param $r
  225.  * @param $namedb
  226.  * @param $contentbd
  227.  * @param $telbd
  228.  * @param $img_name
  229.  */
  230. function insert_querys($db_connect, $titlebd, $r, $namedb, $contentbd, $telbd, $t, $reg, $c, $reg_name, $city_name)
  231. {
  232.     $select_query = mysqli_query($db_connect, "select s_title from `oc_t_item_description`");
  233.     $query_res = mysqli_fetch_all($select_query, MYSQLI_ASSOC);
  234.     $time = date('Y-m-d H:i:s');
  235.  
  236.     if ($query_res !== $titlebd) {
  237.  
  238.         mysqli_query($db_connect, "insert into `oc_t_item` (fk_i_category_id, dt_pub_date, i_price, fk_c_currency_code, s_contact_name, b_active) values ( '$t', '$time', '$r', 'GRN','$namedb', '1' )");
  239.         $id = mysqli_insert_id($db_connect);
  240.         mysqli_query($db_connect, "insert into `oc_t_item_description` (fk_i_item_id, s_title, s_description) values ($id , '$titlebd', '$contentbd')");
  241.         mysqli_query($db_connect, "insert into `oc_t_item_location` (fk_i_item_id, fk_i_region_id, fk_i_city_id, s_city_area, fk_c_country_code, s_country, s_region, s_city) values ('$id', '$reg', '$c', '$telbd', 'UA', 'Ukraine', '$reg_name', '$city_name')");
  242.         mysqli_query($db_connect, "insert into `oc_t_item_resource` (fk_i_item_id, s_name, s_extension, s_content_type, s_path) values ($id, 'img', 'jpg', 'image/jpeg',  'oc-content/uploads/28/')");
  243.         $sel = mysqli_query($db_connect, "select pk_i_id from oc_t_item_resource where `fk_i_item_id` = $id");
  244.         $feth = mysqli_fetch_all($sel);
  245.         return $feth;
  246.     }
  247. }
  248.  
  249. foreach ($links as $l) {
  250.     set_time_limit(0);
  251.     $html = curl_content($l);
  252.     phpQuery::newDocument($html);
  253.     $menu = pq('#offers_table')->find('.breakword');
  254.     $prices = pq('.space')->find('a.detailsLink');
  255.     $cat = pq('color-9')->find('.color-9>small')->text();
  256.  
  257.     foreach ($menu as $res) {
  258.  
  259.         $pqres = pq($res);
  260.         $linkarray = $pqres->find('a')->attr('href');
  261.         $pricearray = $pqres->find('p.price>strong')->text();
  262.         $title = $pqres->find('a.marginright5>strong')->text();
  263.         $cat = $pqres->find('.color-9>small')->text();
  264.         $url = $linkarray;
  265.  
  266.         list($content, $json) = get_phone_number($url);
  267.  
  268.         phpQuery::newDocument($content);
  269.         $htmlcon = pq('#textContent>p')->text();
  270.         $big_img = pq('.photo-glow')->find('img')->attr('src');
  271.  
  272.         $imgs_array = array();
  273.         foreach (pq('.tcenter>.photo-glow')->find('img') as $imgs) {
  274.             $imgs = pq($imgs)->attr('src');
  275.             $imgs_array[] = $imgs;
  276.  
  277.         }
  278.  
  279.         $name = pq('.offer-user__details>h4')->find('a')->text();
  280.         $location = pq('.offer-titlebox__details')->find('.show-map-link')->text();
  281.         phpQuery::newDocument($json->value);
  282.         $tel = pq('span')->text();
  283.  
  284.         if (empty($tel)) {
  285.             $tel = $json->value;
  286.         }
  287.  
  288.         $resarray = array(
  289.             'link' => $linkarray,
  290.             'price' => $pricearray,
  291.             'title' => $title,
  292.             'tel' => $tel,
  293.             'content' => $htmlcon,
  294.             'name' => $name,
  295.         );
  296.  
  297.         $linkbd = $resarray['link'];
  298.         $pricebd = $resarray['price'];
  299.         $titlebd = $resarray['title'];
  300.         $telbd = $resarray['tel'];
  301.         $namedb = $resarray['name'];
  302.         $contentbd = $resarray['content'];
  303.  
  304.         $r = price_replace($pricebd);
  305.  
  306.         $rep = category_replace($cat, $replace);
  307.    
  308.         $sql = mysqli_query($db_connect, "SELECT `fk_i_category_id`, `s_name` FROM `oc_t_category_description` WHERE s_name ='$rep'");
  309.         $result = mysqli_fetch_all($sql);
  310.         list($reg_num, $city_num, $reg_name, $city_name) = country($db_connect, $location);
  311.  
  312.         foreach ($reg_num as $region) {
  313.             foreach ($region as $reg) {
  314.  
  315.             }
  316.         }
  317.  
  318.         foreach ($city_num as $city) {
  319.             foreach ($city as $c) {
  320.  
  321.             }
  322.         }
  323.  
  324.         foreach ($result as $t) {
  325.            
  326.                 $feth = insert_querys($db_connect, $titlebd, $r, $namedb, $contentbd, $telbd, $t[0], $reg, $c, $reg_name, $city_name);
  327.                 bbbb($imgs_array, $feth[0][0]);
  328.  
  329.             }
  330.         }
  331.     }
  332.     function bbbb($imgs, $node_id)
  333.     {
  334.         global $db_connect;
  335.         $path = '../oc-content/uploads/28/';
  336.         if (!is_array($imgs)) {
  337.             return;
  338.         }
  339.         foreach ($imgs as $key => $img) {
  340.             mysqli_query($db_connect, "insert into oc_t_item_resource (fk_i_item_id, s_name, s_extension, s_content_type, s_path) values ($node_id, 'img', 'jpg', 'image/jpeg',  'oc-content/uploads/28/')");
  341.             $id = mysqli_insert_id($db_connect);
  342.             $file_name = $id;
  343.             $thumbNailsName = $path . $file_name . '_thumbnail' . '.jpg';
  344.             $previewsName = $path . $file_name . '_preview' . '.jpg';
  345.             get_img($img, $thumbNailsName, $previewsName);
  346.  
  347.         }
  348.  
  349.     }
  350. ?>
Advertisement
Add Comment
Please, Sign In to add comment