Generation

code to explanationSun, 12 Feb 2023

import pymongo import tkinter as tk from tkinter import ttk import pyaudio import wave class MongoDBGUI: def __init__(self, master): self.master = master self.master.title("MongoDB Cloud Search and Display") self.master.geometry("1280x720") #self.background_image = tk.PhotoImage(file="/home/glitch/Pictures/Screenshots/Screenshot from 2023-02-10 22-06-45.png") #self.background_label = tk.Label(self.master, image=self.background_image) #self.background_label.place(relwidth=1, relheight=1) #self.background_label.lower(self.master) #self.background_image = tk.PhotoImage(file="/home/glitch/Pictures/Screenshots/Screenshot from 2023-02-10 22-06-45.png") #self.background_label = tk.Label(self.master, image=self.background_image) #self.background_label.pack(fill='both', expand=True) self.background_image = tk.PhotoImage(file="/home/glitch/Desktop/audio/background.png") self.background_label = tk.Label(self.master, image=self.background_image) self.background_label.place(relwidth=1, relheight=1) self.label = tk.Label(self.master, text="Enter search criteria:") self.label.pack() self.entry = tk.Entry(self.master) self.entry.pack() self.search_button = tk.Button(self.master, text="Search", command=self.search) self.search_button.pack() self.tree = ttk.Treeview(self.master) self.tree.pack() self.tree["columns"] = ("transcript", "audio_file", "audio") self.tree.column("transcript", width=400, anchor="center") self.tree.column("audio_file", width=150, anchor="center") self.tree.column("audio", width=50, anchor="center") self.tree.heading("transcript", text="Transcript") self.tree.heading("audio_file", text="Audio File Number") self.tree.heading("audio", text="Audio") self.client = pymongo.MongoClient("mongodb+srv://user01:user01@sampledb.d1dklna.mongodb.net/?retryWrites=true&w=majority") self.db = self.client["test"] self.collection = self.db["calls"] def search(self): self.tree.delete(*self.tree.get_children()) search_criteria = self.entry.get() results = self.collection.find({"transcript": {"$regex": search_criteria}}) for result in results: self.tree.insert("","end", values=(result["transcript"], result["audio_file"], "Play"), tags=("play_audio",)) self.tree.tag_bind("play_audio", "<Button-1>", self.play_audio) def play_audio(self, event): selected_item = self.tree.selection()[0] item_id = self.tree.item(selected_item, "text") call = self.collection.find_one({"_id": item_id}) audio = call["audio"] CHUNK = 1024 p = pyaudio.PyAudio() stream = p.open(format=p.get_format_from_width(2), channels=1, rate=16000, output=True) with wave.open(audio_file, 'rb') as data: while True: chunk = data.readframes(CHUNK) if len(chunk) == 0: break stream.write(chunk) stream.stop_stream() stream.close() p.terminate() if __name__ == "__main__": root = tk.Tk() app = MongoDBGUI(root) root.mainloop()

* In case of large code blocks, you can add line numbering to the code block. We use the following syntax for line numbering.

Want to kickstart your project?Use the new AI Studio to create your code