In [32]:
__author__ = 'Mike'
import csv
import requests
import pprint
import gspread
import sys
from time import sleep
import socket
import json
import pandas as pd
from oauth2client.client import SignedJwtAssertionCredentials
#Login to Google Drive
json_key = json.load(open('Update Script-b4827ff38372.json'))
scope = ['https://spreadsheets.google.com/feeds']
credentials = SignedJwtAssertionCredentials(json_key['client_email'], json_key['private_key'], scope)
gc = gspread.authorize(credentials)
#Grab FB API Key
json_fb_key = json.load(open('fb_api_key.json'))
apikey = json_fb_key['credentials']['apikey'].encode('ascii','ignore')
#Create a function that reads a Spreadsheet from Gdrive and stores the relevant column as a variable.
def getFBdataGroup(apikey,postid):
tries = 5
while tries >= 0:
try:
endpoint = 'https://graph.facebook.com/v2.3/'+postid+'?access_token='+apikey
response = requests.get(endpoint)
fb_data = response.json()
return fb_data
except:
if tries == 0:
break
else:
sleep(3)
tries -= 1
continue
def readSheetCol(sheet,tab,col):
sheet = gc.open(sheet)
input_sheet = sheet.worksheet(tab)
#store the postids in a list
values_list = input_sheet.col_values(col)
#make sure we start processing values on the second row of the sheet
return values_list
def getFBdataReach(apikey,postid):
tries = 5
while tries >= 0:
try:
endpoint = 'https://graph.facebook.com/v2.3/'+postid+'/insights/post_impressions_unique?access_token='+apikey
response = requests.get(endpoint)
fb_data = response.json()
return fb_data
except:
if tries == 0:
break
else:
sleep(3)
tries -= 1
continue
def getFBdataViralReach(apikey,postid):
tries = 5
while tries >= 5:
try:
endpoint = 'https://graph.facebook.com/v2.3/'+postid+'/insights/post_impressions_viral_unique?access_token='+apikey
response = requests.get(endpoint)
fb_data = response.json()
return fb_data
except:
if tries == 0:
break
else:
sleep(3)
tries -= 1
continue
def getFBdataLinkClicks(apikey,postid):
tries = 5
while tries >= 5:
try:
endpoint = 'https://graph.facebook.com/v2.3/'+postid+'/insights/post_consumptions_by_type?access_token='+apikey
response = requests.get(endpoint)
fb_data = response.json()
return fb_data
except:
if tries == 0:
break
else:
sleep(3)
tries -= 1
continue
def getFBdataComments(apikey,postid):
tries = 5
while tries >= 5:
try:
endpoint = 'https://graph.facebook.com/v2.3/'+postid+'/comments?summary=true&access_token='+apikey
response = requests.get(endpoint)
fb_data = response.json()
return fb_data
except:
if tries == 0:
break
else:
sleep(3)
tries -= 1
continue
def getFBdataLikes(apikey,postid):
tries = 5
while tries >= 5:
try:
endpoint = 'https://graph.facebook.com/v2.3/'+postid+'/likes?summary=true&access_token='+apikey
response = requests.get(endpoint)
fb_data = response.json()
return fb_data
except:
if tries == 0:
break
else:
sleep(3)
tries -= 1
continue
In [33]:
sheet = gc.open("Atlas Facebook Tracker")
analysis_sheet = sheet.worksheet("Analysis")
values_list = readSheetCol("Atlas Facebook Tracker","Analysis",14)
col_date = readSheetCol("Atlas Facebook Tracker","Analysis",1)
col_url = readSheetCol("Atlas Facebook Tracker","Analysis",3)
d = {'PostID' : pd.Series(values_list[1:], index=[item for item in range(len(values_list)-1)]),
"Date" : pd.Series(col_date[1:], index=[item for item in range(len(col_date)-1)]),
"URL" : pd.Series(col_url[1:], index=[item for item in range(len(col_url)-1)])}
In [34]:
df = pd.DataFrame(d)
In [37]:
df[2565:2575]
Out[37]:
In [17]:
Out[17]:
In [ ]:
In [ ]: