import streamlit as st import requests import pandas as pd import matplotlib.pyplot as plt # 1. Sayfa Ayarı st.set_page_config(page_title="Fatih Han Pro", layout="wide") # 2. CSS: Başlık ve Panel Sabitleme st.markdown(""" """, unsafe_allow_html=True) @st.cache_data(ttl=600) def verileri_cek(): url = "https://api.exchangerate-api.com/v4/latest/TRY" try: oranlar = requests.get(url).json()["rates"] isimler = { "USD": "Amerikan Doları", "EUR": "Euro", "GBP": "İngiliz Sterlini", "KWD": "Kuveyt Dinarı", "BHD": "Bahreyn Dinarı", "OMR": "Umman Riyali", "JOD": "Ürdün Dinarı", "CHF": "İsviçre Frangı", "CAD": "Kanada Doları", "AUD": "Avustralya Doları", "SAR": "Suudi Riyali", "AED": "B.A.E Dirhemi", "QAR": "Katar Riyali", "JPY": "Japon Yeni", "RUB": "Rus Rublesi", "AZN": "Azerbaycan Manatı", "IQD": "Irak Dinarı", "NOK": "Norveç Kronu" } return pd.DataFrame([{"Kod": k, "Isim": isimler.get(k, f"{k} Birimi"), "Fiyat": round(1/v, 4)} for k, v in oranlar.items() if v != 0]) except: return pd.DataFrame(columns=["Kod", "Isim", "Fiyat"]) if 'filtre' not in st.session_state: st.session_state.filtre = "Hepsi" df_ana = verileri_cek() st.title("📊 PİYASA TERMİNALİ V9.3") # --- Kontroller --- c1, c2, c3, c_search = st.columns([1, 1, 1, 3]) if c1.button("🏠 Hepsi"): st.session_state.filtre = "Hepsi" if c2.button("⭐ Popüler"): st.session_state.filtre = "Populer" if c3.button("📈 Değerli"): st.session_state.filtre = "Pahali" arama = c_search.text_input("", placeholder="🔍 Ara...", label_visibility="collapsed").upper() df_goster = df_ana.copy() if arama: df_goster = df_goster[df_goster['Kod'].str.contains(arama) | df_goster['Isim'].str.upper().contains(arama)] if st.session_state.filtre == "Populer": df_goster = df_goster[df_goster['Kod'].isin(["USD", "EUR", "GBP", "CHF", "KWD", "SAR", "AZN", "JPY"])] elif st.session_state.filtre == "Pahali": df_goster = df_goster.sort_values(by="Fiyat", ascending=False) # --- Ana Gövde --- sol, sag = st.columns([7, 3]) with sol: st.dataframe(df_goster, use_container_width=True, height=580, hide_index=True) with sag: with st.container(border=True): st.subheader("⚙️ İşlem Merkezi") secili_kod = st.selectbox("Döviz Seç", df_goster['Kod'].tolist(), key="sb_v93") secili_satir = df_goster[df_goster['Kod'] == secili_kod].iloc[0] fiyat = secili_satir['Fiyat'] # --- SEKMELİ YAPI (TİTREMEYİ VE KARIŞIKLIĞI ÖNLER) --- tab1, tab2 = st.tabs(["🧮 Hesapla", "📈 Grafik"]) with tab1: st.write(f"**{secili_satir['Isim']}**") miktar = st.number_input("Miktar (₺)", value=100.0) st.success(f"{round(miktar/fiyat, 2)} {secili_kod}") with tab2: fig, ax = plt.subplots(figsize=(4, 3)) fig.patch.set_facecolor('#0e1117') ax.set_facecolor('#1e1e2e') y = [fiyat*0.99, fiyat*1.01, fiyat*0.98, fiyat*1.02, fiyat] ax.plot(["-4", "-3", "-2", "-1", "Bugün"], y, color='#cba6f7', marker='o') ax.tick_params(colors='white', labelsize=7) plt.tight_layout() st.pyplot(fig)