import streamlit as st
import cv2
from PIL import Image
import numpy as np
from imutils.video import VideoStream
import pypdf
import pikepdf
import pdfminer.high_level
import fpdf
import pdfkit
import pdfplumber
import fitz # pymupdf
import borb.pdf
import pdf2image
import vidgear.gears
import av
# 🌟🔥 Set up the Streamlit UI with an impressive demo style!
st.title("🚀 Impressive Library Demo Extravaganza")
st.write("Watch these libraries flex their muscles with live demos producing real outputs!")
# 📜 Demo Functions
def demo_pypdf():
with open("demo.pdf", "wb") as f:
f.write(b"Hello from pypdf!")
reader = pypdf.PdfReader("demo.pdf")
return reader.pages[0].extract_text() if reader.pages else "No text found!"
def demo_pikepdf():
pdf = pikepdf.Pdf.new()
pdf.pages.append(pikepdf.Page(pikepdf.Dictionary()))
pdf.save("demo_pikepdf.pdf")
return "demo_pikepdf.pdf"
def demo_pdfminer():
with open("demo.pdf", "wb") as f:
f.write(b"PDFminer magic!")
text = pdfminer.high_level.extract_text("demo.pdf")
return text
def demo_fpdf():
pdf = fpdf.FPDF()
pdf.add_page()
pdf.set_font("Arial", size=12)
pdf.cell(200, 10, txt="FPDF rocks!", ln=True)
pdf.output("demo_fpdf.pdf")
return "demo_fpdf.pdf"
def demo_pdfkit():
pdfkit.from_string("
Hello PDFkit!
", "demo_pdfkit.pdf")
return "demo_pdfkit.pdf"
def demo_pdfplumber():
with open("demo.pdf", "wb") as f:
f.write(b"Plumb this text!")
with pdfplumber.open("demo.pdf") as pdf:
return pdf.pages[0].extract_text() if pdf.pages else "No text!"
def demo_pymupdf():
doc = fitz.open()
page = doc.new_page()
page.insert_text((100, 100), "Pymupdf shines!")
doc.save("demo_pymupdf.pdf")
return "demo_pymupdf.pdf"
def demo_borb():
doc = borb.pdf.Document()
page = borb.pdf.Page()
doc.append_page(page)
doc.save("demo_borb.pdf")
return "demo_borb.pdf"
def demo_pdf2image():
with open("demo.pdf", "wb") as f:
f.write(b"Image this!")
images = pdf2image.convert_from_path("demo.pdf")
images[0].save("demo_pdf2image.jpg")
return "demo_pdf2image.jpg"
def demo_opencv_image():
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
if ret:
cv2.imwrite("demo_opencv.jpg", frame)
cap.release()
return "demo_opencv.jpg"
cap.release()
return None
def demo_imutils():
vs = VideoStream(src=0).start()
frame = vs.read()
vs.stop()
if frame is not None:
cv2.imwrite("demo_imutils.jpg", cv2.cvtColor(frame, cv2.COLOR_RGB2BGR))
return "demo_imutils.jpg"
return None
def demo_vidgear():
stream = vidgear.gears.CamGear(source=0).start()
frame = stream.read()
stream.stop()
if frame is not None:
cv2.imwrite("demo_vidgear.jpg", frame)
return "demo_vidgear.jpg"
return None
# 🌟 Main Demo Interface
st.sidebar.header("🎮 Demo Controls")
demo_type = st.sidebar.selectbox("Choose a Demo Category", ["PDF", "Image Capture", "Video Capture"])
# 📜 PDF Demos
if demo_type == "PDF":
st.subheader("📜 PDF Powerhouse")
demo = st.selectbox("Pick a PDF Demo", [
"pypdf", "pikepdf", "pdfminer.six", "fpdf2", "pdfkit",
"pdfplumber", "pymupdf", "borb", "pdf2image"
])
if st.button("Run PDF Demo"):
with st.spinner("Running demo..."):
try:
if demo == "pypdf":
result = demo_pypdf()
st.write("Extracted Text:", result)
elif demo == "pikepdf":
result = demo_pikepdf()
st.download_button("Download PDF", open(result, "rb").read(), file_name=result)
elif demo == "pdfminer.six":
result = demo_pdfminer()
st.write("Extracted Text:", result)
elif demo == "fpdf2":
result = demo_fpdf()
st.download_button("Download PDF", open(result, "rb").read(), file_name=result)
elif demo == "pdfkit":
result = demo_pdfkit()
st.download_button("Download PDF", open(result, "rb").read(), file_name=result)
elif demo == "pdfplumber":
result = demo_pdfplumber()
st.write("Extracted Text:", result)
elif demo == "pymupdf":
result = demo_pymupdf()
st.download_button("Download PDF", open(result, "rb").read(), file_name=result)
elif demo == "borb":
result = demo_borb()
st.download_button("Download PDF", open(result, "rb").read(), file_name=result)
elif demo == "pdf2image":
result = demo_pdf2image()
st.image(result, caption="Converted PDF to Image")
except Exception as e:
st.error(f"Demo failed: {str(e)}")
# 📸 Image Capture Demos
elif demo_type == "Image Capture":
st.subheader("📸 Image Snappers")
demo = st.selectbox("Pick an Image Demo", ["opencv-python", "imutils"])
if st.button("Run Image Demo"):
with st.spinner("Capturing image..."):
try:
if demo == "opencv-python":
result = demo_opencv_image()
if result:
st.image(result, caption="Snapped with OpenCV!")
else:
st.error("Camera not detected!")
elif demo == "imutils":
result = demo_imutils()
if result:
st.image(result, caption="Snapped with Imutils!")
else:
st.error("Camera not detected!")
except Exception as e:
st.error(f"Demo failed: {str(e)}")
# 🎥 Video Capture Demos
elif demo_type == "Video Capture":
st.subheader("🎥 Video Vanguards")
demo = st.selectbox("Pick a Video Demo", ["opencv-python", "vidgear"])
if st.button("Run Video Demo"):
with st.spinner("Capturing video frame..."):
try:
if demo == "opencv-python":
result = demo_opencv_image() # Using image capture as a proxy
if result:
st.image(result, caption="Frame from OpenCV Video!")
else:
st.error("Camera not detected!")
elif demo == "vidgear":
result = demo_vidgear()
if result:
st.image(result, caption="Frame from VidGear Video!")
else:
st.error("Camera not detected!")
except Exception as e:
st.error(f"Demo failed: {str(e)}")
# 📊 Results Display
st.write("### Results")
st.write("Check out your impressive outputs above!")