-
Notifications
You must be signed in to change notification settings - Fork 0
/
S99googledriveupload
38 lines (30 loc) · 1.6 KB
/
S99googledriveupload
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/bin/sh
# Wyze Cam-to-Google Drive
# Uploads newly-recorded videos to Google Drive when running from a Wyze Cam with wz_mini_hacks installed
CLIENTID=""
CLIENTSECRET=""
REFRESHTOKEN=""
RECORDINGDIR="/media/mmc/record"
while true
do
touch /tmp/lastwatch
# touch a file and set its timestamp to 5 minutes in the future
touch -t $(date -d "@$(($(date +%s) + 300))" +"%Y%m%d%H%M.%S") /tmp/limitwatch
# Arbitrary pause so as to not continuously write to microSD card
sleep 5
# Look for newly-recorded videos on the microSD card
# The date & time on boot of my Wyze Cam Pan v2 resets to a specific date & time in 2021 until it's able to look up the correct time via NTP, so both limitwatch and exec are used to avoid false-positives
find $RECORDINGDIR -type f -newer /tmp/lastwatch ! -newer /tmp/limitwatch -exec sh -c 'test "$(date -r "{}" +%Y)" -ne "2021"' \; -print | while read filepath; do
YYYYMMDD=$(basename $(dirname $(dirname "$filepath")))
HH=$(basename $(dirname "$filepath"))
MM=$(basename "$filepath" .mp4)
RESULT=$(curl -k -d "client_id=$CLIENTID&client_secret=$CLIENTSECRET&refresh_token=$REFRESHTOKEN&grant_type=refresh_token" https://accounts.google.com/o/oauth2/token)
ACCESSTOKEN=$(echo "$RESULT" | grep -o '"access_token": "[^"]*"' | sed 's/"access_token": "//' | sed 's/"//')
# Upload via curl
curl -k -X POST -L \
-H "Authorization: Bearer $ACCESSTOKEN" \
-F "metadata={name :'${YYYYMMDD}-${HH}${MM}.mp4'};type=application/json;charset=UTF-8" \
-F "file=@$filepath;type=video/mp4" \
"https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart"
done
done