Vk api execute примеры

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Cancel Create

vk_api / examples / execute_functions.py /

Code definitions
Code navigation index up-to-date

  • Go to file T
  • Go to line L
  • Go to definition R
  • Copy path
  • Copy permalink

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Cannot retrieve contributors at this time
50 lines (35 sloc) 1.39 KB

  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents Copy raw contents

Copy raw contents

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

VK-API Пример выполнения кода методом execute и users get

  • Copy lines
  • Copy permalink
  • View git blame
  • Reference in new issue

Источник: github.com

Как вызывать методы audio vk

А дальше мне пришла мысль, что если внутри этого метода можно вызывать методы, которые в официальном API вызывать нельзя, то наверное, можно вызвать метод audio.get.

Результат

return API.audio.get(<>);

Так же прекрасно работают метод audio.add .

Результат

var owner_id = 1234567; var API.audio.add ();
Результат

var q = «imagine dragons»; var API.audio.search()
Результат

var owner_id = 302808715; var (< «owner_id»:owner_id >)[«items»][0][«id»]; return API.audio.getById ();

НО! когда я начал обращаться к официальному API, То в пришедшем ответе ссылки не было:

Немного потупив, я залез в network и стал смотреть, куда посылается запрос.

Еще по теме:  Как полностью удалить приложение ВК с айфона


Дальше, с помощью модуля requests.Session я авторизовался и послал POST запрос на сайт

https://vk.com/dev/execute?params[code]=API.audio.get(); ‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36’, ‘Accept’: ‘text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8’, ‘Accept-Language’:’ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3′, ‘Accept-Encoding’:’gzip, deflate’, ‘Connection’:’keep-alive’, ‘DNT’:’1′>session = requests.session() data = session.get(url, headers=headers) page = lxml.html.fromstring(data.content) form = page.forms[0] form.fields[’email’] = login form.fields[‘pass’] = password response = session.post(form.action, data=form.form_values()) if ‘onLoginDone’ in response.text: self.session = session else: raise PermissionError(«login or password is wrong») self.hash = hashe(self.session) def code(self,code): q = self.session.post( «https://vk.com/dev/execute?params[code]=»+code+», data=,headers = ) audio = json.loads(q.text[38:len(q.text)]) if «response» in audio: return audio[«response»] else: return audio def get(self,owner_id= None,album_id =None,NeedUser =False ): code_response = «» if owner_id: code_response += «owner_id:»+str(owner_id) if album_id: code_response += «,album_id:»+str(album_id) if NeedUser: code_response += «,NeedUser:1» q = code_response.lstrip(«,») code = r’return API.audio.get();’ return self.code(code) def search(self,q=’imagine dragons’,owner_id=None,offset=0,PerformerOnly=False,): code_response = «» code_response+=’q:»»‘.format(q=q) if owner_id: code_response += «,owner_id:»+str(owner_id) if PerformerOnly: code_response += «,PerformerOnly:1» if offset!=0: if str(offset).isdsgst(): code_response += «,NeedUser:1» else: raise NameError(«offset has to be an digit») code_response = code_response.lstrip(«,») code = r’return API.audio.search();’ return self.code(code) def add(self,owner_id=1234567,audio_id=456239029): code_response = «» code_response += «owner_id:,audio_id:».format(owner_id=str(owner_id),audio_id=str(audio_id)) code = r’return API.audio.add();’ return self.code(code) def hashe(session): qw = session.get(«https://vk.com/dev/execute»).text return re.findall(‘onclick=»Dev.methodRun(‘(.+)’, this);»‘,qw)[0]

Его можно вызывать так:

Как работает метод execute. Ограничения vk API. Web-приложение для анализа сообществ vk.com на PHP#6


import bot_vk#pip install bot_vk audio = bot_vk.audio(«my_login»,»my_password») get = audio.get(owner_id=1234567) count = get[«count»] items= get[«items»]

P.S. К сожалению «лавоку» прикрыли, так что этот способ больше недействительный(
P.P.S. Появился другой метод для получения музыки: habr.com/post/429942

Источник: habr.com

Vk api execute примеры

Полный спектр компьютерных услуг!

Загрузка. Пожалуйста, подождите.

X

Сообщение сайта

(Сообщение закроется через 2 секунды)

Внимание!

Ремонт компьютеров в калуге Рекламное место сдается

Социальные сети / [Из песочницы] ВКонтакте API. Execute: реализуем IF своими руками

Decker

Просмотр профиля

22.7.2011, 22:04

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1

Еще по теме:  Можно ли посмотреть кто смотрел видео Вконтакте

Решил поделиться опытом работы с ВКонтакте АПИ, конкретно с методом execute.

Речь пойдёт об АПИ для приложений, которое подробно описано здесь.

Коротко об execute

Execute своего рода мета-метод: он позволяет выполнить несколько команд за один запрос к АПИ-серверу, что очень удобно.

Например, можно получить список имён тех пользователей, у которых есть трек Beatles (это пример из документации):

// присваивает переменной a результат поиска по аудио с данными параметрами

// присваивает переменной b список владельцев найденных аудиозаписей

// присваивает переменной с данные о страницах владельцев из списка b

// возвращает список фамилий из данных о владельцах

АПИ-метод execute принимает единственный параметр, code, который и содержит код, вызывающий другие методы АПИ. Из примера видно, как это работает.

Переходя к проблеме

Я начал использовать execute в тот же день, как он появился; клиентский код сразу заметно поупрощался. Вот что execute умеет сегодня:

Чего мне (я думаю, и другим разработчикам) не хватает в execute, так это использования логических переходов, обычного IF’a. Из-за его отсутствия часть клиентского кода всё равно выглядит как «запрос к серверу #1 -> обработка ответа на клиенте -> запрос к серверу #2 -> . », хотя цель execute как раз этого избежать.

  1. Добавить аудиозапись пользователю
  2. Получить список аудиозаписей пользователя
  3. Переименовать верхнюю в списке аудиозапись

Соответственно, очень хотелось бы сделать это одним запросом к АПИ с помощью execute, и при этом поставить условие: если контент добавился успешно, только в таком случае переходим на следующие шаги. Метод добавления аудио как назло умеет возвращать 1 в случае успеха и 0 в случае ошибки, но поскольку IF’a в execute нет, использовать это не удаётся.

Ситуация эта не высосана из пальца: в случае, если контент по каким-то причинам не добавился (такое случается), переименовывается первая из аудиозаписей пользователя, не добавленная из приложения. Это выглядит крайне некрасиво. Поэтому даже пришлось отказаться от execute на время, и захардкодить 3 отдельных обращения к АПИ.

Еще по теме:  Такой больше нет vk

Квазирешение

Но в один прекрасный момент пришло озарение. Довольно внезапно, поэтому никаких вводных слов не могу и придумать. Вот как оно выглядит:

  1. Добавить аудиозапись пользователю; сохранить результат добавления в переменную res (1 или 0)
  2. Получить список аудиозаписей текущего пользователя
  3. Переименовать верхнюю в списке аудиозапись для юзера с id равным + 1 — res

При штатном срабатывании первого метода в последующих вызовах айдишник юзера валидный, и они проходят успешно. Если же при добавлении возникли проблемы, айдишник юзера увеличивается на 1, и в последующих вызовах становится неверным. Как мы знаем, каждая единица контента также имеет свой id (aid, vid, . ), и он не повторяется у разных пользователей; поэтому любые вызовы с обречены на провал. Таким образом мы и получаем искомый логический переход [if]: сработал первый метод — вызываются остальные, не сработал — не вызываются (т.е. вызываются, но с инвалидными параметрами, что для нас то же самое).

Ну, а вот и результирующий код:

//this is where magic happens

var user_id = 1670525 + parseInt(res) — 1;

var lst = API.audio.get( );

Этот код я прогнал в тестовом приложении Дениса Ольшина, он работает.

Соответственно, такая логика может быть применима для решения ряда задач; главное, чтобы АПИ-функция что-нибудь возвращала в случае успеха и возвращала что-нибудь другое в случае неудачи.

Надеюсь вам, уважаемые коллеги-разработчики, эта фишка пригодится, и поможет сделать ваш код более оптимальным.
Original source: habrahabr.ru (comments).

Источник: dml.compkaluga.ru

Рейтинг
( Пока оценок нет )
Загрузка ...