• Как автоматом удалять пост со стены группы вконтакте если не сделан репост (защита от спама)?

    @2gaap Автор вопроса
    На основе вот этого - www.bubasik.com/skript-php-dlya-vkontakta-avto-uda...

    Сделал так:
    - Callback от группы о новом посте
    - Берется id пользователя нового поста и проверяется делал ли он репост поста (которого нужно репостнуть) по wall.getReposts
    - Если не делал то пишется комментарий к его посту и через несколько секунд пост удаляется.

    $ch_search_vk = curl_init( "https://api.vk.com/method/wall.getReposts?owner_id=-номер_группы&v=5.0&count=100&post_id=номер_поста_который_должны_репостнуть" );
                  curl_setopt ( $ch_search_vk, CURLOPT_HEADER, false );
                  curl_setopt ( $ch_search_vk, CURLOPT_RETURNTRANSFER, true );
                  curl_setopt ( $ch_search_vk, CURLOPT_SSL_VERIFYPEER, false );
                  $search_vk = curl_exec($ch_search_vk);
                  curl_close($ch_search_vk);
                  $search_vk=json_decode($search_vk);
                  
    $search_result_massiv = $search_vk->response->items;
    
    $count_massiv = count($search_result_massiv);
    
    //перебираем массив
        for ($i=0; $i<$count_massiv; $i++)
            {
            if ($search_result_massiv[$i]->from_id == $user_id) {
                //нашли совпадение
                $search_result="1";
                $log_text = "$today ok - search_result = $search_result, user id = $user_id, $text_post";
                }
            }


    Сделал дополнение, которое проверяет на репост заданной записи, если нет репоста то пишется комментарий от имени группы к посту пользователя а потом через 9 секунд пост пользователя удаляется. Код тут - https://pastebin.com/KjbTd1kz
    Ответ написан
    Комментировать
  • Парсинг аккаунтов инстаграма по определенному местоположению?

    @2gaap
    Вот нашел такой пример на php

    php код отлично работает на phpfiddle.org

    <?php
    
    //переменные
    $url_parser="https://www.instagram.com/explore/locations/123456/"; //ссылка для парсинга
    $glubina_stranic="10"; //глубина парсинга, на одной странице 20 id пользователей
    
    class instaWrapper {
    static function getFeedByUrl($url) {
    $source = file_get_contents($url);
    if ($source == false) {
    echo "Connection problem";
    die();
    }
    $shards = explode('window._sharedData = ', $source);
    $insta_json = explode(';</script>', $shards[1]);
    $insta_array = json_decode($insta_json[0], TRUE);
    if (isset($insta_array['entry_data']['ProfilePage']))
    $nodes = $insta_array['entry_data']['ProfilePage'][0]['user']['media']['nodes'];
    elseif (isset($insta_array['entry_data']['LocationsPage']))
    $nodes = $insta_array['entry_data']['LocationsPage'][0]['location']['media']['nodes'];
    elseif (isset($insta_array['entry_data']['TagPage']))
    $nodes = $insta_array['entry_data']['TagPage'][0]['tag']['media']['nodes'];
    $result=[];
    foreach($nodes as $item) {
    $result[]=[
    "id" => $item['id'],
    "code" => $item['code'],
    "url" => "https://www.instagram.com/p/".$item['code'],
    "timestamp" => $item['date'],
    "date" => date("d.m.Y H:i:s", $item['date']),
    "caption" => (isset($item['caption'])?$item['caption']:false),
    "owner_id" => $item['owner']['id'],
    "thumbnail_src" => $item['thumbnail_src'],
    "image_src" => $item['display_src'],
    "is_video" => (boolean)$item['is_video'],
    "dimensions" => $item['dimensions']
    ];
    }
    return $result;
    }
    }
    
    $insta_massiv = (
    instaWrapper::getFeedByUrl("$url_parser")
    );
    for ($i = 1; $i < count($insta_massiv); $i++) 
    { 
    echo $insta_massiv[$i]['owner_id']."<br>";
    $last_id_anketa = $insta_massiv[$i]['id']; 
    }
    $x=0;
    while ($x++<$glubina_stranic) 
    {
    $insta_massiv = (
    instaWrapper::getFeedByUrl("$url_parser?max_id=$last_id_anketa")
    ); 
    for ($i = 1; $i < count($insta_massiv); $i++) 
    { 
    echo $insta_massiv[$i]['owner_id']."<br>";
    $last_id_anketa = $insta_massiv[$i]['id']; 
    }
    }
    ?>


    Источник: www.bubasik.com/php-parser-in...m-po-geometke

    У скрипта только 2 параметра:
    - Ссылка для парсинга, её можно взять зайдя на сайт инстаграм, ввести адрес или свой город и получить ссылку в адресной строке браузера
    - Глубина парсинга, число до какой страницы собирайть id пользователей.

    attachment.php?attachmentid=161819&stc=1

    Дополнено:
    Изменил слегка скрипт — теперь выводит текст постов. Код тут — https://pastebin.com/0SRAMPMs
    Также запустить код online можно на сервисе — phpfiddle.org
    Ответ написан
    Комментировать