Автоматизация сохранения данных из Instagram

Привет, дааа снова CLI утилита

Зачем?

Хочу периодически бэкапить некоторые Instagram аккаунты и опционально иметь возможность скачивать фото из профиля, сториз, IGTV видео, описание фото, само фото и пр. Также автоматизирую выкачивание фото, которые я добавил в сохранёнки, добавлю возможность выбирать какой аккаунт бекапить, просто подпиской на данного пользователя. И выкачивание доступных сториз у пользователей.

Как сделаем?

Воспользуемся тулзой на Питоне instaloader можете изучить, какие данные вы сможете выкачивать с ее помощью. Установлю программу и настрою ее на своей VPS и настрою вызов программы по крону.

Делаем

Устанавливаем утилиту. Понятное дело нужен питон на машине:

pip3 install instaloader

  • создаю отдельную папку для скаченных данных:

cd ~/tools mkdir instagram

  • настраиваем конфигурационный файл с логином и паролем с Instagram аккаунтом для утилиты:

vim ~/cd/.config/instaloader/main.conf

  • вводим наш логин и пароль от учетной записи Instagram:

--login=cli_download_beaver_inst --password=123456

  • сохраняем файл

Я для этой утилиты завел отдельный аккаунт. Не стал привязывать свой основной аккаунт так как отдельным аккаунтом удобнее оперировать.

  • создаем скрипт для крона: vim ~/.config/instaloader/cron.sh

  • пишем простой скрипт:

#!/bin/bash cd ~/tools/instagram/ instaloader +~/.config/instaloader/main.conf :stories -F -q instaloader +~/.config/instaloader/main.conf :saved -F -q instaloader +~/.config/instaloader/main.conf @cli_download_beaver_inst -F -q

Объясню каждую строчку:

  • выкачиваем stories которые доступны в нашем аккаунте @cli_download_beaver_inst

  • выкачиваем все фотографии и данные которые мы добавили в сохранёнки для @cli_download_beaver_inst

  • выкачиваем все фотографии и данные пользователей, на которых подписан @cli_download_beaver_inst

  • ключ -q запускает программу в “тихом режиме” т.е показываются только ошибки

  • ключ -F нам позволит нам пропускать скачивание, если мы уже скачивали данный файл:

tatarinovms/2020-08-01_11-14-15_UTC_profile_pic.jpg already exists Retrieving posts from profile tatarinovms. [ 1/1064] tatarinovms/2020-07-17_17-55-20_UTC.jpg exists [Хозяин, ты что ешь? Прям это?] unchanged json

т.е например мы уже не будем перекачивать все 1064 фотки, так как они уже есть.

  • сохраняем наш скрипт
  • делаем наш скрипт исполняемым

chmod u+x ~/.config/instaloader/cron.sh

  • настраиваем cron Чтобы добавить задание в cron используем утилиту crontab:

crontab -e

  • добавляем строчку:

0 20 * * * ~/.config/instaloader/cron.sh

  • т.е мы вызываем скрипт каждый день в 20:00.

P.S если не знаете как крону указать нужное вам время, используете сайт crontab.guru на нем можно подобрать желаемый вам вариант.

  • сохраняем изменение в crontab: Если появилась строчка:

crontab: installing new crontab

значит мы все сделали верно.

Вы прекрасны! Автоматизация во все дома!

Written on June 22, 2020