The magic bash script collecting ilmanifesto just in time for your breakfast
This commit is contained in:
76
ilmanifesto.sh
Normal file
76
ilmanifesto.sh
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Minimal CLI interface for ilmanifesto.it
|
||||||
|
#
|
||||||
|
|
||||||
|
# Get latest news
|
||||||
|
curl -s --compressed \
|
||||||
|
-H 'accept: application/json; charset=utf-8' \
|
||||||
|
-H 'user-agent: okhttp/4.9.1' \
|
||||||
|
https://api.ilmanifesto.it/api/v1/wp/editions/latest > latest.json
|
||||||
|
|
||||||
|
# Or maybe older ones?
|
||||||
|
#curl -H 'accept: application/json; charset=utf-8' --compressed -H 'user-agent: okhttp/4.9.1' 'https://api.ilmanifesto.it/api/v1/wp/editions?pageSize=6&pageNumber=1'
|
||||||
|
|
||||||
|
# List
|
||||||
|
bold=$(tput bold)
|
||||||
|
normal=$(tput sgr0)
|
||||||
|
|
||||||
|
title=$(cat latest.json | jq -r .title)
|
||||||
|
subtitle=$(cat latest.json | jq -r .excerpt)
|
||||||
|
echo -e "${bold}${title}${normal}\n${subtitle}"
|
||||||
|
|
||||||
|
read -n 1 -r -p "Download and open? [Y/n]"
|
||||||
|
if [[ $REPLY =~ ^[Nn]$ ]];
|
||||||
|
then
|
||||||
|
echo "Bye!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# Login needed?
|
||||||
|
if [ ! -f "token.json" ];
|
||||||
|
then
|
||||||
|
|
||||||
|
# First login
|
||||||
|
read -p 'Email: ' email
|
||||||
|
read -sp 'Password: ' pass
|
||||||
|
|
||||||
|
curl -s --compressed \
|
||||||
|
-H 'accept: application/json, text/plain, */*' \
|
||||||
|
-H 'x-mobile-entitlement: app' -H 'content-type: application/json' \
|
||||||
|
-H 'user-agent: okhttp/4.9.1' \
|
||||||
|
-X POST https://api.ilmanifesto.it/api/v1/auth/login -d "{\"email\":\"$email\",\"password\":\"$pass\"}" > login.json
|
||||||
|
|
||||||
|
cat login.json | jq -r .token > token.json
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
# Renew token
|
||||||
|
timeout=$(cat token.json | jq .expiresIn)
|
||||||
|
let timepassed=`date +%s`-`stat -c %Y token.json`
|
||||||
|
|
||||||
|
if [[ $timepassed > $timeout ]] ; then
|
||||||
|
rtoken=$(cat token.json | jq -r .refreshToken)
|
||||||
|
curl -s --compressed \
|
||||||
|
-H 'accept: application/json, text/plain, */*' \
|
||||||
|
-H 'content-type: application/json' \
|
||||||
|
-H 'user-agent: okhttp/4.9.1' \
|
||||||
|
-X POST https://api.ilmanifesto.it/api/v1/auth/token \
|
||||||
|
-d "{\"refreshToken\":\"$rtoken\"}" > token.json
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get PDF
|
||||||
|
token=$(cat token.json | jq -r '.accessToken')
|
||||||
|
slug=$(cat latest.json | jq -r '.slug')
|
||||||
|
pdf=$(cat latest.json | jq -r '.pdf')
|
||||||
|
|
||||||
|
curl -H 'range: bytes=null-' \
|
||||||
|
-H "authorization: Bearer $token" -H 'accept: application/pdf' \
|
||||||
|
-H 'content-type: application/pdf' -H 'user-agent: okhttp/4.9.1' \
|
||||||
|
"https://api.ilmanifesto.it/api/v1/wp/pdfs/slug/$pdf/download" > $pdf.pdf
|
||||||
|
|
||||||
|
# And open it
|
||||||
|
xdg-open $pdf.pdf
|
||||||
Reference in New Issue
Block a user