Files
Buffteks-Website/webpages/testing.py
2024-09-30 22:03:53 -05:00

144 lines
4.2 KiB
Python

import pandas as pd
import streamlit as st
import requests
import folium
from streamlit_folium import folium_static
import sqlite3
from datetime import datetime
from webpages import code_editor as ce
# def get_ip():
# try:
# response = requests.get('https://api.ipify.org')
# return response.text
# except:
# return "Unable to get IP"
# def get_location(ip_address):
# try:
# response = requests.get(f'https://ipapi.co/{ip_address}/json/')
# data = response.json()
# return data['latitude'], data['longitude'], data['city'], data['country_name']
# except:
# return None, None, "Unknown", "Unknown"
# def save_visitor(conn, lat, lon, city, country):
# timestamp = datetime.now()
# c = conn.cursor()
# c.execute("INSERT INTO visitors (latitude, longitude, city, country, timestamp) VALUES (?, ?, ?, ?, ?)",
# (lat, lon, city, country, timestamp))
# conn.commit()
# def get_all_visitors(conn):
# df = pd.read_sql_query("SELECT * from visitors", conn)
# return df
# def create_map(df):
# m = folium.Map(location=[41.2706, -97.1749], zoom_start=4)
# # Create a custom icon
# for _, row in df.iterrows():
# folium.Marker(
# location = [row['latitude'], row['longitude']],
# popup=f"{row['city']}",
# tooltip=f"{row['city']}"
# ).add_to(m)
# return m
def testing():
st.title("Testing Page")
st.title("Title")
st.markdown(f"The remote ip is {get_remote_ip()}")
st.write(st.context.headers)
from streamlit import runtime
from streamlit.runtime.scriptrunner import get_script_run_ctx
from streamlit.web.server.websocket_headers import _get_websocket_headers
def get_forwarded_ip():
headers = _get_websocket_headers()
# Example: "X-Forwarded-For': '13.51.91.225, 162.158.90.188'"
x_forwarded_for = headers['X-Forwarded-For']
first_ip = x_forwarded_for.split(', ')[0]
return first_ip
def get_remote_ip() -> str:
"""Get remote ip."""
try:
ctx = get_script_run_ctx()
if ctx is None:
return None
session_info = runtime.get_instance().get_client(ctx.session_id)
if session_info is None:
return None
except Exception as e:
return None
return session_info.request.remote_ip
# ce.code_editor()
# # # [Work]code for instering youtube videos
# # video = "https://youtu.be/HluANRwPyNo?feature=shared"
# # st.video(video)
# Initialize the database
# conn = sqlite3.connect('./files/visitor_locations.db')
# c = conn.cursor()
# c.execute('''CREATE TABLE IF NOT EXISTS visitors
# (id INTEGER PRIMARY KEY AUTOINCREMENT,
# latitude REAL,
# longitude REAL,
# city TEXT,
# country TEXT,
# timestamp DATETIME)''')
# conn.commit()
# st.title('Visitor Location Tracker')
# # Get and save current visitor's location
# ip = get_ip()
# lat, lon, city, country = get_location(ip)
# if lat and lon:
# save_visitor(conn, lat, lon, city, country)
# st.write(f"Your location: {city}, {country}")
# else:
# st.write("Unable to determine your location")
# # Display all visitors on a map
# st.subheader('All Visitor Locations')
# df = get_all_visitors(conn)
# if not df.empty:
# m = create_map(df)
# folium_static(m)
# else:
# st.write("No visitor data available yet.")
# # Display visitor statistics
# st.subheader('Visitor Statistics')
# col_visitors, col_cities, col_countries = st.columns(3)
# if not df.empty:
# with col_visitors:
# st.metric(label="Total visitors", value= df['id'].nunique())
# with col_cities:
# st.metric(label="Total cities", value= df['city'].nunique())
# with col_countries:
# st.metric(label="Total countries", value= df['country'].nunique())
# st.write("Top 5 cities:")
# st.write(df['city'].value_counts().head())
# else:
# st.write("No visitor data available yet.")
# # Close the database connection
# conn.close()