import gspread
import json
from oauth2client.client import SignedJwtAssertionCredentials
from datetime import date, datetime, timedelta
def initializeParams():
today = date.today()
todayDt = int(today.strftime("%d"))
currentMth = int(today.strftime("%m"))
currentYr = int(today.strftime("%Y"))
TotalDays = 0
def monthName(currentMth):
if currentMth == 1:
return 'Jan'
if currentMth == 2:
return 'Feb'
if currentMth == 3:
return 'Mar'
if currentMth == 4:
return 'Apr'
if currentMth == 5:
return 'May'
if currentMth == 6:
return 'Jun'
if currentMth == 7:
return 'Jul'
if currentMth == 8:
return 'Aug'
if currentMth == 9:
return 'Sep'
if currentMth == 10:
return 'Oct'
if currentMth == 11:
return 'Nov'
if currentMth == 12:
return 'Dec'
def LeapYearCalc(year):
# Python program to check if the input year is a leap year or not
leapYear = 'N'
# To get year (integer input) from the user
# year = int(input("Enter a year: "))
if (year % 4) == 0:
if (year % 100) == 0:
if (year % 400) == 0:
leapYear = 'Y'
else:
leapYear = 'N'
else:
leapYear = 'Y'
else:
leapYear = 'N'
return leapYear
def genSpSheets(Year, Month, TtlDays, sh):
for i in range(1, int(TtlDays) + 1, 1):
ttl = str(Year) + '_' + str(Month) + '_' + str(i)
worksheet = sh.add_worksheet(title=ttl, rows="1000", cols="6")
LY = LeapYearCalc(currentYr)
if (LY == 'Y'):
if currentMth in (1, 3, 5, 7, 8, 10, 12):
TotalDays = 31
elif currentMth == 2:
TotalDays = 29
else:
TotalDays = 30
else:
if currentMth in (1, 3, 5, 7, 8, 10, 12):
TotalDays = 31
elif currentMth == 2:
TotalDays = 28
else:
TotalDays = 30
MySpreedSheet = str(monthName(currentMth)) + "_" + str(currentYr) + '_sheet1'
json_key = json.load(open('/home/pi/SecurityCamera/creds.json')) # json credentials
scope = ['https://spreadsheets.google.com/feeds',
'https://www.googleapis.com/auth/drive']
credentials = SignedJwtAssertionCredentials(json_key['client_email'], json_key['private_key'].encode(),
scope) # get email and key from creds
gc = gspread.authorize(credentials) # authenticate with Google
try:
sh = gc.open(MySpreedSheet)
sheet = sh.get_worksheet(int(todayDt) - 1)
return sheet
except:
sh = gc.create(MySpreedSheet)
# worksheet = sh.add_worksheet(title="20190901", rows="10000", cols="20")
genSpSheets(str(currentYr), str(currentMth), int(TotalDays), sh)
sh.del_worksheet(sh.worksheet("Sheet1"))
sh.share('Enter Email address of Google Drive here', perm_type='user', role='writer')
sheetOpn = gc.open(MySpreedSheet)
sheet = sh.get_worksheet(int(todayDt) - 1)
return sheet
def next_available_row(sheet):
str_list = list(filter(None, sheet.col_values(1)))
return str(len(str_list) + 1)
def insertLogRec(date, filename, fileType, server, fileUrl):
sheet = initializeParams()
next_row = next_available_row(sheet)
index = int(next_row)
if next_row == '1':
row = ['Date', 'File Name', "File Type", "File stored on", "File URL"]
sheet.insert_row(row, index)
next_row = '2'
index = 2
row = [date, filename, fileType, server, fileUrl]
sheet.insert_row(row, index)
else:
row = [date, filename, fileType, server, fileUrl]
sheet.insert_row(row, index)