Прочтя этот пост, решил реализовать нечто подобное для ВК.
Приложение раз в час/два и т.д. (настраивается) постит в Вашу группу в ВК рандомную картинку и описание к ней, используя NASA API.
Дисклеймер: Я не супер программист(но очень хотелось бы), поэтому будет полно говнокода, поэтому, прошу сильно не пинать =).
Для начала, необходимо создать standalone-приложение в VK.
Оно нам понадобится для авторизации в соц.сети и получения Access Token, который позволит работать с VK API.
Мы же с вами программисты, а не (вставить любое слово), поэтому, будем писать всё вручную, а не эти ваши десигнеры использовать.
Данные(VKToken, NASAToken, ID Группы, данные об авторизации, ID группы, пользователя и настройки таймера) будем хранить в ini файле.
Для отображения таймера будем использовать QLCDNumber.
Наш хеадер главного окна получился таким:
И наш cpp файл. Если файл с настройками не найден, то программа создаст новый и поставит таймер стандартно на час.
В QLCDNumber ставим отображение до 8ми цифр.
И все наши виджеты загоняем в QGridLayout и выводим её.
Получилась вот такая штука:
Ничего сложного, правда?)
Интерфейс для настроек делаем по подобию, но, если что, ссылку на git оставлю в конц статьи.
Теперь, перейдём к самому интересному. API NASA и VK API.
У NASA есть много разного API, но мы будем работать с APOD(Astronomy Picture of the Day).
Для получения данных, необходимо отправить GET запрос на https://api.nasa.gov/planetary/apod?api_key=NASA_TOKEN
Пример: https://api.nasa.gov/planetary/apod?api_key=NASAToken&co...
В ответ мы получим json файл с таким содержимым:
Нам интересны значения: date, explanation, hdurl и copyright(Если фотография не в свободном доступе, то нужно ставить копирайт и NASA нас об этом предупреждает.)
А вот и полный список всех параметров, но нам будет интересен только "count"
Наша ссылка будет выглядеть так:
https://api.nasa.gov/planetary/apod?api_key=NASAToken&co...
NASAToken - Токен, который мы получили от NASA.
Авторизация в ВК и получение токена.
Пример авторизации в официальной документации:
Где client_id - id нашего приложения, scope - необходимые параметры доступа. В нашем случае нужно будет использовать offline, wall, groups. offline нужен для бессрочного token.
Так как ответ приходит немного кривой, требуется сделать немного косметических правок:
Затем, вытаскиваем из ссылки access_token и айди пользователя, сохраняем и переключаем авторизацию в True, затем, закрываем окно.
Пришла пора обработки JSON от NASA и загрузки данных на стену группы.
Сперва, давайте обработаем данные от НАСА.
Теперь, перейдем к загрузке полученных данных в группу. Нам понадобится метод wall.post и параметры owner_id, message, attachments, access_token.
Обратите внимание, идентификатор сообщества в параметре owner_id необходимо указывать со знаком "-" — например, owner_id=-1 соответствует идентификатору сообщества ВКонтакте API (club1)
Итоговая ссылка у нас получается:
https://api.vk.com/method/wall.post?owner_id=-" + GroupID + "&message=" + strk + "&attachments=" + attach + "&access_token=" + VKToken + "&v=5.131
Где GroupID - ай ди группы, который мы сохранили в настройках, strk - строка с копирайтом, датой, описанием, attach - ссылка на фото/видео, VKToken - наш access_token, который мы получили после авторизации.
В общем-то, всё. Мы написали программу, которая будет раз в n-часов постить в нашу группу ВК данные от NASA =).
Ссылка на Github с полным кодом: https://github.com/ac973k/NASAImageVKPost
Ссылка на VK API: https://vk.com/dev/methods
Ссылка на группу: https://vk.com/public200170365
ВК как-то очень криво вставляет изображения, поэтому, в некоторых постах изображение вставляется, а в некоторых ссылка на картинку.