|
import streamlit as st |
|
|
|
|
|
st.title("π Library Demo Checklist") |
|
st.write("Check off each demo as you try these witty one-liners from our galaxy of libraries!") |
|
|
|
|
|
if 'checklist' not in st.session_state: |
|
st.session_state['checklist'] = {i: False for i in range(1, 41)} |
|
|
|
|
|
with st.expander("π PDF Libraries", expanded=True): |
|
st.subheader("PDF Powerhouse") |
|
st.write("Tick these off as you shred, spin, and weave PDFs!") |
|
|
|
|
|
st.checkbox("1. pypdf - Snags text faster than a paper shredder at a spy convention!", |
|
key="check_1", |
|
value=st.session_state['checklist'][1], |
|
on_change=lambda: st.session_state['checklist'].update({1: not st.session_state['checklist'][1]})) |
|
st.code("pypdf.PdfReader('doc.pdf').pages[0].extract_text()") |
|
|
|
|
|
st.checkbox("2. pikepdf - Gives your PDF a makeover like a digital plastic surgeon!", |
|
key="check_2", |
|
value=st.session_state['checklist'][2], |
|
on_change=lambda: st.session_state['checklist'].update({2: not st.session_state['checklist'][2]})) |
|
st.code("pikepdf.Pdf.open('in.pdf').save('out.pdf')") |
|
|
|
|
|
st.checkbox("3. pdfminer.six - Pulls text out like a magician yanking a rabbit from a hat!", |
|
key="check_3", |
|
value=st.session_state['checklist'][3], |
|
on_change=lambda: st.session_state['checklist'].update({3: not st.session_state['checklist'][3]})) |
|
st.code("pdfminer.high_level.extract_text('doc.pdf')") |
|
|
|
|
|
st.checkbox("4. fpdf2 - Whips up a PDF quicker than a chef flipping pancakes!", |
|
key="check_4", |
|
value=st.session_state['checklist'][4], |
|
on_change=lambda: st.session_state['checklist'].update({4: not st.session_state['checklist'][4]})) |
|
st.code("fpdf.FPDF().add_page().output('new.pdf')") |
|
|
|
|
|
st.checkbox("5. pdfkit - Turns web pages into PDFs like a spider spinning a paper web!", |
|
key="check_5", |
|
value=st.session_state['checklist'][5], |
|
on_change=lambda: st.session_state['checklist'].update({5: not st.session_state['checklist'][5]})) |
|
st.code("pdfkit.from_url('http://example.com', 'out.pdf')") |
|
|
|
|
|
st.checkbox("6. pdfrw - Reads PDFs like a librarian with a caffeine buzz!", |
|
key="check_6", |
|
value=st.session_state['checklist'][6], |
|
on_change=lambda: st.session_state['checklist'].update({6: not st.session_state['checklist'][6]})) |
|
st.code("pdfrw.PdfReader('doc.pdf')") |
|
|
|
|
|
st.checkbox("7. pdfplumber - Dives into PDFs and grabs text like a plumber fixing a leaky pipe!", |
|
key="check_7", |
|
value=st.session_state['checklist'][7], |
|
on_change=lambda: st.session_state['checklist'].update({7: not st.session_state['checklist'][7]})) |
|
st.code("pdfplumber.open('doc.pdf').pages[0].extract_text()") |
|
|
|
|
|
st.checkbox("8. pymupdf - Speed-reads PDFs faster than a bookworm on espresso!", |
|
key="check_8", |
|
value=st.session_state['checklist'][8], |
|
on_change=lambda: st.session_state['checklist'].update({8: not st.session_state['checklist'][8]})) |
|
st.code("fitz.open('doc.pdf')[0].get_text()") |
|
|
|
|
|
st.checkbox("9. borb - Crafts PDFs smoother than a bard reciting poetry!", |
|
key="check_9", |
|
value=st.session_state['checklist'][9], |
|
on_change=lambda: st.session_state['checklist'].update({9: not st.session_state['checklist'][9]})) |
|
st.code("borb.pdf.Document().save('out.pdf')") |
|
|
|
|
|
st.checkbox("10. pdf2image - Turns PDFs into pics like a wizard waving a wand!", |
|
key="check_10", |
|
value=st.session_state['checklist'][10], |
|
on_change=lambda: st.session_state['checklist'].update({10: not st.session_state['checklist'][10]})) |
|
st.code("pdf2image.convert_from_path('doc.pdf')[0].save('out.jpg')") |
|
|
|
|
|
with st.expander("πΈ Image Capture Libraries", expanded=True): |
|
st.subheader("Image Snappers") |
|
st.write("Check these off as you snap, grab, and process pixel perfection!") |
|
|
|
|
|
st.checkbox("11. opencv-python - Snaps a pic quicker than a paparazzi at a celebrity meltdown!", |
|
key="check_11", |
|
value=st.session_state['checklist'][11], |
|
on_change=lambda: st.session_state['checklist'].update({11: not st.session_state['checklist'][11]})) |
|
st.code("cv2.imwrite('snap.jpg', cv2.VideoCapture(0).read()[1])") |
|
|
|
|
|
st.checkbox("12. pillow - Polishes pics like a pillow fluffer at a sleepover!", |
|
key="check_12", |
|
value=st.session_state['checklist'][12], |
|
on_change=lambda: st.session_state['checklist'].update({12: not st.session_state['checklist'][12]})) |
|
st.code("Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)).save('out.jpg')") |
|
|
|
|
|
st.checkbox("13. imutils - Grabs frames smoother than a cat burglar in sneakers!", |
|
key="check_13", |
|
value=st.session_state['checklist'][13], |
|
on_change=lambda: st.session_state['checklist'].update({13: not st.session_state['checklist'][13]})) |
|
st.code("imutils.video.VideoStream(src=0).start().read()") |
|
|
|
|
|
st.checkbox("14. pyscreeze - Snags your screen like a sneaky spy with a camera!", |
|
key="check_14", |
|
value=st.session_state['checklist'][14], |
|
on_change=lambda: st.session_state['checklist'].update({14: not st.session_state['checklist'][14]})) |
|
st.code("pyscreeze.screenshot().save('screen.jpg')") |
|
|
|
|
|
st.checkbox("15. pyautogui - Snaps your desktop faster than a robot paparazzo!", |
|
key="check_15", |
|
value=st.session_state['checklist'][15], |
|
on_change=lambda: st.session_state['checklist'].update({15: not st.session_state['checklist'][15]})) |
|
st.code("pyautogui.screenshot().save('screen.jpg')") |
|
|
|
|
|
st.checkbox("16. mss - Captures screens quicker than a ninja snapping selfies!", |
|
key="check_16", |
|
value=st.session_state['checklist'][16], |
|
on_change=lambda: st.session_state['checklist'].update({16: not st.session_state['checklist'][16]})) |
|
st.code("mss.mss().shot(output='screen.png')") |
|
|
|
|
|
st.checkbox("17. imageio - Snags images like a pirate looting a pixel treasure chest!", |
|
key="check_17", |
|
value=st.session_state['checklist'][17], |
|
on_change=lambda: st.session_state['checklist'].update({17: not st.session_state['checklist'][17]})) |
|
st.code("imageio.imwrite('out.jpg', imageio.get_reader('<video0>').get_next_data())") |
|
|
|
|
|
st.checkbox("18. pygrabber - Grabs Windows shots like a cowboy roping a pixel steer!", |
|
key="check_18", |
|
value=st.session_state['checklist'][18], |
|
on_change=lambda: st.session_state['checklist'].update({18: not st.session_state['checklist'][18]})) |
|
st.code("pygrabber.dshow_graph.FilterGraph().grab_frame().save('out.jpg')") |
|
|
|
|
|
st.checkbox("19. scikit-image - Processes pics like a scientist dissecting a pixel frog!", |
|
key="check_19", |
|
value=st.session_state['checklist'][19], |
|
on_change=lambda: st.session_state['checklist'].update({19: not st.session_state['checklist'][19]})) |
|
st.code("skimage.io.imsave('out.jpg', frame)") |
|
|
|
|
|
st.checkbox("20. grab - Snaps screens like a ghost haunting your desktop!", |
|
key="check_20", |
|
value=st.session_state['checklist'][20], |
|
on_change=lambda: st.session_state['checklist'].update({20: not st.session_state['checklist'][20]})) |
|
st.code("grab.Grab().screen().save('screen.jpg')") |
|
|
|
|
|
with st.expander("π₯ Video Capture Libraries", expanded=True): |
|
st.subheader("Video Vanguards") |
|
st.write("Mark these as you snatch frames and stream like a pro!") |
|
|
|
|
|
st.checkbox("21. opencv-python - Grabs video frames like a director snatching scenes from a blockbuster!", |
|
key="check_21", |
|
value=st.session_state['checklist'][21], |
|
on_change=lambda: st.session_state['checklist'].update({21: not st.session_state['checklist'][21]})) |
|
st.code("cv2.VideoCapture(0).read()[1]") |
|
|
|
|
|
st.checkbox("22. vidgear - Streams video smoother than a greased-up eel!", |
|
key="check_22", |
|
value=st.session_state['checklist'][22], |
|
on_change=lambda: st.session_state['checklist'].update({22: not st.session_state['checklist'][22]})) |
|
st.code("vidgear.gears.CamGear(source=0).start().read()") |
|
|
|
|
|
st.checkbox("23. moviepy - Edits clips like a director yelling 'Cut!' at a pixel party!", |
|
key="check_23", |
|
value=st.session_state['checklist'][23], |
|
on_change=lambda: st.session_state['checklist'].update({23: not st.session_state['checklist'][23]})) |
|
st.code("moviepy.editor.VideoFileClip('video.mp4').write_videofile('out.mp4')") |
|
|
|
|
|
st.checkbox("24. pyav - Grabs frames like a ninja snatching scrolls from a vault!", |
|
key="check_24", |
|
value=st.session_state['checklist'][24], |
|
on_change=lambda: st.session_state['checklist'].update({24: not st.session_state['checklist'][24]})) |
|
st.code("av.open('/dev/video0').decode(video=0).__next__()") |
|
|
|
|
|
st.checkbox("25. pafy - Streams YouTube like a couch potato binge-watching cat videos!", |
|
key="check_25", |
|
value=st.session_state['checklist'][25], |
|
on_change=lambda: st.session_state['checklist'].update({25: not st.session_state['checklist'][25]})) |
|
st.code("pafy.new('youtube_url').getbest().url") |
|
|
|
|
|
st.checkbox("26. cvpubsubs - Captures cams like a pub serving pixel pints!", |
|
key="check_26", |
|
value=st.session_state['checklist'][26], |
|
on_change=lambda: st.session_state['checklist'].update({26: not st.session_state['checklist'][26]})) |
|
st.code("cvpubsubs.webcam_pub.VideoHandlerThread(0).start()") |
|
|
|
|
|
st.checkbox("27. imutils - Streams video like a thief sneaking frames in the night!", |
|
key="check_27", |
|
value=st.session_state['checklist'][27], |
|
on_change=lambda: st.session_state['checklist'].update({27: not st.session_state['checklist'][27]})) |
|
st.code("imutils.video.VideoStream(src=0).start().read()") |
|
|
|
|
|
st.checkbox("28. imageio - Snags video frames like a fisherman reeling in pixel fish!", |
|
key="check_28", |
|
value=st.session_state['checklist'][28], |
|
on_change=lambda: st.session_state['checklist'].update({28: not st.session_state['checklist'][28]})) |
|
st.code("imageio.get_reader('<video0>').get_next_data()") |
|
|
|
|
|
st.checkbox("29. grab - Records screens like a ghost filming a desktop haunting!", |
|
key="check_29", |
|
value=st.session_state['checklist'][29], |
|
on_change=lambda: st.session_state['checklist'].update({29: not st.session_state['checklist'][29]})) |
|
st.code("grab.Grab().screen().save('frame.jpg')") |
|
|
|
|
|
st.checkbox("30. pyscreeze - Snaps screen video like a spy with a frame-by-frame camera!", |
|
key="check_30", |
|
value=st.session_state['checklist'][30], |
|
on_change=lambda: st.session_state['checklist'].update({30: not st.session_state['checklist'][30]})) |
|
st.code("pyscreeze.screenshot().save('screen.jpg')") |
|
|
|
|
|
with st.expander("π΅ Audio Capture Libraries", expanded=True): |
|
st.subheader("Audio Aces") |
|
st.write("Tune in and check these off as you capture sound like a pro!") |
|
|
|
|
|
st.checkbox("31. pydub - Twists audio like a DJ spinning tunes at a silent disco!", |
|
key="check_31", |
|
value=st.session_state['checklist'][31], |
|
on_change=lambda: st.session_state['checklist'].update({31: not st.session_state['checklist'][31]})) |
|
st.code("pydub.AudioSegment.from_file('audio.wav').export('out.wav')") |
|
|
|
|
|
st.checkbox("32. pyaudio - Grabs sound bites faster than a parrot snagging crackers!", |
|
key="check_32", |
|
value=st.session_state['checklist'][32], |
|
on_change=lambda: st.session_state['checklist'].update({32: not st.session_state['checklist'][32]})) |
|
st.code("pyaudio.PyAudio().open().read(1024)") |
|
|
|
|
|
st.checkbox("33. sounddevice - Snags audio smoother than a whisper in a quiet cave!", |
|
key="check_33", |
|
value=st.session_state['checklist'][33], |
|
on_change=lambda: st.session_state['checklist'].update({33: not st.session_state['checklist'][33]})) |
|
st.code("sounddevice.rec(44100).tobytes()") |
|
|
|
|
|
st.checkbox("34. soundfile - Saves sound like a librarian archiving whispers!", |
|
key="check_34", |
|
value=st.session_state['checklist'][34], |
|
on_change=lambda: st.session_state['checklist'].update({34: not st.session_state['checklist'][34]})) |
|
st.code("soundfile.write('out.wav', data, 44100)") |
|
|
|
|
|
st.checkbox("35. pyaudioanalysis - Analyzes audio like a detective cracking a sonic mystery!", |
|
key="check_35", |
|
value=st.session_state['checklist'][35], |
|
on_change=lambda: st.session_state['checklist'].update({35: not st.session_state['checklist'][35]})) |
|
st.code("pyAudioAnalysis.audioBasicIO.read_audio_file('audio.wav')[1]") |
|
|
|
|
|
st.checkbox("36. pyo - Spins audio magic like a wizard mixing potions!", |
|
key="check_36", |
|
value=st.session_state['checklist'][36], |
|
on_change=lambda: st.session_state['checklist'].update({36: not st.session_state['checklist'][36]})) |
|
st.code("pyo.Server().boot().start()") |
|
|
|
|
|
st.checkbox("37. speechrecognition - Hears you like a nosy neighbor with super ears!", |
|
key="check_37", |
|
value=st.session_state['checklist'][37], |
|
on_change=lambda: st.session_state['checklist'].update({37: not st.session_state['checklist'][37]})) |
|
st.code("speech_recognition.Recognizer().listen(speech_recognition.Microphone())") |
|
|
|
|
|
st.checkbox("38. pyalsaaudio - Grabs Linux sound like a penguin snagging fish!", |
|
key="check_38", |
|
value=st.session_state['checklist'][38], |
|
on_change=lambda: st.session_state['checklist'].update({38: not st.session_state['checklist'][38]})) |
|
st.code("pyalsa.alsaaudio.PCM().read()[1]") |
|
|
|
|
|
st.checkbox("39. soundcard - Captures sound like a bard strumming a silent lute!", |
|
key="check_39", |
|
value=st.session_state['checklist'][39], |
|
on_change=lambda: st.session_state['checklist'].update({39: not st.session_state['checklist'][39]})) |
|
st.code("soundcard.default_microphone().record(44100, 1)") |
|
|
|
|
|
st.checkbox("40. webrtcvad - Detects voices like a spy eavesdropping on a whisper party!", |
|
key="check_40", |
|
value=st.session_state['checklist'][40], |
|
on_change=lambda: st.session_state['checklist'].update({40: not st.session_state['checklist'][40]})) |
|
st.code("webrtcvad.Vad().is_speech(audio_frame, 16000)") |
|
|
|
|
|
st.write("### Progress Tracker") |
|
completed = sum(1 for v in st.session_state['checklist'].values() if v) |
|
st.progress(completed / 40) |
|
st.write(f"{completed} out of 40 demos checked off!") |