Вконтакте и зеннопостер

  • Автор темы Автор темы Dailes
  • Дата начала Дата начала
Нужно в скайп открытый парсер кинуть , чтоб можно было доковырять критерии.
Archie_07.gif
 
  • Оценить
Реакции: gluckbahr
У меня комплексное решение и всё исключительно через API.

Рассылка по : Группам, Обсуждениям, Личка, Видео, Уведомления.
Если правильно применять, то и все равно, если банить будут. Главное какой результат от рассылок.
Сейчас в процессе докручу рассылку по альбомам, посмотри как реакция.

В Целом качество API гораздо больше доволен:

1) Скорость
2) Нету глюков постоянных из-за зенки, в плане если эмулировать через браузер.

Например взяли рассылку по личным сообщениям, и отослали моментально кучу сообщений, именно тем, кто сейчас онлайн и получается нормальный выхлоп. Ну группы или обсуждения/видео более бюджетный способ, тоже с хорошим выхлопом.

Тут скорее правильное понимание использования инструмент, а не способ как реализовывать) Ведь важно то, что на выходе получиться, в данном случае результат, например в виде заявок с сайта ;) Тут уже надо маркетинг подключать грамотный к поиску и сбора ЦА и взаимодействию с ними.
 
  • Оценить
Реакции: Roman*
Ребят, помогите пожалуйста разобраться с загрузкой фотографий на стену группы через api? И правильно ли я начинаю работать с api?
 

Вложения

Ребята кто может помочь со снипетов ращепления ссылок
сюжет
получает ссылку из списка apiRequestsX и число из {-Variable.resultsInRecentRequest-}
результат: в конец списка дописать варианты частичного ращепление
если в ссылке не указан пол или указан 0 то ращепить эту ссылку на тот же вариант но с sex=1 и sex=0
Но сейчас получается что он ращепляет ссылку https://api.vk.com/method/users.sea...e_from=14&age_to=14&has_photo=1&access_token=
на перебирая все месяца
https://api.vk.com/method/users.sea...has_photo=1&sex=2&birth_month=1&access_token=

ЕСЛИ интересно стучите в скайп GLUCKBAHR, добавлю в конфу!

Код:
Развернуть Свернуть Копировать
//Разбивалка запросов на части. © Nikolay Komarov, 2015
//ожидается, что есть список с именем apiRequests и переменная resultsInRecentRequest
//в цикле на «кубиках» эти запросы дёргаются, и если вернулось меньше 1000 ответов, то
//запрос удаляется из списка. Если вернулось больше, то запрос остаётся в списке, а в
//переменную resultsInRecentRequest кладётся само количество ответов (оно доступно)
//после этого проверяется, что в запросе нет слова &sort=, в таком случае разбиение уже невозможно

//в результате работы сниппета элементы списка дробятся, так что при получении слишком большого списка ответов
//можно просто вызвать сниппет и отправлять запросы снова, удаляя из списка удавшиеся,
//пока в первом запросе не появится слово sort - это признак того, что дальше дробить некуда
/*
    bool varFound = false;
    foreach(ILocalVariable variable in project.Variables)
    {
        if(variable.Name == "resultsInRecentRequest")
            varFound = true;
    }
    if(!varFound)
    //add this fucking var
        return 0;*/
       
int resultsInRecentRequest = 0;
bool parseResult = int.TryParse(project.Variables["resultsInRecentRequest"].Value, out resultsInRecentRequest);

if(!parseResult)
{
    project.SendErrorToLog("ИСКЛЮЧИТЕЛЬНАЯ СИТУАЦИЯ! Не могу сконвертировать " + project.Variables["resultsInRecentRequest"].Value + " в целое число!");
    project.SendErrorToLog("ОБРАБОТКА ЗАПРОСОВ ПРЕРВАНА В СНИППЕТЕ!");
    return -2;
}
   
if(resultsInRecentRequest <= 1000)
{
    project.SendErrorToLog("ИСКЛЮЧИТЕЛЬНАЯ СИТУАЦИЯ! Результатов в последнем запросе меньше тысячи, а именно " + resultsInRecentRequest);
    project.SendErrorToLog("Незачем расщеплять этот запрос, ОБРАБОТКА В СНИППЕТЕ ПРЕРВАНА!");
    return -1;
}

// получаем список, в котором будем искать
var requests = project.Lists["apiRequestsX"];

//для тестирования закомментировать предыдущую строчку и раскомментировать три следующие
//List<String> requests = new List<string>(10);
//requests.Add("https://api.vk.com/method/users.search.xml?count=10&q=VARparam_q&country=VARparam_country&city=VARparam_city&age_from=VARparam_age_from&age_to=VARparam_age_to&age_to=VARparam_age_to&birth_day=VARparam_birth_day&birth_month=VARparam_birth_month&birth_year=VARparam_birth_year&has_photo=VARparam_has_photo&has_photo=VARparam_has_photo&from_list=VARparam_from_list&group_id=VARparam_group_id&status=VARparam_add_status&interests=VARparam_add_interests&access_token=VARtoken");
//requests.Add("https://api.vk.com/method/users.search.xml?count=10&q=VARparam_q&country=VARparam_country&city=VARparam_city&sex=VARparam_sex&age_from=VARparam_age_from&age_to=VARparam_age_to&age_to=VARparam_age_to&birth_day=VARparam_birth_day&birth_month=VARparam_birth_month&birth_year=VARparam_birth_year&has_photo=VARparam_has_photo&has_photo=VARparam_has_photo&from_list=VARparam_from_list&group_id=VARparam_group_id&status=VARparam_add_status&interests=VARparam_add_interests&access_token=VARtoken");


// ищем в каждой строчке в списке

    //        List<String> requests(List<String> requests, int resultsInRecentRequest)

    if (requests.Count == 0)
    {
        project.SendErrorToLog("ИСКЛЮЧИТЕЛЬНАЯ СИТУАЦИЯ! Список запросов пуст.");
        return 666;
    }
   
    project.SendInfoToLog("Начальное значение переменной results in Recent Request: " + resultsInRecentRequest);
    project.SendInfoToLog("Начальное количество запросов в списке apiRequests: " + requests.Count);

    int counter = 1, splitCounter = 0;
    string request;
    decimal answersForecast;

    for(;((answersForecast = resultsInRecentRequest / requests.Count) > 1000 && splitCounter < 100);splitCounter++)
    {
        project.SendInfoToLog("счётчик расщепления splitCounter = " + splitCounter);
        request = requests[0];
        requests.RemoveAt(0);

        //в 2 раза
        if (!request.Contains("sex=") || request.Contains("sex=&") )
        {
            requests.Add(request.Replace("&access_token", "&sex=2&access_token"));
            requests.Add(request.Replace("&access_token", "&sex=1&access_token"));
            continue;
        }

        //в 12 раз
        if (!request.Contains("birth_month=") || request.Contains("birth_month=&"))
        {
            for (counter = 1; counter <= 12; counter++)
            {
                requests.Add(request.Replace("&access_token", "&birth_month=" + counter + "&access_token"));
            }
            continue;
        }

        //в 31 раз
        if (!request.Contains("birth_day=") || request.Contains("birth_day=&"))
        {
            for (counter = 1; counter <= 31; counter++)
            {
                requests.Add(request.Replace("&access_token", "&birth_day=" + counter + "&access_token"));
            }
            continue;
        }


        //в 47 раз
        if ((!request.Contains("age_from=") && !request.Contains("age_to=") && !request.Contains("birth_year=")) ||
            (    (request.Contains("age_from=&") && request.Contains("age_to=&") && request.Contains("birth_year=&"))))
        {
            for (counter = DateTime.Now.Year - 65; counter <= DateTime.Now.Year - 18; counter++)
            {
                requests.Add(request.Replace("&access_token", "&birth_year=" + counter + "&access_token"));
            }
            continue;
        }

        //последняя попытка, просто сортировкой - до двух раз, но возможно, с пересечениями
        if (!request.Contains("sort=") || request.Contains("sort=&"))
        {
            requests.Add(request.Replace("&access_token", "&sort=0&access_token"));
            requests.Add(request.Replace("&access_token", "&sort=1&access_token"));
            continue;
        }

        //необработанные параметры
        //country=VARparam_country&
        //city=VARparam_city&
        //group_id
        //interests";

        //в текущем запросе нечего расщеплять, добавим его в конец списка
        project.SendInfoToLog("Нечего расщеплять в запросе " + request);
        project.SendInfoToLog("Пропускаем его и ищем следующий запрос...");
       
        requests.Add(request);
    }

    project.Variables["resultsInRecentRequest"].Value = answersForecast.ToString();
    project.SendInfoToLog("Расщепление завершено в " + splitCounter + " шагов");
    project.SendInfoToLog("Ожидаемое количество ответах в будущих запросах, в среднем " + answersForecast);
    project.SendInfoToLog("В итоге запросов в списке стало: " + requests.Count);
    return requests.Count;
 
Код:
Развернуть Свернуть Копировать
https://api.vk.com/method/wall.post?owner_id=-{-Variable.group_id-}&message={-Variable.text-}&attachments={-Variable.photo-},{-Variable.video-},{-Variable.audio-},{-Variable.doc-}&access_token={-Variable.AccessToken-}
 
Здравствуйте. Помогите пожалуйста с загрузкой картинок в Вконтакте. Не могу разобраться как отправлять данные картинки в POST запросе. Использую этот метод photos.getUploadServer. Ответ приходит, в ответе URL, album_id, user_ID, но нет photos_list. Если можно пример POST запроса с данными и как разобрать ответ.
 
  • Оценить
Реакции: frion-seo
Я так понимаю с использованием api проблема решилась?
 
к сожалению нет... пришлось отказаться от API в плане загрузок картинок и использовать загрузку через Браузер.
 
Доброго времени суток, друзья!
Подскажите, пожалуйста, откуда берутся в запросах у вк такие переменные как _tstat и rndVer?
Каким образом их найти или сформировать?
Дело в том, что через фидлер снимаю запросы и все хорошо.. кроме этих двух переменных.
Вроде они не критичные, но вдруг нет?
Буду признателен за помощь или наводку куда копать.
Спасибо.
 
С загрузкой фоток в альбом по API решение не найдено ?
 
Ребят помогите разобраться с API вконтакте. Не могу понять, что я делаю не так!? Создал приложение, получаю токен таким образом https://api.vk.com/oauth/authorize?...https&display=page&v=5.30&response_type=token , но при попытке выполнить запрос с этим токином получаю ошибку "User authorization failed: You should specify sig param for nohttps requests (scope contain nohttps)"
 
У Вас не верно построена строка URL для взятия token'a.
Попробуйте так:
Код:
Развернуть Свернуть Копировать
https://oauth.vk.com/authorize?client_id=1&redirect_uri=https://oauth.vk.com/blank.html&display=page&response_type=token&scope=notify,friends,photos,notes,status,wall,ads,nohttps
Только замените "1" в client_id=1 на свой номер (у вас там вообще было написано "ID_ПРИЛОЖЕНИЯ"!!)
Плюс убрал параметр message у scope - так как к сообщениям имеют доступ только десктопные приложения.
Проверка получения token'a по моей ссылке прошла успешно.
 
У Вас не верно построена строка URL для взятия token'a.
Попробуйте так:
Код:
Развернуть Свернуть Копировать
https://oauth.vk.com/authorize?client_id=1&redirect_uri=https://oauth.vk.com/blank.html&display=page&response_type=token&scope=notify,friends,photos,notes,status,wall,ads,nohttps
Только замените "1" в client_id=1 на свой номер (у вас там вообще было написано "ID_ПРИЛОЖЕНИЯ"!!)
Плюс убрал параметр message у scope - так как к сообщениям имеют доступ только десктопные приложения.
Проверка получения token'a по моей ссылке прошла успешно.

Тоже самое. А ID_ПРИЛОЖЕНИЯ - эт я только тут написал
 
Плюс убрал параметр message у scope - так как к сообщениям имеют доступ только десктопные приложения.

Так наверное вот в чем проблема. Получается, что через зенопостер например осылать посты на снену в группу через API не получится?
 
А нет, это не то.
 
мессадж, на сколько я понимаю, связано с личными сообщениями, к ним имеют доступ только десктопные приложения.
Вы пробовали чисто по моей ссылки пройти? Только замените клиент айди на 2, так как приложение с айди1 уже заблочено вроде как.
Если все работает, значит проблемы не здесь, а в Вашем приложении.
И как я понимаю, для авторизации нужно использовать другой протокол, а не просто получение токена, но и наличие secret ключа.
Вот почитайте - https://vk.com/dev/api_nohttps
Если нет такйо жесткой необходимости, то лучше из scope убрать nohttps
 
  • Оценить
Реакции: panacea
мессадж, на сколько я понимаю, связано с личными сообщениями, к ним имеют доступ только десктопные приложения.
Вы пробовали чисто по моей ссылки пройти? Только замените клиент айди на 2, так как приложение с айди1 уже заблочено вроде как.
Если все работает, значит проблемы не здесь, а в Вашем приложении.
И как я понимаю, для авторизации нужно использовать другой протокол, а не просто получение токена, но и наличие secret ключа.
Вот почитайте - https://vk.com/dev/api_nohttps
Если нет такйо жесткой необходимости, то лучше из scope убрать nohttps

Ух, спасибо огромное! Разобрался, все работает.
 
Ещё вопрос появился по API. Через Get всё работает отлично, а вот с Post запросом разобраться не могу. Если не сложно скиньте пример как через Post запрос вызвать метод wall.post
 
Ещё вопрос появился по API. Через Get всё работает отлично, а вот с Post запросом разобраться не могу. Если не сложно скиньте пример как через Post запрос вызвать метод wall.post
Та же фигня - пост не осилил.
Кто знает - научите!
 
Доброго времени суток, друзья!
Подскажите, пожалуйста, откуда берутся в запросах у вк такие переменные как _tstat и rndVer?
Каким образом их найти или сформировать?
Дело в том, что через фидлер снимаю запросы и все хорошо.. кроме этих двух переменных.
Вроде они не критичные, но вдруг нет?
Буду признателен за помощь или наводку куда копать.
Спасибо.
разобрались что за запросы? tstat интересует, появляется когда на стенку хочу с картинками и видео пост отправить, без этого параметра меди файлы не цепляются
 
К сожалению нет. Никто не подсказал. =(
Скорее всего в JS генерится.
Тут на третий конкурс статей обещают инфу по разбору JS кинуть. Посмотрим что там да как и вернемся к этому вопросу.
 
К сожалению нет. Никто не подсказал. =(
Скорее всего в JS генерится.
Тут на третий конкурс статей обещают инфу по разбору JS кинуть. Посмотрим что там да как и вернемся к этому вопросу.
в итоге вроде отсылает без него :)
 
Можете сюда кинуть POST запрос?
Видимо я что то делаю не так. Не проходит и все тут. =(
что то вроде этого, это через браузер версию:
Код:
Развернуть Свернуть Копировать
https://m.vk.com/wall-{-Variable.ref_id-}?act=post&from=profile&hash={-Variable.post_gr-}&message={-Variable.urlen_text-}&attach1_type=photo&attach1={-Variable.phototype-}&attach2_type=video&attach2={-Variable.videotype-}&_ref={-Variable.group_id-}
 
Только на мобильной версии? На обычной не пробовали?
Мне именно обычная нужна.
 
Тоже самое пройдет думаю. Главное hash и ref чтобы присутствовали)
Попробуйте.
Насколько я знаю, обычная и мобильная версия существенно отличаются и многое нельзя делать на мобильной версии.
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)