Как отправить изображение vk api

Недавно попросили сделать небольшую фотогалерею, но заранее предупредили, что на веб-сервере картинки и фотографии храниться не должны.
Эта фраза немного заступорила меня, так как с веб-программированием, так сказать, я связался совсем недавно, поэтому проще бы было найти готовое решение, которое я не нашёл. Но в голову пришла идея сделать всё, используя API социальной сети Вконтакте.

Начнём мы с того, что для написания скрипта нам понадобятся два метода:
1) photos.getAlbums – возвращает список альбомов пользователя.
2) photos.get – возвращает список фотографий в альбоме.

Теперь рассмотрим эти два метода подробнее, и решим, что именно нам нужно взять для нашей галереи.
Какие же ответы мы получим при использовании метода getAlbums:
— aid
— thumb_id
— owner_id
— title
— description
— created
— updated
— size
— can_upload

Не буду объяснять, что есть что. Вроде и так всё относительно понятно. Ну а нам, собственно, для нашей маленькой галереи, с этого запроса понадобится, пока что, только aid и title.

Учим бота отправлять изображения. Курс «Создание чат-бота ВКонтакте на python». Часть 4


AID — Album ID
Title — название нашего альбома.

А теперь перейдем к самому интересному.
Сделаем себе крутой файл, с крутым названием index.php:

‘ . $item[‘title’] . ‘
‘; //находим в response наш AID и Title, после чего формируем ссылку в виде GET запроса, потому что именно так в моём примере мы будем понимать, в какой именно альбом мы попали. > ?>

На этом с index.php всё закончено. Естественно, нужно для себя оформить всё красиво, и можно даже добавить описание альбомов, и даже обложку, но не в этом примере.

Еще по теме:  Vk live chatting что это

Теперь рассмотрим наш второй метод, который называется photos.get:
— pid
— aid
— owner_id
— user_id
— src
— src_big
— src_small
— src_xbig
— width
— height
— text
— created

В нашем случае мы используем только src_big.
И сразу переходим к созданию второго крутого файлика, который я назвал photos.php:

Вот теперь, если вы всё сделали правильно — при переходе на страничку index.php вы увидите список фотоальбомов группы, а при переходе дальше — сами фотографии фотоальбомов.

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

P.S. Не рекомендую использовать этот скрипт для объемных фотоальбомов.

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

AHK: Загрузка фотографии в беседу через API ВКонтакте

Здравствуйте.
Подскажите пожалуйста, почему в беседу ВКонтакте (созданную через группу) не получается отправить фотографию?

https://imgur.com/9GNJmSl.png

Выдаёт вот такую ошибку:

P.S: Да, я понимаю, что скорее всего дело в отрицательном user_id (т.к это беседа, а не определённый человек), но что писать вместо него? В документации API ВКонтакте покопался, в методах photos.getMessagesUploadServer , photos.saveMessagesPhoto , и там к сожалению нет никаких намёков об отправке в беседу.

Code:

+ открыть спойлер

#SingleInstance Force #Persistent #NoEnv #Include CreateFormData.ahk global vk_id := 123456789 global vk_token := «b8da9ffae451f1453e3beded6afae451f1453b82d759f60473fae451f1453cfe95dfae451f1453bc83ec519f» global conversation := 1 global chat_id := 2000000000 + conversation global proxy := «https://» ; «https://vk-api-proxy.xtrafrancyz.net/_/» uploadScreenshotToVK(«screen.png») ExitApp JsonEvalToObj(json_text) < JSONvar = (LTrim Join %json_text% ) htmldoc := ComObjCreate(«htmlfile») Script := htmldoc.Script Script.execScript(» «, «JScript») json_obj := Script.eval(«(» . JSONvar . «)») return json_obj >uploadScreenshotToVK(file_path) < HTTP := ComObjCreate(«WinHttp.WinHttpRequest.5.1») if conversation HTTP.Open(«GET», proxy «api.vk.com/method/photos.getMessagesUploadServer? vk_token «, true) else HTTP.Open(«GET», proxy «api.vk.com/method/photos.getMessagesUploadServer?peer_id=» vk_id » vk_token «, true) HTTP.Send() HTTP.WaitForResponse() RegexMatch(HTTP.responsetext, «upload_url»»:»»(.+?)»»», match) server := StrReplace(match1, «/», «/») objParam := CreateFormData(PostData, hdr_ContentType, objParam) HTTP.Open(«POST», server, true) HTTP.SetRequestHeader(«Content-Type», hdr_ContentType) HTTP.Send(PostData) HTTP.WaitForResponse() RegexMatch(HTTP.responsetext, »

Еще по теме:  Как создать аудиоальбом в ВК

Include code:

+ открыть спойлер

; CreateFormData() by tmplinshi, AHK Topic: https://autohotkey.com/boards/viewtopic.php?t=7647 ; Thanks to Coco: https://autohotkey.com/boards/viewtopic.php?p=41731#p41731 ; Modified version by SKAN, 09/May/2016 CreateFormData(ByRef retData, ByRef retHeader, objParam) < New CreateFormData(retData, retHeader, objParam) >Class CreateFormData < __New(ByRef retData, ByRef retHeader, objParam) < Local CRLF := «`r`n», i, k, v, str, pvData ; Create a random Boundary Local Boundary := this.RandomBoundary() Local BoundaryLine := «——————————» . Boundary this.Len := 0 ; GMEM_ZEROINIT|GMEM_FIXED = 0x40 this.Ptr := DllCall( «GlobalAlloc», «UInt»,0x40, «UInt»,1, «Ptr» ) ; allocate global memory ; Loop input paramters For k, v in objParam < If IsObject(v) < For i, FileName in v < str := BoundaryLine . CRLF . «Content-Disposition: form-data; name=»»» . k . «»»; filename=»»» . FileName . «»»» . CRLF . «Content-Type: » . this.MimeType(FileName) . CRLF . CRLF this.StrPutUTF8( str ) this.LoadFromFile( Filename ) this.StrPutUTF8( CRLF ) >> Else < str := BoundaryLine . CRLF . «Content-Disposition: form-data; name=»»» . k «»»» . CRLF . CRLF . v . CRLF this.StrPutUTF8( str ) >> this.StrPutUTF8( BoundaryLine . «—» . CRLF ) ; Create a bytearray and copy data in to it. retData := ComObjArray( 0x11, this.Len ) ; Create SAFEARRAY = VT_ARRAY|VT_UI1 pvData := NumGet( ComObjValue( retData ) + 8 + A_PtrSize ) DllCall( «RtlMoveMemory», «Ptr»,pvData, «Ptr»,this.Ptr, «Ptr»,this.Len ) this.Ptr := DllCall( «GlobalFree», «Ptr»,this.Ptr, «Ptr» ) ; free global memory retHeader := «multipart/form-data; boundary=—————————-» . Boundary > StrPutUTF8( str ) < Local ReqSz := StrPut( str, «utf-8» ) — 1 this.Len += ReqSz ; GMEM_ZEROINIT|GMEM_MOVEABLE = 0x42 this.Ptr := DllCall( «GlobalReAlloc», «Ptr»,this.Ptr, «UInt»,this.len + 1, «UInt», 0x42 ) StrPut( str, this.Ptr + this.len — ReqSz, ReqSz, «utf-8» ) >LoadFromFile( Filename ) < Local objFile := FileOpen( FileName, «r» ) this.Len += objFile.Length ; GMEM_ZEROINIT|GMEM_MOVEABLE = 0x42 this.Ptr := DllCall( «GlobalReAlloc», «Ptr»,this.Ptr, «UInt»,this.len, «UInt», 0x42 ) objFile.RawRead( this.Ptr + this.Len — objFile.length, objFile.length ) objFile.Close() >RandomBoundary() < str := «0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z» Sort, str, D| Random str := StrReplace(str, «|») Return SubStr(str, 1, 12) >MimeType(FileName) < n := FileOpen(FileName, «r»).ReadUInt() Return (n = 0x474E5089) ? «image/png» : (n = 0x38464947) ? «image/gif» : (nimage/bmp» : (nimage/jpeg» : (nimage/tiff» : (nimage/tiff» : «application/octet-stream» >>

2 Ответ от Malcev 2020-03-03 17:15:28

  • Malcev
  • Разработчик
  • Неактивен

Re: AHK: Загрузка фотографии в беседу через API ВКонтакте

А где в апи написано, что если peer_id — группа, то ее айди указывать не надо?

Еще по теме:  Как прочитать все сообщения Вконтакте сразу

if conversation HTTP.Open(«GET», proxy «api.vk.com/method/photos.getMessagesUploadServer? vk_token «, true) else HTTP.Open(«GET», proxy «api.vk.com/method/photos.getMessagesUploadServer?peer_id=» vk_id » vk_token «, true)

3 Ответ от kolotilov256 2020-03-03 17:19:02 (изменено: kolotilov256, 2020-03-03 17:25:16)

Re: AHK: Загрузка фотографии в беседу через API ВКонтакте

Вот только вопрос, что указывать в peer_id ?
Пробовал id самой группы (https://vk.com/club182104136) (Вот эти 182104136)
Пробовал chat_id (который 200000000+cвой ид)
Пробовал отрицательный id (-182104136)

Ничего не сработало.

А по поводу того, почему удалил peer_id :
По моей логике фотография должна загружается куда-то в саму группу, а далее уже передаваться прикреплённой ссылкой в беседу.
На скриншоте в документации так и написано (Параметр peer_id , для загрузки фотографии в сообщениях сообществ)
У меня не личные сообщения сообщества, у меня беседа сообщества.

https://imgur.com/lpRc8Uv.png

4 Ответ от Malcev 2020-03-03 17:34:11

  • Malcev
  • Разработчик
  • Неактивен

Источник: forum.script-coding.com

Работа с API VK (Вконтакте) через JavaScript. Урок 2. Отправка сообщений и детальное отображение друга

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

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

Онлайн курс по JavaScript

Научитесь создавать приложения со сложными интерфейсами

Это основной язык для современной веб-разработки — почти 100% сайтов работает на JavaScript. Освойте его с нуля всего за 4 месяца, и вы сможете зарабатывать от 70 000 рублей.

Вас ждут 2 уровня по программированию на JavaScript
Подходит для новичков без опыта в программировании
Практика на вебинарах с разработчиками из крупных компаний

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

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