File size: 6,981 Bytes
5779747
2c4a99a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e50e82a
2c4a99a
 
 
5779747
2c4a99a
 
15c9d3d
 
2c4a99a
 
5779747
2c4a99a
 
 
 
 
5779747
2c4a99a
1f9c759
 
2c4a99a
 
5779747
2c4a99a
 
 
 
 
 
 
5e4c3ce
2c4a99a
 
 
5e4c3ce
2c4a99a
1f9c759
 
2c4a99a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1f9c759
 
2c4a99a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15c9d3d
2c4a99a
 
 
 
 
 
 
 
 
 
1f9c759
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2c4a99a
 
 
 
 
 
 
1f9c759
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2c4a99a
 
 
 
 
 
 
1f9c759
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2c4a99a
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
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("<h1>Hello PDFkit!</h1>", "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!")