Lab guidePython

Pers Scratchpad

Last updated 6 December 2023

Pers Scratchpad

#1

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
from time import sleep


service = Service(
    "/home/rahul/Desktop/Class/Python/oct_26_2021_daily/scratchpads/chromedriver"
)
options = webdriver.ChromeOptions()

browser = webdriver.Chrome(service=service, options=options)

# YOUTUBE

browser.maximize_window()
browser.get("https://www.youtube.com")
sleep(3)

search_box = browser.find_element_by_xpath(
    "/html/body/ytd-app/div/div/ytd-masthead/div[3]/div[2]/ytd-searchbox/form/div[1]/div[1]/input"
)
search_box.click()
search_box.send_keys("spiderman trailer", Keys.ENTER)
sleep(4)
browser.find_element_by_partial_link_text("SPIDER-MAN: NO WAY HOME").click()
sleep(11)

try:
    browser.find_element_by_class_name("ytp-ad-skip-button").click()
except:
    print("No ads found")

sleep(15)

# WHATS APP

browser.get("https://web.whatsapp.com/")
sleep(12)

search_input = browser.find_element_by_xpath(
    "/html/body/div[1]/div[1]/div[1]/div[3]/div/div[1]/div/label/div/div[2]"
)
search_input.click()
search_input.send_keys("Rahul 2", Keys.ENTER)

i = 0
while i < 10:
    msg_box = browser.find_element_by_xpath(
        "/html/body/div[1]/div[1]/div[1]/div[4]/div[1]/footer/div[1]/div/span[2]/div/div[2]/div[1]/div/div[2]"
    )
    msg_box.click()
    msg_box.send_keys("SEND FROM MY SELENIUM SCRIPT", Keys.ENTER)

    i += 1

    # send_btn = browser.find_element_by_xpath(
    #     "/html/body/div[1]/div[1]/div[1]/div[4]/div[1]/footer/div[1]/div/span[2]/div/div[2]/div[2]/button"
    # )
    # send_btn.click()

sleep(5)

browser.quit()

# -------------
# SQL LITE 3

import sqlite3

data = ("john", "doe", 25)
data_lst = [
    ("jack", "parker", 19),
    ("james", "smith", 32),
    ("jane", "watson", 23),
    ("jane", "watson", 49),
]

conn = sqlite3.connect("users.db")

c = conn.cursor()

c.execute("CREATE TABLE users (first_name TEXT, last_name TEXT, age INTEGER);")

query = """INSERT INTO users VALUES (?,?,?)"""

for item in data_lst:
    print(f"Writing {item[0]} to database...")
    c.execute(query, item)

c.execute("SELECT * FROM users;")
# print(c)

print(c.fetchall())

conn.commit()
conn.close()


# --------
# MongoDB

from pymongo import MongoClient

client = MongoClient("mongodb://127.0.0.1:27017")

db = client.pyclass
coll = db["students"]

doc = {"first_name": "john", "last_name": "doe", "age": 25}

users = [
    {"first_name": "jane", "last_name": "doe", "age": 35},
    {"first_name": "jack", "last_name": "doe", "age": 45},
    {"first_name": "james", "last_name": "doe", "age": 65},
    {"first_name": "bullman", "last_name": "doe", "age": 95},
]

coll.insert_one(doc)

coll.insert_many(users)

query = {"age": {"$gt": 35}}
new_value = {"$set": {"subjects": ["physics", "electronics", "comp sci"]}}

search_res = coll.find(query)

for doc in search_res:
    print(doc["first_name"])

client.drop_database("pyclass")

Tkt

# INTRO

"""Hello World application for Tkinter"""
import tkinter as tk

root = tk.Tk()

label = tk.Label(root, text="Hello World")
label.pack()

root.mainloop()
# COMPLEX INFO


import tkinter as tk

root = tk.Tk()

root.title("Banana interest survey")

root.geometry("640x480+300+300")
root.resizable(False, False)

title = tk.Label(
    root, text="Please take the survey", font=("Arial 16 bold"), bg="brown", fg="#FF0"
)

name_var = tk.StringVar(root)
name_label = tk.Label(root, text="What is your name?")
name_inp = tk.Entry(root, textvariable=name_var)
print(name_var.get())

eater_var = tk.BooleanVar()
eater_inp = tk.Checkbutton(
    root, variable=eater_var, text="Check this box if you eat bananas"
)

num_var = tk.IntVar(value=3)
num_label = tk.Label(root, text="How many bananas do you eat per day?")
num_inp = tk.Spinbox(root, textvariable=num_var, from_=0, to=1000, increment=1)

color_var = tk.StringVar(value="Any")
color_label = tk.Label(root, text="What is the best color for a banana?")
color_inp = tk.Listbox(root, height=1)
color_choices = ("Any", "Green", "Green-Yello", "Yellow", "Brown Spotted", "Black")
color_inp = tk.OptionMenu(root, color_var, *color_choices)

# for choice in color_choices:
#     color_inp.insert(tk.END, choice)

plantain_var = tk.BooleanVar()
plantain_label = tk.Label(root, text="Do you eat plantains?")
plantain_frame = tk.Frame(root)
plantain_yes_inp = tk.Radiobutton(
    plantain_frame, text="Yes", value=True, variable=plantain_var
)
plantain_no_inp = tk.Radiobutton(
    plantain_frame, text="Ewww, no!", value=False, variable=plantain_var
)

banana_haiku_label = tk.Label(root, text="Write a haiku about bananas")
banana_haiku_inp = tk.Text(root, height=3)

submit_btn = tk.Button(root, text="Submit Survey")

output_var = tk.StringVar(value="")
output_line = tk.Label(root, textvariable=output_var, anchor="w", justify="left")

title.grid(columnspan=2)

name_label.grid(row=1, column=0)
name_inp.grid(row=1, column=1)

eater_inp.grid(row=2, columnspan=2, sticky="we")

num_label.grid(row=3, stick=tk.W)
num_inp.grid(row=3, column=1, sticky=(tk.W + tk.E))

plantain_yes_inp.pack(side="left", fill="x", ipadx=10, ipady=5)
plantain_no_inp.pack(side="left", fill="x", ipadx=10, ipady=5)
plantain_label.grid(row=6, columnspan=2, sticky=tk.W)
plantain_frame.grid(row=7, columnspan=2, sticky=tk.W)

banana_haiku_label.grid(row=8, sticky=tk.W)
banana_haiku_inp.grid(row=9, columnspan=2, sticky="NSEW")

submit_btn.grid(row=99)

output_line.grid(row=100, columnspan=2, sticky="NSEW")

root.columnconfigure(1, weight=1)
root.rowconfigure(99, weight=2)
root.rowconfigure(100, weight=1)


def on_submit():
    """To be run when the user submits the form"""
    name = name_var.get()
    try:
        number = num_var.get()
    except tk.TclError:
        number = 10000

    color = color_var.get()
    banana_eater = eater_var.get()
    plantain_eater = plantain_var.get()
    haiku = banana_haiku_inp.get("1.0", tk.END)

    message = f"Thanks for taking the survery, {name}.\n"

    if not banana_eater:
        message += "Sorry you don't like bananas!\n"
    else:
        message += f"Enter your {number} {color} bananas!\n"

    if plantain_eater:
        message += "Enjoy your plantains!"
    else:
        message += "May you successfully avoid plantains!"

    if haiku.strip():
        message += f"\n\nYour Haiku:\n{haiku}"

    output_var.set(message)


submit_btn.configure(command=on_submit)

root.mainloop()


# # Old on_submit code:
# def on_submit():
#     """To be run when the user submits the form"""

#     name = name_inp.get()
#     number = num_inp.get()

#     selected_idx = color_inp.curselection()
#     if selected_idx:
#         color = color_inp.get(selected_idx)
#     else:
#         color = ""

#     haiku = banana_haiku_inp.get("1.0", tk.END)

#     message = (
#         f"Thanks for taking the survey, {name}. \n"
#         f"Enjoy your {number} {color} bananas!"
#     )
#     output_line.configure(text=message)
#     print(haiku)
Learn this on the racks

Reading it is one thing. Configuring it is another.

Our batches run labs like this one end to end on real kit, in the Mumbai classroom or live online, taught by practising engineers.