DigitalSEE / apps /visualize.py
Kristiyan
Added Streamlit app files from GitHub
14846af
import streamlit as st
import json
import folium
from streamlit_folium import folium_static
import requests
# Configure the page and theme
st.set_page_config(
page_title="DigitalSEE",
layout="wide",
initial_sidebar_state="expanded"
)
def app():
st.title("DigitalSEE")
try:
url = 'https://raw.githubusercontent.com/Bestroi150/DigitalSEE/main/JSON/EN.json'
response = requests.get(url)
response.raise_for_status()
data = response.json()
except requests.exceptions.RequestException as e:
st.error(f"An error occurred while fetching the file: {e}")
st.stop()
# Sidebar: File selection
st.sidebar.header("File Selection")
filenames = [entry['filename'] for entry in data]
selected_file = st.sidebar.selectbox("Select a file to visualize", filenames)
# Filter the selected entry
selected_entry = next(item for item in data if item['filename'] == selected_file)
site_object = selected_entry['content']['siteObject']
# Author and general information
st.header("Author & Publication Details")
st.write(f"**Author:** {site_object['author']}")
st.write(f"**Publication:** {site_object['authorPublication']}")
col1, col2 = st.columns(2)
col1.write(f"**Original Language:** {site_object['originalLanguage']['#text']} "
f"({site_object['originalLanguage']['@xml:lang']})")
col2.write(f"**Publication Language:** {site_object['publicationLanguage']['#text']} "
f"({site_object['publicationLanguage']['@xml:lang']})")
# Description and Date
st.header("Description")
st.write(f"**Date:** {site_object['date']}")
st.write(f"**Description:** {site_object['description']}")
# Display geographic coordinates
st.header("Geographic Coordinates")
latitude = site_object['geographicCoordinates'].get('latitude')
longitude = site_object['geographicCoordinates'].get('longitude')
if latitude and longitude:
st.write(f"**Location:** {site_object['nameSource']} (`{site_object['nameContemporary']}`)")
latitude, longitude = float(latitude), float(longitude)
m = folium.Map(location=[latitude, longitude], zoom_start=13)
folium.Marker([latitude, longitude], tooltip=site_object['nameContemporary']).add_to(m)
folium_static(m)
else:
st.warning("Geographic coordinates not available for this entry.")
# Additional information
st.header("ℹ️ Additional Information")
st.write(f"**Keywords:** {site_object.get('keywords', 'N/A')}")
st.write(f"**Source Content:** {site_object.get('sourceContent', 'N/A')}")
st.sidebar.info("Use the sidebar to select a different file to visualize.")
if __name__ == "__main__":
app()