Friday, December 10, 2021

Upload Files on Google Drive using CURL

Initiate an automated backup on Google Drive using shell script.

Steps :

a) Generate client id and secret key.

b) Add Google logged in user as a Test user in consent screen.

c) Enable Google drive API

d) Generate Authorization Code (One Time)

https://accounts.google.com/o/oauth2/auth?client_id=xxxxxxxx&redirect_uri=http://localhost&response_type=code&scope=https://www.googleapis.com/auth/drive&access_type=offline
e) Generate Refresh Token (One Time)
curl --request POST --data "code=xxxxxxxx&client_id=xxxxxxxxxxxx&client_secret=xxxxxxxxxxxx&redirect_uri=http://localhost&grant_type=authorization_code" https://oauth2.googleapis.com/token
f) Generate Access Token (Always)
curl --request POST --data "client_id=xxxxxxxxxxx&client_secret=xxxxxxxxxxxxxxx&refresh_token=xxxxxxxxxxxxx&grant_type=refresh_token" https://oauth2.googleapis.com/token
g) Upload File on Google Drive (Always)
curl -X POST -L \
    -H "Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxx" \
    -F "metadata={name : 'imagename.png'};type=application/json;charset=UTF-8" \
    -F "file=@imagename.png;type=image/png" \
   "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart"

Note : Refresh Tokens expire in 1 week if your app is not set as production. Change publishing status of your app from testing to production to use your refresh token always.

The Publishing Status option can be found in 'Oauth Consent Screen' which is under API & Services.

See complete instructions in this video. 

 



Sunday, December 5, 2021

Alert notification on Ubuntu Linux about certain task after given time duration

This happens always with me. I boil milk regularly and it always got boiled over. The problem is I cannot stand 10 mins while watching it, not even with phone. Generally I leave the place immediately and start finishing my pending work on the laptop. I tell myself, I am going to check after 5 min but I get occupied in the work and many times I remember when I get burning smell. Not only it is wastage of milk but also the expensive LPG.

Now I have found the solution only because I start working on my Ubuntu laptop after burning the stove, if I would be busy with my phone, this solution would not work and I would have to find some alarm or similar feature.

I run an alert command which opens a GUI pop-up box. The challenge here was, when I first implemented the command, it opens the pop-up but in the same terminal window where command is running. Of course I was working in some other window so I would never know about the pop-up. Now this solution opens the pop-up over any window and I am able to know about my task.

I had to install a package named wmctrl

sudo apt install wmctrl

Now I run the command

sleep 480; (sleep 1 && wmctrl -F -a "top" -b add,above) &(zenity --info --title="top" --text="Watch the Milk")

If I want alert pop up after 8 min. 480 is in seconds . If I need alert after 5 min I use command.

sleep 300; (sleep 1 && wmctrl -F -a "top" -b add,above) &(zenity --info --title="top" --text="My Alert Message")

It opens the pop up with message over any window and it reminds me about the task.