Автоматизация сохранения данных из 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
значит мы все сделали верно.
Вы прекрасны! Автоматизация во все дома!