Nexo78

Untitled

Nov 14th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 10.95 KB | None | 0 0
  1. <?php
  2. /**
  3.  * Copyright (c) 2018.
  4.  * Author NightTrolley
  5.  */
  6.  
  7. require ('../parser/phpQuery-onefile.php');
  8.  
  9. $db_connect = mysqli_connect("localhost", "root", "", "osclass");
  10.  
  11. if(!empty($_POST['url'])){
  12.  
  13. }
  14. else{
  15.     echo "Введите url";
  16.     exit();
  17. }
  18. if(!empty($_POST['page_count'])) {
  19.  
  20.     $i = 1;
  21.     $j = $_POST['page_count'];
  22.     for ($i; $i<=$j; $i++){
  23.         $links[] = $_POST['url'] . '&page=' . $i;
  24.     }
  25.  
  26. }
  27. else{
  28.     echo "Введите кол-во страниц";
  29.     exit();
  30. }
  31.  
  32. $replace = array(
  33.     'Детский мир » ',
  34.     '» Одежда для девочек',
  35.     '» Одежда для мальчиков',
  36.     'Детская одежда »',
  37.     'Одежда для новорожденных',
  38.     'Квартиры, комнаты » ',
  39.     'Дома » ',
  40.     'Посуточная аренда жилья » ',
  41.     'Земля » ',
  42.     '» Audi',
  43.     '» Volkswagen',
  44.     '» Opel',
  45.     'Транспорт » ',
  46.     '» Saab',
  47.     '» Skoda',
  48.     '» Renault',
  49.     '» Ford',
  50.     '» Nissan',
  51.     '» Peugeot',
  52.     '» Hyundai',
  53.     '» Honda',
  54.     '» BMW',
  55.     '» Chevrolet',
  56.     '» Mazda',
  57.     '» Kia',
  58.     '» ВАЗ',
  59.     'и аксессуары » Аксессуары для телефонов',
  60.     'и аксессуары » Мобильные телефоны / смартфоны',
  61.     '» Прочая техника для дома',
  62.     '» Портативная акустика',
  63.     '» Пылесосы',
  64.     'Электроника » ',
  65.     '» Приставки',
  66.     ' и комплектующие » Настольные компьютеры',
  67.     '» Кофеварки / кофемолки',
  68.     'Животные »',
  69.     '» Медицина',
  70.     '» Volvo',
  71.     '» Chery',
  72.     '» Daewoo',
  73.     '» Fiat',
  74.     '» Renault',
  75.     '» Mercedes-Benz',
  76.     '» Dacia',
  77.     '» Subaru',
  78.     '» Toyota',
  79.     '» Suzuki',
  80.     'Все',
  81.     '/ напитки',
  82.     '» Кухонная мебель',
  83.     '» Мебель для гостиной',
  84.     '» Прочие стройматериалы',
  85.     '» Отделочные и облицовочные материалы',
  86.     '» Электроинструмент',
  87.     'Дом и сад »',
  88.     '» Отопление',
  89.     '» Мебель для спальни',
  90.     '» Кирпич и бетон и пеноблоки',
  91.     '» Бензоинструмент',
  92.     '» Офисная мебель'
  93.  
  94. );
  95.  
  96. function curl_content($url){
  97.     $ch = curl_init($url);
  98.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  99.     curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; WinNT; en; rv:1.0.2) Gecko/20030311 Beonex/0.8.2-stable');
  100.     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  101.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  102.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER ,false);
  103.  
  104.     $html=curl_exec($ch);
  105.     unset($url);
  106.     return $html;
  107.  
  108. }
  109.  
  110. function category_replace($cat, $replace){
  111.  
  112.     $slash_replace = str_replace('/', 'и', $cat);
  113.     $replaces = str_replace($replace, '', $slash_replace);
  114.     return trim($replaces);
  115.  
  116. }
  117.  
  118. /**
  119.  * @param $url
  120.  * @param $id
  121.  * @param $token
  122.  * @return array
  123.  */
  124. function get_phone_number($url)
  125. {
  126.     $cookie_path = $_SERVER['DOCUMENT_ROOT'] . '/cookie.dat';
  127.     preg_match('|-ID(.*).html|', $url, $id);
  128.     $olx = curl_init($url);
  129.     curl_setopt($olx, CURLOPT_SSL_VERIFYPEER, false);
  130.     curl_setopt($olx, CURLOPT_RETURNTRANSFER, true);
  131.     curl_setopt($olx, CURLOPT_HEADER, 1);
  132.     curl_setopt($olx, CURLOPT_COOKIEFILE, $cookie_path);
  133.     curl_setopt($olx, CURLOPT_COOKIEJAR, $cookie_path);
  134.     $result = curl_exec($olx);
  135.     $content = $result;
  136.     curl_close($olx);
  137.     preg_match("|phoneToken = '(.*)';|", $result, $token);
  138.     $olx_number = curl_init('https://www.olx.ua/ajax/misc/contact/phone/' . $id[1] . '/?pt=' . $token[1]);
  139.     curl_setopt($olx_number, CURLOPT_HTTPHEADER, [
  140.         'Host: www.olx.ua',
  141.         'Accept: */*',
  142.         'Accept-Language: uk,ru;q=0.8,en-US;q=0.5,en;q=0.3',
  143.         'Accept-Encoding: gzip, deflate, br',
  144.         'Connection: keep-alive',
  145.         'X-Requested-With: XMLHttpRequest'
  146.     ]);
  147.     curl_setopt($olx_number, CURLOPT_REFERER, $url);
  148.     curl_setopt($olx_number, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  149.     curl_setopt($olx_number, CURLOPT_COOKIEFILE, $cookie_path);
  150.     curl_setopt($olx_number, CURLOPT_SSL_VERIFYPEER, false);
  151.     curl_setopt($olx_number, CURLOPT_RETURNTRANSFER, true);
  152.     $result = curl_exec($olx_number);
  153.     curl_close($olx_number);
  154.     unlink( $_SERVER['DOCUMENT_ROOT'].'/cookie.dat');
  155.     $json = json_decode($result);
  156.     return array($content, $json);
  157. }
  158.  
  159. /**
  160.  * @param $db_connect
  161.  * @param $linkimgbd
  162.  */
  163. function get_img($img, $number, $original, $thumbNailsName, $previewsName){
  164.  
  165.     $ch = curl_init($img);
  166.     curl_setopt($ch, CURLOPT_HEADER, 0);
  167.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  168.     curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
  169.     $raw = curl_exec($ch);
  170.     curl_close($ch);
  171.  
  172.     $number_save = $number;
  173.     $fp = fopen($number_save, 'w');
  174.     fwrite($fp, $raw);
  175.     fclose($fp);
  176.  
  177.     $original_save = $original;
  178.     $fp = fopen($original_save, 'w');
  179.     fwrite($fp, $raw);
  180.     fclose($fp);
  181.  
  182.     $thumb_save = $thumbNailsName;
  183.     $fp = fopen($thumb_save, 'w');
  184.     fwrite($fp, $raw);
  185.     fclose($fp);
  186.  
  187.     $preview_save = $previewsName;
  188.     $fp2 = fopen($preview_save, '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.  
  241.         mysqli_query($db_connect, "insert into `oc_t_item_description` (fk_i_item_id, s_title, s_description) values ($id , '$titlebd', '$contentbd')");
  242.  
  243.         if (!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')")){
  244.             printf( mysqli_error($db_connect));
  245.         }
  246.         return $id;
  247.     }
  248. }
  249.  
  250. foreach ($links as $l) {
  251.     set_time_limit(0);
  252.     $html = curl_content($l);
  253.     phpQuery::newDocument($html);
  254.     $menu = pq('#offers_table')->find('.breakword');
  255.     $prices = pq('.space')->find('a.detailsLink');
  256.     $cat = pq('color-9')->find('.color-9>small')->text();
  257.  
  258.     foreach ($menu as $res) {
  259.  
  260.         $pqres = pq($res);
  261.         $linkarray = $pqres->find('a')->attr('href');
  262.         $pricearray = $pqres->find('p.price>strong')->text();
  263.         $title = $pqres->find('a.marginright5>strong')->text();
  264.         $cat = $pqres->find('.color-9>small')->text();
  265.         $url = $linkarray;
  266.  
  267.         list($content, $json) = get_phone_number($url);
  268.  
  269.         phpQuery::newDocument($content);
  270.         $htmlcon = pq('#textContent>p')->text();
  271.         $big_img = pq('.photo-glow')->find('img')->attr('src');
  272.  
  273.         $img_array = array();
  274.         foreach (pq('.tcenter>.photo-glow')->find('img') as $imgs) {
  275.             $imgs = pq($imgs)->attr('src');
  276.             $img_array[] = $imgs;
  277.  
  278.         }
  279.  
  280.         $name = pq('.offer-user__details>h4')->find('a')->text();
  281.         $location = pq('.offer-titlebox__details')->find('.show-map-link')->text();
  282.         phpQuery::newDocument($json->value);
  283.         $tel = pq('span')->text();
  284.  
  285.         if (empty($tel)) {
  286.             $tel = $json->value;
  287.         }
  288.  
  289.         $resarray = array(
  290.             'link' => $linkarray,
  291.             'price' => $pricearray,
  292.             'title' => $title,
  293.             'tel' => $tel,
  294.             'content' => $htmlcon,
  295.             'name' => $name,
  296.         );
  297.  
  298.         $linkbd = $resarray['link'];
  299.         $pricebd = $resarray['price'];
  300.         $titlebd = $resarray['title'];
  301.         $telbd = $resarray['tel'];
  302.         $namedb = $resarray['name'];
  303.         $contentbd = $resarray['content'];
  304.  
  305.         $r = price_replace($pricebd);
  306.  
  307.         $rep = category_replace($cat, $replace);
  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.                 $feth = insert_querys($db_connect, $titlebd, $r, $namedb, $contentbd, $telbd, $t[0], $reg, $c, $reg_name, $city_name);
  326.                 createImage($img_array, $feth);
  327.  
  328.             }
  329.         }
  330.     }
  331.  
  332. function createImage($imgs,$node_id){
  333.  
  334.     global $db_connect;
  335.     $path = '../dpm/oc-content/uploads/28/';
  336.     if(!is_array($imgs)){ // Только массивы!
  337.         return ;
  338.     }
  339.     foreach ($imgs as $key=>$img){
  340.         if (!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.             printf( mysqli_error($db_connect));
  342.         }
  343.         $id = mysqli_insert_id($db_connect);
  344.         $file_name = $id;
  345.         $number = $path . $file_name . '.jpg';
  346.         $original = $path . $file_name . '_original' . '.jpg';
  347.         $thumbNailsName = $path . $file_name.'_thumbnail'.'.jpg';
  348.         $previewsName = $path . $file_name.'_preview'.'.jpg';
  349.         get_img($img, $number, $original, $thumbNailsName, $previewsName);
  350.        
  351.     }
  352. }
  353. ?>
Add Comment
Please, Sign In to add comment