|
import streamlit as st |
|
import pandas as pd |
|
from datetime import datetime |
|
import os |
|
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 |
|
import borb.pdf |
|
import pdf2image |
|
import vidgear.gears |
|
import moviepy.editor |
|
import av |
|
import pydub |
|
import sounddevice as sd |
|
import soundfile as sf |
|
|
|
|
|
st.title("๐ Impressive Library Demo Extravaganza") |
|
st.write("Watch these libraries flex their muscles with live demos producing real outputs!") |
|
|
|
|
|
def demo_pypdf(): |
|
with open("demo.pdf", "w") as f: |
|
f.write("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", "w") as f: |
|
f.write("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("<h1>Hello PDFkit!</h1>", "demo_pdfkit.pdf") |
|
return "demo_pdfkit.pdf" |
|
|
|
def demo_pdfplumber(): |
|
with open("demo.pdf", "w") as f: |
|
f.write("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", "w") as f: |
|
f.write("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 |
|
|
|
def demo_sounddevice(): |
|
audio = sd.rec(int(2 * 44100), samplerate=44100, channels=1) |
|
sd.wait() |
|
sf.write("demo_sounddevice.wav", audio, 44100) |
|
return "demo_sounddevice.wav" |
|
|
|
|
|
st.sidebar.header("๐ฎ Demo Controls") |
|
demo_type = st.sidebar.selectbox("Choose a Demo Category", ["PDF", "Image Capture", "Video Capture", "Audio Capture"]) |
|
|
|
|
|
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..."): |
|
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") |
|
|
|
|
|
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..."): |
|
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!") |
|
|
|
|
|
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..."): |
|
if demo == "opencv-python": |
|
result = demo_opencv_image() |
|
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!") |
|
|
|
|
|
elif demo_type == "Audio Capture": |
|
st.subheader("๐ต Audio Aces") |
|
demo = st.selectbox("Pick an Audio Demo", ["sounddevice"]) |
|
if st.button("Run Audio Demo"): |
|
with st.spinner("Recording audio (2 seconds)..."): |
|
if demo == "sounddevice": |
|
result = demo_sounddevice() |
|
st.audio(result, format="audio/wav") |
|
st.download_button("Download Audio", open(result, "rb").read(), file_name=result) |
|
|
|
|
|
st.write("### Results") |
|
st.write("Check out your impressive outputs above!") |