Spaces:
Sleeping
Sleeping
File size: 2,559 Bytes
ad91a7c 4e182e6 15434c2 ad91a7c 96fbe55 ad91a7c 4e182e6 ec26d3d ad91a7c 8df3641 ec26d3d ad91a7c 18cd106 8df3641 4e182e6 ad91a7c ec26d3d 4e182e6 ec26d3d ad91a7c ec26d3d 15434c2 4e182e6 ec26d3d 18cd106 |
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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
import streamlit as st
from requests_oauthlib import OAuth2Session
from googleapiclient.discovery import build
from datetime import datetime, timedelta
# ************ Credentials (Important Security Note - See above warning) ***************
CLIENT_ID = "243651188615-q9970hsa72e028jnu3qqsup6vl02epnn.apps.googleusercontent.com"
CLIENT_SECRET = st.secrets["google_search_console_api"] # Retrieve from Hugging Face Secrets
REDIRECT_URI = 'https://huggingface.co/spaces/blazingbunny/GSC-analytics/'
# *********************************************
# OAuth Configuration
AUTHORIZATION_BASE_URL = 'https://accounts.google.com/o/oauth2/v2/auth'
TOKEN_URL = 'https://www.googleapis.com/oauth2/v4/token'
SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']
# Initiate OAuth Flow
google_oauth = OAuth2Session(CLIENT_ID, redirect_uri=REDIRECT_URI, scope=SCOPES)
authorization_url, state = google_oauth.authorization_url(AUTHORIZATION_BASE_URL, access_type="offline", prompt="select_account")
# Streamlit UI
st.title("Search Analytics Viewer")
# Authenticate with Google
if st.button("Authenticate with Google"):
st.write("Please authenticate with Google:", authorization_url)
# Handle Redirect
redirect_response = st.text_input("Paste the full redirect URL here:")
token = google_oauth.fetch_token(TOKEN_URL, client_secret=CLIENT_SECRET, authorization_response=redirect_response)
# Use Authorized Session to Make API Requests
credentials = google_oauth.credentials
service = build('webmasters', 'v3', credentials=credentials)
# Fetch list of available domains
domains_request = service.sites().list().execute()
available_domains = [site['siteUrl'] for site in domains_request.get('siteEntry', [])]
# Dropdown field for selecting domain
selected_domain = st.selectbox("Select Domain:", available_domains)
# Date inputs
start_date = st.date_input("Start Date")
end_date = st.date_input("End Date")
# Fetch data for selected domain
if st.button("Fetch Data"):
request = {
'startDate': start_date.strftime("%Y-%m-%d"),
'endDate': end_date.strftime("%Y-%m-%d"),
'dimensions': ['query', 'page'],
'siteUrl': selected_domain
}
response = service.searchanalytics().query(siteUrl=request['siteUrl'], body=request).execute()
# Display Search Analytics Data (Customize this!)
if 'rows' in response:
st.dataframe(response['rows'])
else:
st.write('No data found')
|