TelegramBot + Instagram

Scriam in postul anterior ca am facut un mic script inutil, for fun, pentru ca se poate. Scriptul ma anunta cati followeri am pe Instagram si cati am in plus sau in minus fata de ultima data cand a fost rulat scriptul.

Pe scurt: Instagram iti pune la dispozitie un API, dar nu prea. API-ul e pentru ceva aplicatii facute prin Facebook, trebuie sa te faci Facebook developer, etc, etc, n-am prea inteles bine si nici nu mi-am batut capul. Am gasit in schimb o solutie prin care Instagram iti varsa un json pe care poti sa-l parsezi: curl 'https://www.instagram.com/{ig_username}/?__a=1'

Abuse it wisely. Bineinteles, trebuie setat un cookie in request-ul cURL si eu am lasat si UserAgent-ul. Nu cred ca e nevoie de UA, dar nu costa nimic sa fie acolo.

Json-ul respectiv poate fi parsat prin jq si numarul de followeri salvat intr-o variabila. Ceva de genul: followers=$(curl {URL} | jq .graphql.user.edge_followed_by.count).

Ce faceti pe urma cu informatia e treaba voastra, eu am ales sa compar ziua de ieri cu ziua de azi si sa trimit informatia catre Telegram. Logica din spatele if-urilor probabil nu e cea mai buna, but it works.

#!/bin/bash

follow_db=$(cat /tmp/followdb)
TOKEN=aivreatu
CHID=nope
CURL=$(curl 'https://www.instagram.com/{username}/?__a=1' -X 'GET' -H 'Cookie: haha' -H 'User-Agent: ceva' -s | jq .graphql.user.edge_followed_by.count)

if [[ $CURL == '' ]]; then
    curl -s "https://api.telegram.org/$TOKEN/sendMessage?chat_id=$CHID&text=Eroare in cURL Instagram"
    exit 1
fi

cur_followers=$CURL
yest_followers=$follow_db
amount=$(echo $(($cur_followers-$yest_followers)))


if [[ $yest_followers < $cur_followers ]]; then
    curl -s "https://api.telegram.org/$TOKEN/sendMessage?chat_id=$CHID&text=Instagram report ?:%0AYou have gained $amount new followers, you now have a total of $cur_followers"
elif [[ $yest_followers > $cur_followers ]]; then
    curl -s "https://api.telegram.org/$TOKEN/sendMessage?chat_id=$CHID&text=Instagram report ?:%0AYou have lost $amount followers, you now have a total of $cur_followers"
elif [[ $yest_followers == $cur_followers ]]; then
    curl -s "https://api.telegram.org/$TOKEN/sendMessage?chat_id=$CHID&text=Instagram report ?:%0ANo followers change, you still have $cur_followers"
fi

echo $cur_followers > /tmp/followdb

exit 0

Probabil scriptul putea fi scris mai frumos, probabil nu. Probabil putea fi scris mai eficient, probabil nu. Probabil putea sa fie un oneliner, probabil… nu. La mine atat s-a putut. If it looks stupid but it works, then it’s not stupid. Pentru cei care au citit “codul” si au vazut ceva dubios acolo, puteti sa-mi ziceti in comentarii.
PS: %0A inseamna newline(enter) pentru TelegramBot, am aflat asta cand am facut scriptul.

Ne vedem in postul urmator.

TelegramBot

Am zis ca am cateva postari cu Zabbix si Telegram. Well, am mintit, postarea o sa fie mai mult despre Telegram, si poate prea putin despre modul cum am integrat Zabbix-ul cu Telegramul. Hai sa-i dam drumul.

Probabil ati citit postarea in care am integrat Zabbix cu Slack, ei bine, cum sunt total fanul conturilor multe si inutile si aplicatiilor instalate pe telefon care nu aduc un plus de valoare, am zis ca e momentul sa renunt la Slack (il foloseam doar pentru notificarile din Zabbix) si sa aduc cumva notificarile intr-o aplicatie ce o folosesc mai des: Telegram.

Am cautat o modalitate sa integrez Zabbix cu Telegram si am gasit si o solutie oficiala. Cum se procedeaza pe scurt? Iti faci un bot, primesti un token, faci un canal nou in care te adaugi pe tine si bot-ul creat, apoi cu putin kung-fu pe care-l gasiti in documentatia oficiala ajungi sa integrezi alertele de Zabbix cu Telegram. Mesajele se primesc in canalul pe care l-ai creat anterior. Simplu, eficient.

Partea misto la TelegramBot e ca de fapt faci un request prin cURL cu ce mesaj vrei tu si asta m-a facut sa ma gandesc la un script semi-misto si putin inutil, dar I did it for fun, deci nu conteaza. Vorbim de script in urmatoarea postare, momentam va las sa macinati informatia asta.

Ah, BTW, merge integrat si Nagios cu Telegram prin aceeasi metoda. Not a fan of Nagios, chiar il urasc din toata inima si din adancul sufletului, dar ma gandesc ca sunt fani Nagios pe aici care se intreaba daca merge o integrare Nagios + Telegram. Raspunsul este: Da, merge.

Ne vedem in postul urmator.

Absente nemotivate

Am lipsit un an si ceva, am fost ocupat cu altele. Am vreo doua postari de scris, nimic deosebit, ceva cu Zabbix, Telegram, Uptime Kuma.

Intre timp puteti sa va uitati la ce am lucrat anul trecut: vechea mea pasiune, fotografia. Imi puteti gasi galeria foto pe Instagram direct sau pe pagina embedded din blog.

In orice caz, sper ca v-ati vaccinat si n-ati murit de la Covid (sigur cei care citesc n-au murit) si sper sa va paca contentul ce urmeaza. (Vorbesc cu voi, cei din robots.txt, ca nu stiu cine ma mai citeste)