Albums ------ Scans the current folder for subfolders, finds the first image in each subfolder, and displays all these images along with the names of the folders. :: import streamlit as st import os Print banner. :: @st.cache_data def print_banner(): print(""" .__ ___. _____ | |\\_ |__ __ __ _____ ______ \\__ \\ | | | __ \\| | \\/ \\ / ___/ / __ \\| |_| \\_\\ \\ | / Y Y \\\\___ \\ (____ /____/___ /____/|__|_| /____ > \\/ \\/ \\/ \\/ """) return 1 print_banner() Get the current folder name :: current_folder = os.getcwd() folder_name = os.path.basename(current_folder) Set the title of the app :: st.title(folder_name) Get the list of folders in the current directory :: folders = [f for f in os.listdir(current_folder) if os.path.isdir(os.path.join(current_folder, f))] Iterate through each folder and find the first image :: image_paths = [] captions = [] for folder in folders: folder_path = os.path.join(current_folder, folder) images = [f for f in os.listdir(folder_path) if f.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp'))] if images: # Get the first image first_image_path = os.path.join(folder_path, images[0]) caption = folder # Define the path for the 'lyrics' folder lyrics_folder_path = os.path.join(folder_path, 'lyrics') if os.path.isdir(lyrics_folder_path): caption += " (lyrics)" # Append image path and caption to lists image_paths.append(first_image_path) captions.append(caption) st.image(image_paths, captions, use_container_width=True) # width=300)