Spaces:
Sleeping
Sleeping
import streamlit as st | |
import pandas as pd | |
import requests | |
# Define array of file paths for each book | |
book_files = { | |
"Maliks_Muwataa": [ | |
"maliks_muwataa_ahadith.utf8.csv", | |
"maliks_muwataa_ahadith_mushakkala_mufassala.utf8.csv" | |
], | |
"Musnad_Ahmad_Ibn-Hanbal": [ | |
"musnad_ahmad_ibn-hanbal_ahadith.utf8.csv", | |
"musnad_ahmad_ibn-hanbal_ahadith_mushakkala.utf8.csv" | |
], | |
"Sahih_Al-Bukhari": [ | |
"sahih_al-bukhari_ahadith.utf8.csv", | |
"sahih_al-bukhari_ahadith_mushakkala_mufassala.utf8.csv" | |
], | |
"Sahih_Muslim": [ | |
"sahih_muslim_ahadith.utf8.csv", | |
"sahih_muslim_ahadith_mushakkala_mufassala.utf8.csv" | |
], | |
"Sunan_Abu-Dawud": [ | |
"sunan_abu-dawud_ahadith.utf8.csv", | |
"sunan_abu-dawud_ahadith_mushakkala_mufassala.utf8.csv" | |
], | |
"Sunan_Al-Darimi": [ | |
"sunan_al-darimi_ahadith.utf8.csv", | |
"sunan_al-darimi_ahadith_mushakkala_mufassala.utf8.csv" | |
], | |
"Sunan_Al-Nasai": [ | |
"sunan_al-nasai_ahadith.utf8.csv", | |
"sunan_al-nasai_ahadith_mushakkala_mufassala.utf8.csv" | |
], | |
"Sunan_Al-Tirmidhi": [ | |
"sunan_al-tirmidhi_ahadith.utf8.csv", | |
"sunan_al-tirmidhi_ahadith_mushakkala_mufassala.utf8.csv" | |
], | |
"Sunan_Ibn-Maja": [ | |
"sunan_ibn-maja_ahadith.utf8.csv", | |
"sunan_ibn-maja_ahadith_mushakkala_mufassala.utf8.csv" | |
] | |
} | |
# Define function to read CSV file from GitHub | |
def read_csv_from_github(file_path): | |
response = requests.get(f"https://raw.githubusercontent.com/halimbahae/Hadith/main/{file_path}") | |
if response.status_code == 200: | |
return pd.read_csv(response.text) | |
else: | |
return None | |
# Main Streamlit app | |
def main(): | |
st.title("Hadith Viewer") | |
st.sidebar.title("Books") | |
selected_book = st.sidebar.selectbox("Select a Book", list(book_files.keys())) | |
selected_files = book_files[selected_book] | |
selected_file = st.sidebar.selectbox("Select a File", selected_files) | |
csv_df = read_csv_from_github(selected_file) | |
st.sidebar.subheader("Files in Selected Book") | |
for file in selected_files: | |
st.sidebar.write(file) | |
st.sidebar.subheader("Description") | |
st.sidebar.write("This is a viewer for the Hadith collections. You can select a book from the dropdown menu on the left, and choose whether you want to view the 'Mufassala' version or not.") | |
if csv_df is not None: | |
# Display dataframe with search, filters, and pagination | |
st.dataframe(csv_df) | |
# Show rows per page selector | |
rows_per_page = st.number_input("Rows per Page", min_value=1, value=10) | |
# Show page number selector | |
page_number = st.number_input("Page Number", min_value=1, value=1) | |
# Slice dataframe based on page number and rows per page | |
start_idx = (page_number - 1) * rows_per_page | |
end_idx = start_idx + rows_per_page | |
paginated_df = csv_df.iloc[start_idx:end_idx] | |
st.write(paginated_df) | |
else: | |
st.error("Error loading CSV file") | |
if __name__ == "__main__": | |
main() | |