...
Just my blog

Blog about everything, mostly about tech stuff I made. Here is the list of stuff I'm using at my blog. Feel free to ask me about implementations.

Soft I recommend
Py lib I recommend

I'm using these libraries so you can ask me about them.

vk execute + args + python + requests

py_vk Продолжаю закреплять выученное своим горьким опытом и методом тыка по теме vk execute и python, наконец мои рученьки-загребученьки добрались до последнего оплота и просто приятного и некогда непонятного метода, и также к хранению процедур в приложении! Ура. В прошлом посте я рассказывал как передать строку с vk script сразу таки прям по воздуху, сырую и некрасивую, сегодня мне покорился вариант "хранимые процедуры" который позволяет тело скрипта хранить в приложении вк, а передавать по "воздуху" только необходимые и меняющиеся аргументы: id группы, id поста и так далее. Ближе к делу:

  • каждая переменная, которая будет записываться переданным аргументом должна иметь такой вид: Args.var_name

VK_proc

var comments = API.wall.getComments(
    {"owner_id":(Args.owner_id),
     "post_id":(Args.post_id),
     "need_likes":"1",
     "offset":"0",
     "count":"100",
     "sort":"asc",
     "preview_length":"1",
     "extended":"0",
     "v":"5.27"});
var comments_cnt = comments.count;
comments = comments.items;
var offset_comments = 100;
while (offset_comments < comments_cnt)
    {comments = comments + API.wall.getComments(
        {"owner_id":(Args.owner_id),
         "post_id":(Args.post_id),
         "need_likes":"1",
         "offset":(offset_comments),
         "count":"100",
         "sort":"asc",
         "preview_length":"1",
         "extended":"0",
         "v":"5.27"}
    ).items;
offset_comments = offset_comments + 100;};
return comments;

  на своей стороне достаточно собрать запрос такого вида:

r = requests.post('https://api.vk.com/method/execute.wall_getComments?owner_id='+owner_id+'&post_id='+post_id+'&access_token='+token)

Это вариант для python там выше каждая переменная из этой строки назначена соответственно.

Далее чисто отсебятина:

Вот и все епта, куча времени уходит на то, чтобы переварить долбанные хабровские посты и прочие форумы говнокодеров, когда достаточно просто написать пару строк примера, и все станет ясно. Надеюсь мой пример сэкономит вам время. Почему лучше "хранить процедуры"?

  • не нужно каждый раз писать пачку VK Script для каждого частного случая;
  • хранимый код может быть использован с любыми аргументами, все запросы просто будут менять аргументы в зав. от группы-цели;
  • не нужно конвертировать сырой запрос с VK Script через энкодилки, чтобы передать это через HTTP;
  • в хранимых процедурах есть примитивный IDE который позволяет быстрее отдебажить код, если в нем закрался шлак;
  • это просто офигенно, потому что код остается чистым и понятным - уходят аргументы - возвращаются массивы, что может быть лучше?