Почему берутся только новые товары?

318
23 февраля 2018, 19:29
<?php
$settings = parse_ini_file(__DIR__ . '/settings.ini');
function request( $url, $input = [] ) {
    $ch = curl_init();
    $opts = [
        CURLOPT_URL         => $url,
        CURLOPT_USERAGENT   => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36',
        CURLOPT_SSL_VERIFYPEER => 0,
        CURLOPT_SSL_VERIFYHOST => 0,
        CURLOPT_RETURNTRANSFER => 1,
    ];
    curl_setopt_array($ch, $opts);
    if( isset($input['post']) ) {
        curl_setopt($ch, CURLOPT_POST, 1);
        if( isset($input['postfields']) ) {
            #$opts[CURLOPT_POSTFIELDS] = $input['postfields'];
            curl_setopt($ch, CURLOPT_POSTFIELDS, $input['postfields']);
        }
    }
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

header('Content-type: text/plain; charset=utf-8');
require_once __DIR__ . '/inc/boot.php';
require_once __DIR__ . '/inc/EPN_Link.php';
$done = file_get_contents(__DIR__ . '/complete.links');
$content = file_get_contents( $settings['ali']['url'] );
#file_put_contents('ali.html', $content);
#$content = file_get_contents('ali.html');
require __DIR__ . '/inc/phpQuery-onefile.php';
$links = [];
$doc = phpQuery::newDocument($content);
foreach(pq('li.list-item') as $li) {
    $el = pq($li);
    $link = [];
    $link['url'] = 'http:' . $el->find('a.product')->attr('href') . PHP_EOL;
    $link['img'] = '';
    $im_el = pq($el->find('img.picCore'));
    if( $im_el->attr('src') ) {
        $link['img'] = 'http:' . $im_el->attr('src');
    }elseif( $im_el->attr('image-src') ) {
        $link['img'] = 'http:' . $im_el->attr('image-src');
    }else continue;
    $link['text'] = $el->find('a.product')->text();
    $link['id'] = $el->find('a.atwl-button')->attr('data-product-id');
    $links []= $link;
}
foreach( $links as $link ) {
    if( mb_strpos($done, $link['id'] . '-') !== FALSE ) {
        echo $link['id'] . ' already done' . PHP_EOL;
        continue;
    }
    if( $post = createPost($link) ) {
        echo 'Post #' . $post . ' Created' . PHP_EOL;
        file_put_contents(__DIR__ . '/complete.links', $link['id'] . '-' . PHP_EOL, FILE_APPEND);
        break;
    }
}
function createPost( $link ) {
    global $settings;
    $img = file_put_contents('photo.jpg', file_get_contents($link['img']));
    // EPN
    $epn = new EPN_Link($settings['epn']['login'], $settings['epn']['password']);
    $epn_link = $epn->create($link['text'], $link['url']);
    $epn_link = $epn->shortLink($epn_link);
    if( !$epn_link ) {
        echo 'Bad EPN Link' . PHP_EOL;
        return false;
    }
    // Saving VK post
    $response = request('https://api.vk.com/method/photos.getWallUploadServer?' . http_build_query([
            'group_id'      => str_replace('-', '', $settings['vk']['group']),
            'access_token'  => $settings['vk']['token'],
            'v'             => '5.68'
        ]));
    if( !$json = json_decode($response) ) {
        echo '[error] Cannot get upload server : ' . $response . PHP_EOL;
        return false;
    }
    if( !isset($json->response->upload_url) ) {
        echo '[error] Cannot get upload server : ' . $response . PHP_EOL;
        return false;
    }
    $upload_server = $json->response->upload_url;
    $file = new CURLFile(realpath(__DIR__ . '/photo.jpg'));
    $ch = curl_init($upload_server);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, array(
        'photo' => $file
    ));
    $upload_data = curl_exec($ch);
    curl_close($ch);
    if( !$json = json_decode($upload_data) ) {
        echo '[error] Upload bad response : ' . $upload_data . PHP_EOL;
        return false;
    }
    if( !isset($json->photo) || empty($json->photo) || $json->photo == '[]') {
        echo '[error] Empty photos';
        return false;
    }
    $response = request('https://api.vk.com/method/photos.saveWallPhoto?' . http_build_query([
            'server'        => $json->server,
            'photo'         => $json->photo,
            'hash'          => $json->hash,
            'group_id'      => str_replace('-', '', $settings['vk']['group']),
            'access_token'  => $settings['vk']['token'],
            'v'             => '5.68'
        ]));
    if( !$json = json_decode($response) ) {
        echo '[error] Save photo error : ' . $response . PHP_EOL;
        return false;
    }
    $url = 'https://api.vk.com/method/wall.post?' . http_build_query([
            'access_token'  => $settings['vk']['token'],
            'v'             => '5.68'
        ]);
    $params = [
        'owner_id'      => $settings['vk']['group'],
        'from_group'    => 1,
        'message'       => 'Купить - ' . $epn_link, //$links[0]['text'],
        'attachments'   => 'photo' . $json->response[0]->owner_id . '_' . $json->response[0]->id// . ',' . $epn_link
    ];
    $response = request( $url , [
        'post'          => 1,
        'postfields'    => $params
    ] );
    if( !$json = json_decode($response) ) {
        echo '[error] Post not created : ' . $response . PHP_EOL;
        return false;
    }
    if( !isset($json->response->post_id) ) {
        echo '[error] Post ID not found : ' . $response . PHP_EOL;
        return false;
    }
    return $json->response->post_id;
}
READ ALSO
wordpress custom page list categories exclude

wordpress custom page list categories exclude

Please help me with this

224
Сортировка русских дат

Сортировка русских дат

Добрый день, возникла проблема такого характераИспользуется SQLite, мне нужно сортировать дату на русской локализации(с английской все ок отрабатывает)...

233
Curl+php не получает данные

Curl+php не получает данные

Почему не получается получить данные?

248
Помогите пожлуста [требует правки]

Помогите пожлуста [требует правки]

Необходимо разработать универсальный класс поиска пользователейНа входе передаются фильтры поиска в определенном вами формате

273