'View website visit stats Heroku / Streamlit
Is there a way to track how many visits I have to my website? If yes, is there a way to add a counter to a streamlit application?
Solution 1:[1]
The easiest way is to use Google Analytics:
anlytcs_code = """<script async src="https://www.googletagmanager.com/gtag/js?id=UA-XXXXXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-XXXXXXXXX');
</script>"""
# Fetch the path of the index.html file
path_ind = os.path.dirname(st.__file__)+'/static/index.html'
# Open the file
with open(path_ind, 'r') as index_file:
data=index_file.read()
# Check whether there is GA script
if len(re.findall('UA-', data))==0:
# Insert Script for Google Analytics
with open(path_ind, 'w') as index_file_f:
# The Google Analytics script should be pasted in the header of the HTML file
newdata=re.sub('<head>','<head>'+anlytcs_code,data)
index_file_f.write(newdata)
While using the above code, replace the value of the id with the one generated for your project on Google Analytics.
ReferenceSolution 2:[2]
https://community.plotly.com/t/adding-google-analytics-tracking-code-to-dash-app/17297/5
i found a better answer here like following:
import dash
app = dash.Dash(__name__)
app.index_string = """<!DOCTYPE html>
<html>
<head>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131327483-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-131327483-1');
</script>
{%metas%}
<title>{%title%}</title>
{%favicon%}
{%css%}
</head>
<body>
{%app_entry%}
<footer>
{%config%}
{%scripts%}
{%renderer%}
</footer>
</body>
</html>"""
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Smaranjit Ghose |
Solution 2 | Samir |