Что нового

VK API UDF - библиотека для работы с Vkontakte API

Fever

Скриптер
Сообщения
308
Репутация
112
[info]

AutoIt: 3.3.6.1
Версия: 0.2
Категория: Автоматизация, Сеть
Описание: Данная библиотека демонстрирует методы работы с Vkontakte API.
Авторы: Medic84, Fever
Ссылка: GitHub
[/info]

Где взять APP_ID? И что это вообще?:
Общение программы с API Vkontakte происходит через приложение, его необходимо создать (в нашем случае Standalone-приложение). В примере в качестве APP_ID указано id созданного мной ранее приложения.
http://vkontakte.ru/editapp?act=create&site=1

Список функций доступных на данный момент:
_VK_SignIn() - Совершает авторизацию на сайте ВКонтакте
_VK_getProfiles() - Возвращает расширенную информацию о пользователях.
_VK_getUserSettings() - Получает настройки текущего пользователя в данном приложении.
_VK_getUserBalance() - Возвращает баланс текущего пользователя на счету приложения в сотых долях голоса.
_VK_friendsGet() - Возвращает список идентификаторов друзей пользователя или расширенную информацию о друзьях пользователя
_VK_friendsGetOnline() - Возвращает список идентификаторов, находящихся на сайте друзей, текущего пользователя.
_VK_friendsGetMutual() - Возвращает список идентификаторов общих друзей между парой пользователей.
_VK_friendsAddList() - Создает новый список друзей у текущего пользователя.
_VK_groupsGet() - Возвращает список групп указанного пользователя.
_VK_groupsGetByID() - Возвращает информацию о заданной группе или о нескольких группах.
_VK_audioGet() - Возвращает список аудиозаписей пользователя или группы.
_VK_statusGet() - Получает статус пользователя.
_VK_statusSet() - Устанавливает новый статус текущему пользователю.
_VK_photosGetAlbums() - Возвращает список альбомов пользователя.
_VK_photosGet - Возвращает список фотографий в альбоме.
_VK_photosGetAlbumsCount() - Возвращает количество доступных альбомов пользователя.
_VK_photosGetById() - Возвращает информацию о фотографиях по их идентификаторам.
_VK_photosGetAll() - Возвращает все фотографии пользователя или группы в антихронологическом порядке.
_VK_photosСreateAlbum() - Создает пустой альбом для фотографий.
_VK_photosEditAlbum() - Создает пустой альбом для фотографий.
_VK_wallPost() - Публикует новую запись на своей или чужой стене.
_VK_wallDelete() - Удаляет запись со стены пользователя.
_VK_likesAdd() - Добавляет указанный объект в список Мне нравится текущего пользователя.
_VK_likesDelete() - Удаляет указанный объект из списка Мне нравится текущего пользователя.
_VK_likesIsLiked() - Проверяет находится ли объект в списке Мне нравится заданного пользователя.
_VK_likesGetList() - Получает список идентификаторов пользователей, которые добавили заданный объект в свой список Мне нравится.

Подробное описание\небольшую документацию постараюсь написать в ближайшее время.

История версий:
0.1 - Первый релиз
0.2 - Полностью переработанная версия с добавлением функций
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 473
Репутация
2 403
1. Отсутствует Encoding.au3.

2. Название функций неудачное, API это общее понятие, нужно хотя бы через «_VK...».


Добавлено:
Сообщение автоматически объединено:

И ещё, я бы не стал это делать через IE, я бы также не стал этим пользоваться по этой же причине.


Добавлено:
Сообщение автоматически объединено:

Если Encoding.au3 нужен только для _Encoding_UTF8ToANSI, то проще использовать второй параметр у BinaryToString:

Код:
Return BinaryToString(InetRead(.....), 4)
 
Автор
F

Fever

Скриптер
Сообщения
308
Репутация
112
CreatoR [?]
Если Encoding.au3 нужен только для _Encoding_UTF8ToANSI, то проще использовать второй параметр у BinaryToString:
спасибо, учту


а в ВК авторизироватся можно иначе? :blink:
насколько я читал их документацию, то нужно именно так..
http://vkontakte.ru/developers.php?id=-1_37230422&s=1


Добавлено:
Сообщение автоматически объединено:

CreatoR [?]
хотя бы через «_VK...»
исправил
проще использовать второй параметр у BinaryToString
также исправил
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1 575
Репутация
335
Очень полезная вещь. Самому очень пригодилась, и я помогу тебе ее дописать (если конечно требуется помощь) =)

Первое с чего лучше начать - это возвращение значений функциями. Лучше сразу возвращать массивом, то что можно вообще вернуть.
 

Guezt

Продвинутый
Сообщения
335
Репутация
81
можешь добавить функцию friends.addList – создаёт новый список друзей. Отсортировал список друзей по определенным параметрам но никак не получилось добавить их в отдельный список...
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1 575
Репутация
335
Guezt Gutsy
Такой API функции нет Вконтакте.
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1 575
Репутация
335
Код:
Func _VK_friendsAddList($_sAccessToken, $sName, ByRef $sArray)
	Local $sFriendsdotString = ""
	If IsArray($sArray) Then
		For $i = 0 To UBound($sArray) - 1
			$sFriendsdotString &= $sArray[$i] & ","
		Next
		$sFriendsdotString = StringTrimRight($sFriendsdotString, 1)
	Else
		$sFriendsdotString = $sArray
	EndIf
	Return BinaryToString(InetRead("https://api.vkontakte.ru/method/friends.addList.xml?access_token=" & $_sAccessToken & "&name=" & $sName & "&uids=" & $sFriendsdotString), 4)
EndFunc


Где $_sAccessToken - доступ
$sName - Имя для нового списка друзей
$sArray - массив с uid'ами друзей, которых необходимо внести в список.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
Medic84,
Надо, наверное, добавить проверку на массив (IsArray()) и проверку на длину строки $sFriendsdotString.
Описание:
...Максимальная длина сообщения - 500 символов.
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1 575
Репутация
335
madmasles
Нет. На эту ф-ю нет ограничений. Вы привели ссылку не на ту функцию.
http://vkontakte.ru/pages?oid=-1&p=friends.addList
 

Guezt

Продвинутый
Сообщения
335
Репутация
81
Можно я еще раз задам тот же самый вопрос, ребята при всем моем уважении я не думаю, что я на столько тупой и этот вариант попробовал можно РАБОЧИЙ пример привести пожалуйста я попробовал но ничего не вышло ни с вашим вариантом ни с моим - кому не трудно сделайте рабочий вариант и приложите т.к. у меня 100% не работает :( и сделал практически идентичное за исключением переменных

запрос идет в UTF8 список пользователей не может заканчиваться на ","

то есть мой вариант функции был таков:
Код:
Func _VK_friendsAddList($_sAccessToken, $sName, $sArray)
    Local $sFriendsdotString = ""
    For $i = 0 To UBound($sArray) - 1
		If $i <> UBound($sArray)-1 Then
        $sFriendsdotString &= $sArray[$i] &   "%2C"
	Else
		$sFriendsdotString &= $sArray[$i]
		EndIf
    Next
    $sFriendsdotString = StringTrimRight($sFriendsdotString, 1)
    Return BinaryToString(InetRead("https://api.vkontakte.ru/method/friends.addList.xml?access_token=" & $_sAccessToken & "&name=" & $sName & "&uids=" & $sFriendsdotString), 4)
EndFunc


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

Medic84

Омега
Команда форума
Администратор
Сообщения
1 575
Репутация
335
все список получает парсит ставит запятые между ними, но создать лист никак не хочет... я в тупике уже весь день бьюсь походу сегодня не мой день...
Разрешение то выставили? Битовая маска должна быть с содержанием 2


Добавлено:
Сообщение автоматически объединено:

Guezt Gutsy
Зачем Вам "%2C" там написано через запятую, значит через запятую.
И раз Вы переписали код - зачем Вы обрезаете последний правый символ?!
 

Guezt

Продвинутый
Сообщения
335
Репутация
81
Medic84

разрешение стоит на друзей\фото в общем как в примере не трогал даже пробовал менять scope на scope=Friends - ошибка та же самая...

если ставить через запятую то она отправляется как ANSI и вообще не проходит запрос, если вставить "%2C" что и есть запятая - то запрос делает но выдает ошибку 20 типа : permission to perform this action is denied for non-standalone applications

но если верить параметрам авторизации то не должно выдавать ошибку...
* Если Вы разрабатываете Standalone-приложение и параметр response_type = "token", то в качестве параметра redirect_uri необходимо указывать адрес http://api.vk.com/blank.html, на который будут переданы данные авторизации. Обратите внимание, что только в данном случае у Вас будет возможность использовать расширенные методы работы с API.


Добавлено:
Сообщение автоматически объединено:

Medic84 [?]
И раз Вы переписали код - зачем Вы обрезаете последний правый символ?!
потому что список ID должен идти так uids=12345,67890,54321 - то есть в конце не нужна запятая
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1 575
Репутация
335
Код:
If $i <> UBound($sArray)-1 Then
        $sFriendsdotString &= $sArray[$i] &   "%2C"
    Else
        $sFriendsdotString &= $sArray[$i]
        EndIf

Этот код тогда для чего написали? Он Вам и не даст этого сделать.
 

Guezt

Продвинутый
Сообщения
335
Репутация
81
Medic84
если не сложно напиши пример пожалуйста рабочий максимум что я добился это вот:


Добавлено:
Сообщение автоматически объединено:

Medic84 [?]
Код: AutoIt [Выделить] If $i <> UBound($sArray)-1 Then $sFriendsdotString &= $sArray[$i] & "%2C" Else $sFriendsdotString &= $sArray[$i] EndIfЭтот код тогда для чего написали? Он Вам и не даст этого сделать.
этот код добавляет через запятую ID пользователей если пользователь Последний в массиве то не ставит запятую... не знаю как объяснить иначе... если массив из 10 id то будет делать так 1,2,3,4,5,6,7,8,9,0(и тут пропустит запятую или %2С - разницы нет запро,с как видно из скрина проходит в обоих случаях но ругается на метод авторизации...)
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1 575
Репутация
335
Guezt Gutsy
Вы зарегистрировали приложение вконтакте? API Key получили? У Вас проблема авторизации.

А за удаление запятой в конце отвечает строка
Код:
$sFriendsdotString = StringTrimRight($sFriendsdotString, 1)

Для чего Вы добавляли тот код - я не понимаю.


Добавлено:
Сообщение автоматически объединено:

Код:
Func _VK_friendsAddList($_sAccessToken, $sName, $sArray)
	Local $sFriendsdotString = ""
	If IsArray($sArray) Then
		For $i = 0 To UBound($sArray) - 1
			$sFriendsdotString &= $sArray[$i] & ","
		Next
		$sFriendsdotString = StringTrimRight($sFriendsdotString, 1)
	Else
		$sFriendsdotString = $sArray
	EndIf
	Return BinaryToString(InetRead("https://api.vkontakte.ru/method/friends.addList.xml?access_token=" & $_sAccessToken & "&name=" & $sName & "&uids=" & $sFriendsdotString), 4)
EndFunc


Только что проверил у себя. Пример идеально работает. Проверял на 10 людях список был создан.
 

Guezt

Продвинутый
Сообщения
335
Репутация
81
Medic84
ну не цепляйся ты к тому как я получаю список ID пожалуйста - признаю свою ошибку был невнимателен не видел отсичение 1 символа, да API Key получил зарегистрировал приложение как Iframe ключ получает добавь пожалуйста 1 эту функцию в пример с теми двумя моими id из окна ошибки - покажи что работает метод потому что я даже список не могу получить ни со своего приложения ни с того что в примере...


Добавлено:
Сообщение автоматически объединено:


Medic84 [url_ex=javascript:qq.OpenLink('[url=http://autoit-script.ru/index.php/topic,7517.msg56237.html#msg56237']Re: VK API UDF - библиотека для работы с Vkontakte API)][?][/url_ex]
Только что проверил у себя. Пример идеально работает. Проверял на 10 людях список был создан.
Будь человеком - не мучай меня, пожалуйста, выложи пример рабочий может я уже чего намудрил :wacko:

все... разобрался - жесть просто спасибо большое за терпение!!! :wacko:
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1 575
Репутация
335
Guezt Gutsy
Слава Богу. Где намудрили то?
 
Верх