Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2019, 19:37   #1
svob
Пользователь
 
Регистрация: 22.11.2012
Сообщений: 47
Печаль Vk posting

Добрый вечер, форумчане. Надолго забыл про делфи, но из-за смены работы появилась острая необходимость в софте, который размещал(на стену или в предложку) сообществ заданный мной текст и вложения(3-4 фото).
Извратился так:
Код:
unit Unit3;

interface

uses
  Classes, SysUtils, Variants, Dialogs, StdCtrls, lib, ssl_openssl, httpsend;

type
  TMyThread = class(TThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
    procedure memoadd;
  public
    email, pass, response, msg: string;
  end;

implementation

uses unit2;

procedure TMyThread.Execute;
var temp: array[0..10] of string;
    s2, token, userid, mess:string;
begin
  explode(temp, ':', form2.edit1.text);
  email:=temp[0];
  pass:=temp[1];

response:=send('GET', 'https://oauth.vk.com/token?grant_type=password&client_id=2274003&client_secret=hHbZxrka2uZ6jB1inYsH&username='+email+'&password='+pass+'&captcha_key=&captcha_sid=');
msg:=response;
Synchronize(memoadd);

 if Pos('token', response)<>0 then begin
    s2:=copy(response, pos('access_token":"', response), pos('","expires_in', response)-3);
    delete(s2, 1, 15);
    token:=s2;   // token пользователя

    msg:=token;
    Synchronize(MemoAdd);

    s2:=copy(response, pos('user_id":', response), pos('}', response));
    delete(s2, 1, 9);
    Delete(s2,pos('}',s2),1);
    userid:=s2;   // id пользователя

    msg:=userid;
    Synchronize(MemoAdd);
  end else begin
    msg:='Не авторизовался';
    Synchronize(MemoAdd);
  end;


 response:=send('GET', 'https://api.vk.com/method/' + form2.Edit2.text + '&message=' + UTF8EncodeToShortString(Form2.Memo2.Text) + '&attachments=' + '&v=5.62&access_token='+token);
 msg:=response;
 Synchronize(MemoAdd);
end;

procedure TMyThread.memoadd;
begin
  Form2.Memo1.Lines.Add(msg);
end;

end.
Работать - работает. Проблемы:
1. После 1-2 десятков авторизаций и постинга на аккаунт перестает заходить с ошибкой "слишком много запросов, попробуйте позже", которая проходит только через сутки, не меньше.
2. Небольшой текст без пробелов и знаков работает, но если пытаться добавить цифры или просто больше текста, то постится только фото.

Прошу помощи с кодом или совета, возможно есть подобный софт(я пытался искать, но натыкался только на постеры для одной группы, как правило, своей, для граббинга с отложкой и т.п)
svob вне форума Ответить с цитированием
Старый 02.04.2020, 07:19   #2
Svema
Пользователь
 
Регистрация: 09.10.2017
Сообщений: 26
По умолчанию

Получите один раз токен, например редактора паблика, и потом постоянно его используйте в нужных методах, не надо его получать каждый раз новый
P/S если же нужна готовая программа для заливки отложек - пишите, но это платно
тузла полностью настраивается, можно добавить 12 групп, путём нажатия одной кнопки всё заливается автоматом во все 12(или сколько настроите)
Svema вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Automate registration and posting script derg PHP 0 12.03.2016 19:59