А вы знали что у NASA есть API?2
Для использования API вам нужен специальный API ключ, который вы получите после заполнения короткой анкеты:
Сразу же я решил что-то интересное придумать с этим делом, и так как я довольно неплохо разбираюсь в Телеграм API, я решил сделать телеграм канал в который буду раз в сутки постить какое-то астрономическое фото с пояснением в красивом виде, как это сделать? сейчас поясню.
1 - Создаете бота, как создать телеграм бота почитайте тут
2 - Создайте телеграм канал, и добавьте ранее созданного бота в этот канал как администратора
3 - Теперь вы сможете отправлять в свой канал сообщения посредством создания POST запроса, например вот с использованием Python, например ниже отправка картинки с подписью:
Где:
AUTH_TOKEN = Токен бота который вы ранее создали
CHANNEL_NAME = Имя канала, например @my_channel
CAPTION = Текстовая подпись к фото
URL = Ссылка на фото которое отправить в телегу
Естественно можете использовать хоть JavaScript, про остальные методы для телеги можно почитать тут.
Теперь про получения данных из NASA, там все просто, делаете GET запрос на то API которое вы выбрали (на том же сайте предоставляются линки, примерно в таком виде:
https://api.nasa.gov/planetary/earth/imagery?lon=100.75&... , вот DEMO_KEY нужно заменить на от ключ, который вы от NASA получили после заполенния анкеты)
Все, готово😁
То что я сделал, это канал, куда раз в сутки будет публиковаться красивое фото космоса, с описанием и автоматическим переводом на русский язык (после нажатия на ссылку под каждым постом идет переход на telegraph где описание доступно в дух языках, оригинала и русском) + добавлена возможность скачать эту картинку в HD качестве, ссылка на канал -> https://t.me/daily_nasa
Спасибо за внимание😁


Прочтя этот пост, решил реализовать нечто подобное для ВК.
Приложение раз в час/два и т.д. (настраивается) постит в Вашу группу в ВК рандомную картинку и описание к ней, используя 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
ВК как-то очень криво вставляет изображения, поэтому, в некоторых постах изображение вставляется, а в некоторых ссылка на картинку.