### Run this on startup import requests import pandas as pd from datasets import Dataset, DatasetDict import streamlit as st from datetime import datetime from tqdm import tqdm st.title("Fetching all spots from dumpstermap.org") if "initialized" not in st.session_state: st.session_state.initialized = False if not st.session_state.initialized: url = "https://dumpstermap.herokuapp.com/dumpsters/withinbounds/-180/-90/180/90/" response = requests.get(url) entry = response.json() dumpsters = entry["features"] cols = ["Latitude", "Longitude", "dumpster_created", "voting", "comment", "voting_created", "name"] dumpsters_df = pd.DataFrame(columns=cols) for dumpster in tqdm(dumpsters[:4]): st.markdown(dumpster['id']) url = f"https://dumpstermap.herokuapp.com/dumpsters/{dumpster['id']}" response = requests.get(url) if response.status_code != 200: print("Problem fetching from:", url, response.status_code) try: entry = response.json() rows = [] lat = entry['geometry']['coordinates'][1] lon = entry['geometry']['coordinates'][0] dumpster_created = entry['properties']['created'] for vote in entry['properties']['voting_set']: rows.append({ "Latitude": lat, "Longitude": lon, "dumpster_created": dumpster_created, "voting": vote['value'], "comment": vote['comment'], "voting_created": vote['created_date'], "name": vote['name'] }) if rows: dumpsters_df = pd.concat([dumpsters_df, pd.DataFrame(rows)], ignore_index=True) except Exception as e: print(e) dataset = Dataset.from_pandas(dumpsters_df) dataset_dict = DatasetDict({datetime.now().strftime("%Y.%m.%d"): dataset}) dataset_dict.push_to_hub("Hitchwiki/dumpster_diving_spots") st.session_state.initialized = True