<?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;
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей