I’ve been using Python for almost 5 years now and the one thing that still attracts me and gives me motivation for more research is its ability to Automate things. For the past 1 year, I have been exploring the Automation side of Python and have discovered some amazing Python packages, facts, and interesting scripts. In this blog, I will be sharing a bunch of automation scripts that I use daily, which have increased my productivity and performance.
1. Speakify
I love books but hate reading them on my own, rather I love listening to them. This automation script is a lifesaver for me and I use it a lot to listen to PDFs and convert them into AudioBooks to listen to later.
1 |
<span id="fc46" class="wn vl og wm b bx wo wp w wq wr" data-selectable-paragraph=""><span class="hljs-keyword">import</span> PyPDF2<br /><span class="hljs-keyword">import</span> pyttsx3<br /><br /><span class="hljs-comment"># Open the PDF file (Enter Path To Your PDF)</span><br />file = <span class="hljs-built_in">open</span>(<span class="hljs-string">'story.pdf'</span>, <span class="hljs-string">'rb'</span>)<br />readpdf = PyPDF2.PdfReader(file)<br /><br /><span class="hljs-comment"># Initialize text-to-speech engine</span><br />speaker = pyttsx3.init()<br />rate = speaker.getProperty(<span class="hljs-string">'rate'</span>) <span class="hljs-comment"># Get current speaking rate</span><br />speaker.setProperty(<span class="hljs-string">'rate'</span>, <span class="hljs-number">200</span>)<br /><br />volume = speaker.getProperty(<span class="hljs-string">'volume'</span>)<br />speaker.setProperty(<span class="hljs-string">'volume'</span>, <span class="hljs-number">1</span>) <span class="hljs-comment"># Set volume level (0.0 to 1.0)</span><br /><br /><span class="hljs-comment"># Get and set a different voice</span><br />voices = speaker.getProperty(<span class="hljs-string">'voices'</span>)<br /><span class="hljs-keyword">for</span> voice <span class="hljs-keyword">in</span> voices:<br /> <span class="hljs-keyword">if</span> <span class="hljs-string">"english"</span> <span class="hljs-keyword">in</span> voice.name.lower() <span class="hljs-keyword">and</span> <span class="hljs-string">"us"</span> <span class="hljs-keyword">in</span> voice.name.lower():<br /> speaker.setProperty(<span class="hljs-string">'voice'</span>, voice.<span class="hljs-built_in">id</span>)<br /> <span class="hljs-keyword">break</span><br /><span class="hljs-comment"># Iterate over each page in the PDF</span><br /><span class="hljs-keyword">for</span> pagenumber <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-built_in">len</span>(readpdf.pages)):<br /> <span class="hljs-comment"># Extract text from the page</span><br /> page = readpdf.pages[pagenumber]<br /> text = page.extract_text()<br /> <br /> <span class="hljs-comment"># Use the speaker to read the text</span><br /> <span class="hljs-comment"># speaker.say(text)</span><br /> <span class="hljs-comment"># speaker.runAndWait()</span><br /><br /><span class="hljs-comment"># Save the last extracted text to an audio file (if needed)</span><br />speaker.save_to_file(text, <span class="hljs-string">'story.mp3'</span>)<br />speaker.runAndWait()<br /><br /><span class="hljs-comment"># Stop the speaker</span><br />speaker.stop()<br /><br /><span class="hljs-comment"># Close the PDF file</span><br />file.close()<br /></span> |
Real-Life Applications
- Accessibility for the Visually Impaired: Providing audio versions of written content to help visually impaired individuals access information easily.
- On-the-Go Learning: Allowing users to listen to articles or textbooks while commuting or exercising.
- Language Learning: Helping language learners improve their listening skills by providing audio versions of texts.
- Education: Providing students with audio versions of their reading materials for more flexible study options.
2. TabTornado
Before writing this script I used to bookmark things that I’ve found interesting to read next day, however after few weeks I realized that my bookmark shelf is getting bigger day by day and Everyday I used to had a hard time finding my new bookmarks. So I figured out a pythonic way to tackle this problem. With this automation script, I can just copy and paste all the links and then open them with a single click.
1 |
<span id="f6ec" class="wn vl og wm b bx wo wp w wq wr" data-selectable-paragraph=""><span class="hljs-keyword">import</span> webbrowser<br /><span class="hljs-keyword">with</span> <span class="hljs-built_in">open</span>(<span class="hljs-string">'links.txt'</span>) <span class="hljs-keyword">as</span> file:<br /> links = file.readlines()<br /> <span class="hljs-keyword">for</span> link <span class="hljs-keyword">in</span> links: <br /> webbrowser.<span class="hljs-built_in">open</span>(<span class="hljs-string">'link'</span>)</span> |
Application
Increased Work Efficiency: Professionals who need to check multiple work-related sites can streamline their routine, focusing on content rather than the process of opening links.
Learning and Development: Online learners can open all course materials, articles, and resources at once, making their study sessions more efficient.
3. PicFetcher
Gathering a large amount of image data is a key challenge in computer vision projects. As Andrew Ng points out, having a big dataset can be more important than the specific algorithm used. High-quality data is essential for improving the performance and accuracy of machine learning models. This automation script makes the process easier by letting you download a set number of images from the web in just minutes with minimal coding effort.
1 |
<span id="e634" class="wn vl og wm b bx wo wp w wq wr" data-selectable-paragraph=""><span class="hljs-comment"># Importing the necessary module and function</span><br /><span class="hljs-keyword">from</span> simple_image_download <span class="hljs-keyword">import</span> simple_image_download <span class="hljs-keyword">as</span> simp <br /><br /><span class="hljs-comment"># Creating a response object</span><br />response = simp.simple_image_download<br /><br /><span class="hljs-comment">## Keyword</span><br />keyword = <span class="hljs-string">"Dog"</span><br /><br /><span class="hljs-comment"># Downloading images</span><br /><span class="hljs-keyword">try</span>:<br /> response().download(keyword, <span class="hljs-number">20</span>)<br /> <span class="hljs-built_in">print</span>(<span class="hljs-string">"Images downloaded successfully."</span>)<br /><span class="hljs-keyword">except</span> Exception <span class="hljs-keyword">as</span> e:<br /> <span class="hljs-built_in">print</span>(<span class="hljs-string">"An error occurred:"</span>, e)</span> |
Applications
- Building Computer Vision Datasets, Banner image Content Creation, Marketing Campaigns, Academic Research, and many more.
4. PyInspector
Every developer knows the frustration of tracking down bugs in Python code, often getting caught in a web of errors. Writing clean and efficient code is crucial, but manually analyzing code quality can be daunting. This automation script uses the Pylint and Flake8 packages to thoroughly review your code, compare it against coding standards, and pinpoint logical errors. It ensures your code follows industry best practices and remains error-free.
1 |
<span id="2521" class="wn vl og wm b bx wo wp w wq wr" data-selectable-paragraph=""><span class="hljs-keyword">import</span> os<br /><span class="hljs-keyword">import</span> subprocess<br /><br /><span class="hljs-keyword">def</span> <span class="hljs-title.function">analyze_code</span>(<span class="hljs-params">directory</span>):<br /> <span class="hljs-comment"># List Python files in the directory</span><br /> python_files = [file <span class="hljs-keyword">for</span> file <span class="hljs-keyword">in</span> os.listdir(directory) <span class="hljs-keyword">if</span> file.endswith(<span class="hljs-string">'.py'</span>)]<br /><br /> <span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> python_files:<br /> <span class="hljs-built_in">print</span>(<span class="hljs-string">"No Python files found in the specified directory."</span>)<br /> <span class="hljs-keyword">return</span><br /><br /> <span class="hljs-comment"># Analyze each Python file using pylint and flake8</span><br /> <span class="hljs-keyword">for</span> file <span class="hljs-keyword">in</span> python_files:<br /> <span class="hljs-built_in">print</span>(<span class="hljs-string">f"Analyzing file: <span class="hljs-subst">{file}</span>"</span>)<br /> file_path = os.path.join(directory, file)<br /><br /> <span class="hljs-comment"># Run pylint</span><br /> <span class="hljs-built_in">print</span>(<span class="hljs-string">"\nRunning pylint..."</span>)<br /> pylint_command = <span class="hljs-string">f"pylint <span class="hljs-subst">{file_path}</span>"</span><br /> subprocess.run(pylint_command, shell=<span class="hljs-literal">True</span>)<br /><br /> <span class="hljs-comment"># Run flake8</span><br /> <span class="hljs-built_in">print</span>(<span class="hljs-string">"\nRunning flake8..."</span>)<br /> flake8_command = <span class="hljs-string">f"flake8 <span class="hljs-subst">{file_path}</span>"</span><br /> subprocess.run(flake8_command, shell=<span class="hljs-literal">True</span>)<br /><br /><span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">"__main__"</span>:<br /> directory = <span class="hljs-string">r"C:\Users\abhay\OneDrive\Desktop\Part7"</span><br /> analyze_code(directory)</span> |
5. DataDummy
Whether you’re a data scientist needing sample data to test models or just looking to fill out an unnecessary form with random information, this Python automation script proves incredibly useful. It generates realistic-looking but entirely artificial datasets, perfect for testing, development, and simulation purposes. This tool can quickly create names, emails, phone numbers, and more, providing a versatile solution for various data generation needs.
1 |
<span id="b3e3" class="wn vl og wm b bx wo wp w wq wr" data-selectable-paragraph=""><span class="hljs-keyword">import</span> pandas <span class="hljs-keyword">as</span> pd<br /><span class="hljs-keyword">from</span> faker <span class="hljs-keyword">import</span> Faker<br /><span class="hljs-keyword">import</span> random<br /><br />fake = Faker()<br /><br /><span class="hljs-keyword">def</span> <span class="hljs-title.function">generate_fake_data</span>(<span class="hljs-params">num_entries=<span class="hljs-number">10</span></span>):<br /> data = []<br /><br /> <span class="hljs-keyword">for</span> _ <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(num_entries):<br /> entry = {<br /> <span class="hljs-string">"Name"</span>: fake.name(),<br /> <span class="hljs-string">"Address"</span>: fake.address(),<br /> <span class="hljs-string">"Email"</span>: fake.email(),<br /> <span class="hljs-string">"Phone Number"</span>: fake.phone_number(),<br /> <span class="hljs-string">"Date of Birth"</span>: fake.date_of_birth(minimum_age=<span class="hljs-number">18</span>, maximum_age=<span class="hljs-number">65</span>).strftime(<span class="hljs-string">"%Y-%m-%d"</span>),<br /> <span class="hljs-string">"Random Number"</span>: random.randint(<span class="hljs-number">1</span>, <span class="hljs-number">100</span>),<br /> <span class="hljs-string">"Job Title"</span>: fake.job(),<br /> <span class="hljs-string">"Company"</span>: fake.company(),<br /> <span class="hljs-string">"Lorem Ipsum Text"</span>: fake.text(),<br /> }<br /> data.append(entry)<br /><br /> <span class="hljs-keyword">return</span> pd.DataFrame(data)<br /><br /><span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">"__main__"</span>:<br /> num_entries = <span class="hljs-number">10</span> <span class="hljs-comment"># You can adjust the number of entries you want to generate</span><br /> fake_data_df = generate_fake_data(num_entries)<br /><br /> <br /><br /><span class="hljs-comment">## Dataframe with Fake Data</span><br />fake_data_df</span> |
6. BgBuster
This automation script has become an essential part of my daily toolkit. As a writer, I frequently work with images and often need them without backgrounds. While the re are many online tools available for this task, I have concerns about the privacy and security of my images on the internet. This Python script utilizes the rembg package to remove image backgrounds locally, ensuring that my pictures remain secure and private.
1 |
<span id="6828" class="wn vl og wm b bx wo wp w wq wr" data-selectable-paragraph=""><span class="hljs-keyword">from</span> rembg <span class="hljs-keyword">import</span> remove <br /><span class="hljs-keyword">from</span> PIL <span class="hljs-keyword">import</span> Image<br /><br /><span class="hljs-comment">## Path for input and output image</span><br />input_img = <span class="hljs-string">'monkey.jpg'</span><br />output_img = <span class="hljs-string">'monkey_rmbg.png'</span><br /><br /><span class="hljs-comment">## loading and removing background</span><br />inp = Image.<span class="hljs-built_in">open</span>(input_img)<br />output = remove(inp)<br /><br /><span class="hljs-comment">## Saving background removed image to same location as input image</span><br />output.save(output_img)</span> |
7. MemoryMate
I often need to remember important tasks while immersed in my work. To address this and boost my productivity, I developed MemoryMate using Python, which serves as my digital memory aid. It sends me reminders with custom messages after a specified period to ensure I complete my tasks on time. MemoryMate has significantly improved my productivity and helped me consistently meet deadlines. The best part is that it’s simple, easy to replicate, and incredibly useful.
1 |
<span id="8bdc" class="wn vl og wm b bx wo wp w wq wr" data-selectable-paragraph=""><span class="hljs-keyword">from</span> win10toast <span class="hljs-keyword">import</span> ToastNotifier<br /><span class="hljs-keyword">import</span> time<br /><br />toaster = ToastNotifier()<br /><br /><span class="hljs-keyword">def</span> <span class="hljs-title.function">set_reminder</span>():<br /> reminder_header = <span class="hljs-built_in">input</span>(<span class="hljs-string">"What would you like me to remember?\n"</span>)<br /> related_message = <span class="hljs-built_in">input</span>(<span class="hljs-string">"Related Message:\n"</span>)<br /> time_minutes = <span class="hljs-built_in">float</span>(<span class="hljs-built_in">input</span>(<span class="hljs-string">"In how many minutes?\n"</span>))<br /><br /> time_seconds = time_minutes * <span class="hljs-number">60</span><br /><br /> <span class="hljs-built_in">print</span>(<span class="hljs-string">"Setting up reminder..."</span>)<br /> time.sleep(<span class="hljs-number">2</span>)<br /> <span class="hljs-built_in">print</span>(<span class="hljs-string">"All set!"</span>)<br /><br /> time.sleep(time_seconds)<br /><br /> toaster.show_toast(<br /> title=<span class="hljs-string">f"<span class="hljs-subst">{reminder_header}</span>"</span>,<br /> msg=<span class="hljs-string">f"<span class="hljs-subst">{related_message}</span>"</span>,<br /> duration=<span class="hljs-number">10</span>,<br /> threaded=<span class="hljs-literal">True</span><br /> )<br /><br /> <span class="hljs-keyword">while</span> toaster.notification_active():<br /> time.sleep(<span class="hljs-number">0.005</span>)<br /><br /><span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">"__main__"</span>:<br /> set_reminder()</span> |
Do You Know that In Python, you can perform calculations with extremely large integers like
999**999
without overflow errors because Python automatically uses a “big integer” type for large numbers.
8. MonitorMax
System resource monitoring is crucial for displaying real-time utilization of various system resources. It’s an invaluable tool for users, system administrators, and developers who need to keep track of system performance, identify bottlenecks, and ensure efficient resource management. This Python automation script helps monitor CPU, GPU, battery, and memory usage, generating alerts if any resource usage exceeds safe thresholds.
1 |
<span id="a0c2" class="wn vl og wm b bx wo wp w wq wr" data-selectable-paragraph=""><span class="hljs-keyword">import</span> psutil<br /><span class="hljs-keyword">import</span> time<br /><span class="hljs-keyword">from</span> win10toast <span class="hljs-keyword">import</span> ToastNotifier<br /><br /><span class="hljs-comment"># Initialize the ToastNotifier object</span><br />toaster = ToastNotifier()<br /><br /><span class="hljs-comment"># Set the threshold values for CPU usage, memory usage, GPU usage, and battery level</span><br />cpu_threshold = <span class="hljs-number">40</span> <span class="hljs-comment"># Percentage</span><br />memory_threshold = <span class="hljs-number">40</span> <span class="hljs-comment"># Percentage</span><br />gpu_threshold = <span class="hljs-number">40</span> <span class="hljs-comment"># Percentage</span><br />battery_threshold = <span class="hljs-number">100</span> <span class="hljs-comment"># Percentage</span><br /><br /><span class="hljs-comment"># Infinite loop to continuously monitor system resources</span><br /><span class="hljs-keyword">while</span> <span class="hljs-literal">True</span>:<br /> <span class="hljs-keyword">try</span>:<br /> <span class="hljs-comment"># Get system resource information</span><br /> cpu_usage = psutil.cpu_percent(interval=<span class="hljs-number">1</span>)<br /> memory_usage = psutil.virtual_memory().percent<br /> gpu_usage = psutil.virtual_memory().percent<br /> battery = psutil.sensors_battery()<br /><br /> <span class="hljs-comment"># Check CPU usage</span><br /> <span class="hljs-keyword">if</span> cpu_usage >= cpu_threshold:<br /> message = <span class="hljs-string">f"CPU usage is high: <span class="hljs-subst">{cpu_usage}</span>%"</span><br /> toaster.show_toast(<span class="hljs-string">"Resource Alert"</span>, message, duration=<span class="hljs-number">10</span>)<br /><br /> <span class="hljs-comment"># Check memory usage</span><br /> <span class="hljs-keyword">if</span> memory_usage >= memory_threshold:<br /> message = <span class="hljs-string">f"Memory usage is high: <span class="hljs-subst">{memory_usage}</span>%"</span><br /> toaster.show_toast(<span class="hljs-string">"Resource Alert"</span>, message, duration=<span class="hljs-number">10</span>)<br /><br /> <span class="hljs-comment"># Check GPU usage</span><br /> <span class="hljs-keyword">if</span> gpu_usage >= gpu_threshold:<br /> message = <span class="hljs-string">f"GPU usage is high: <span class="hljs-subst">{gpu_usage}</span>%"</span><br /> toaster.show_toast(<span class="hljs-string">"Resource Alert"</span>, message, duration=<span class="hljs-number">10</span>)<br /><br /> <span class="hljs-comment"># Check battery level</span><br /> <span class="hljs-keyword">if</span> battery <span class="hljs-keyword">is</span> <span class="hljs-keyword">not</span> <span class="hljs-literal">None</span> <span class="hljs-keyword">and</span> battery.percent <= battery_threshold <span class="hljs-keyword">and</span> <span class="hljs-keyword">not</span> battery.power_plugged:<br /> message = <span class="hljs-string">f"Battery level is low: <span class="hljs-subst">{battery.percent}</span>%"</span><br /> toaster.show_toast(<span class="hljs-string">"Battery Alert"</span>, message, duration=<span class="hljs-number">10</span>)<br /><br /> <span class="hljs-comment"># Wait for 5 minutes before checking the resources again</span><br /> time.sleep(<span class="hljs-number">300</span>)<br /><br /> <span class="hljs-keyword">except</span> Exception <span class="hljs-keyword">as</span> e:<br /> <span class="hljs-built_in">print</span>(<span class="hljs-string">"An error occurred:"</span>, <span class="hljs-built_in">str</span>(e))<br /> <span class="hljs-keyword">break</span></span> |
Applications:
This script can be used in day-to-day scenarios like playing games, running a local server, training a DL model locally, etc. By tracking all resources you can make sure your scripts or task use optimal memory and if not you can optimize it accordingly. Resource monitor dashboard (You can create a dashboard using Tkinter to get a live resource graph similar to a taskbar with the addition of notifications, and high memory usages sound alerts).
9. EmailBlitz
Handling bulk email communication can be challenging, whether it’s for marketing campaigns, newsletters, or organizational updates. This Python automation script makes the task easier by enabling you to send emails in bulk effortlessly. It streamlines the communication process, allowing you to reach a large group of recipients simultaneously and ensuring timely and efficient message delivery. Ideal for marketers, administrators, or anyone who needs to send numerous emails, this script enhances productivity, saves time, and helps maintain a personal touch in your communications.
1 |
<span id="b026" class="wn vl og wm b bx wo wp w wq wr" data-selectable-paragraph=""><span class="hljs-keyword">import</span> smtplib <br /><span class="hljs-keyword">from</span> email.message <span class="hljs-keyword">import</span> EmailMessage<br /><span class="hljs-keyword">import</span> pandas <span class="hljs-keyword">as</span> pd<br /><br /><span class="hljs-keyword">def</span> <span class="hljs-title.function">send_email</span>(<span class="hljs-params">remail, rsubject, rcontent</span>):<br /> email = EmailMessage() <span class="hljs-comment">## Creating a object for EmailMessage</span><br /> email[<span class="hljs-string">'from'</span>] = <span class="hljs-string">'The Pythoneer Here'</span> <span class="hljs-comment">## Person who is sending</span><br /> email[<span class="hljs-string">'to'</span>] = remail <span class="hljs-comment">## Whom we are sending</span><br /> email[<span class="hljs-string">'subject'</span>] = rsubject <span class="hljs-comment">## Subject of email</span><br /> email.set_content(rcontent) <span class="hljs-comment">## content of email</span><br /> <span class="hljs-keyword">with</span> smtplib.SMTP(host=<span class="hljs-string">'smtp.gmail.com'</span>,port=<span class="hljs-number">587</span>)<span class="hljs-keyword">as</span> smtp: <br /> smtp.ehlo() <span class="hljs-comment">## server object</span><br /> smtp.starttls() <span class="hljs-comment">## used to send data between server and client</span><br /> smtp.login(SENDER_EMAIL,SENDER_PSWRD) <span class="hljs-comment">## login id and password of gmail</span><br /> smtp.send_message(email) <span class="hljs-comment">## Sending email</span><br /> <span class="hljs-built_in">print</span>(<span class="hljs-string">"email send to "</span>,remail) <span class="hljs-comment">## Printing success message</span><br /><br /><br /><br /><span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">'__main__'</span>:<br /> df = pd.read_excel(<span class="hljs-string">'list.xlsx'</span>)<br /> length = <span class="hljs-built_in">len</span>(df)+<span class="hljs-number">1</span><br /><br /> <span class="hljs-keyword">for</span> index, item <span class="hljs-keyword">in</span> df.iterrows():<br /> email = item[<span class="hljs-number">0</span>]<br /> subject = item[<span class="hljs-number">1</span>]<br /> content = item[<span class="hljs-number">2</span>]<br /><br /> send_email(email,subject,content)</span> |
10. ClipSaver
Have you ever found yourself juggling multiple text snippets, only to lose track of what you’ve copied? Imagine having a tool that can keep track of everything you copy throughout the day. This Python automation script does just that. It monitors everything you copy and seamlessly stores each text snippet in a sleek graphical interface. No more searching through endless tabs and risking the loss of valuable information — this script keeps everything organized and easily accessible.
1 |
<span id="fafa" class="wn vl og wm b bx wo wp w wq wr" data-selectable-paragraph="">import tkinter as tk<br />from tkinter import ttk<br />import pyperclip<br /><br />def <span class="hljs-built_in">update_listbox</span>():<br /> new_item = pyperclip.<span class="hljs-built_in">paste</span>()<br /> if new_item not in X:<br /> X.<span class="hljs-built_in">append</span>(new_item)<br /> listbox.<span class="hljs-built_in">insert</span>(tk.END, new_item)<br /> listbox.<span class="hljs-built_in">insert</span>(tk.END, <span class="hljs-string">"----------------------"</span>)<br /> listbox.<span class="hljs-built_in">yview</span>(tk.END)<br /> root.<span class="hljs-built_in">after</span>(<span class="hljs-number">1000</span>, update_listbox)<br /><br />def <span class="hljs-built_in">copy_to_clipboard</span>(event):<br /> selected_item = listbox.<span class="hljs-built_in">get</span>(listbox.<span class="hljs-built_in">curselection</span>())<br /> if selected_item:<br /> pyperclip.<span class="hljs-built_in">copy</span>(selected_item)<br /><br />X = []<br /><br />root = tk.<span class="hljs-built_in">Tk</span>()<br />root.<span class="hljs-built_in">title</span>(<span class="hljs-string">"Clipboard Manager"</span>)<br />root.<span class="hljs-built_in">geometry</span>(<span class="hljs-string">"500x500"</span>)<br />root.<span class="hljs-built_in">configure</span>(bg=<span class="hljs-string">"#f0f0f0"</span>)<br /><br />frame = tk.<span class="hljs-built_in">Frame</span>(root, bg=<span class="hljs-string">"#f0f0f0"</span>)<br />frame.<span class="hljs-built_in">pack</span>(padx=<span class="hljs-number">10</span>, pady=<span class="hljs-number">10</span>)<br /><br />label = tk.<span class="hljs-built_in">Label</span>(frame, text=<span class="hljs-string">"Clipboard Contents:"</span>, bg=<span class="hljs-string">"#f0f0f0"</span>)<br />label.<span class="hljs-built_in">grid</span>(row=<span class="hljs-number">0</span>, column=<span class="hljs-number">0</span>)<br /><br />scrollbar = tk.<span class="hljs-built_in">Scrollbar</span>(root)<br />scrollbar.<span class="hljs-built_in">pack</span>(side=tk.RIGHT, fill=tk.Y)<br /><br />listbox = tk.<span class="hljs-built_in">Listbox</span>(root, width=<span class="hljs-number">150</span>, height=<span class="hljs-number">150</span>, yscrollcommand=scrollbar.set)<br />listbox.<span class="hljs-built_in">pack</span>(pady=<span class="hljs-number">10</span>)<br />scrollbar.<span class="hljs-built_in">config</span>(command=listbox.yview)<br /><br /><span class="hljs-built_in">update_listbox</span>()<br /><br />listbox.<span class="hljs-built_in">bind</span>(<span class="hljs-string">"<Double-Button-1>"</span>, copy_to_clipboard)<br /><br />root.<span class="hljs-built_in">mainloop</span>()</span> |
Did you knew that the .py extension doesn’t matter much when saving code files ??
…………..
You can use any type of extension to save your Python file, whether its
.cow
,.cat
or.mango.
if your script is valid it will run and give you the desired output that you would expect.
11. BriefBot
I love reading articles, research papers, and news publications daily, and I know many people share this habit. However, finding the time to read full articles can be challenging. This Python automation script addresses that by using Neural Networks to generate quick summaries. It utilizes web scraping to extract the article’s content and feeds it into a pre-trained model that produces an abstract summary, saving time and making it easier to stay informed.
1 |
<span id="f3fe" class="wn vl og wm b bx wo wp w wq wr" data-selectable-paragraph=""><br /><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BartForConditionalGeneration, BartTokenizer<br /><span class="hljs-keyword">import</span> requests<br /><span class="hljs-keyword">from</span> bs4 <span class="hljs-keyword">import</span> BeautifulSoup<br /><br /><span class="hljs-comment">## Function to summarize article</span><br /><span class="hljs-keyword">def</span> <span class="hljs-title.function">summarize_article</span>(<span class="hljs-params">article_text, max_length=<span class="hljs-number">150</span></span>):<br /> model_name = <span class="hljs-string">"facebook/bart-large-cnn"</span><br /> tokenizer = BartTokenizer.from_pretrained(model_name)<br /> model = BartForConditionalGeneration.from_pretrained(model_name)<br /><br /> inputs = tokenizer.encode(<span class="hljs-string">"summarize: "</span> + article_text, return_tensors=<span class="hljs-string">"pt"</span>, max_length=<span class="hljs-number">1024</span>, truncation=<span class="hljs-literal">True</span>)<br /> summary_ids = model.generate(inputs, max_length=max_length, min_length=<span class="hljs-number">50</span>, length_penalty=<span class="hljs-number">2.0</span>, num_beams=<span class="hljs-number">4</span>, early_stopping=<span class="hljs-literal">True</span>)<br /><br /> summary = tokenizer.decode(summary_ids[<span class="hljs-number">0</span>], skip_special_tokens=<span class="hljs-literal">True</span>)<br /> <span class="hljs-keyword">return</span> summary<br /><br /><span class="hljs-comment">## Function to scrape content of the aricle </span><br /><span class="hljs-keyword">def</span> <span class="hljs-title.function">scrape_webpage</span>(<span class="hljs-params">url</span>):<br /> <span class="hljs-keyword">try</span>:<br /> headers = { <span class="hljs-string">"User-Agent"</span>: <span class="hljs-string">"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"</span>} <span class="hljs-comment">##</span><br /> response = requests.get(url, headers=headers) <br /> response.raise_for_status()<br /> soup = BeautifulSoup(response.text, <span class="hljs-string">'html.parser'</span>)<br /> all_text = soup.get_text(separator=<span class="hljs-string">'\n'</span>, strip=<span class="hljs-literal">True</span>)<br /> <span class="hljs-keyword">return</span> all_text<br /> <span class="hljs-keyword">except</span> requests.exceptions.RequestException <span class="hljs-keyword">as</span> e:<br /> <span class="hljs-built_in">print</span>(<span class="hljs-string">f"Error: <span class="hljs-subst">{e}</span>"</span>)<br /> <span class="hljs-keyword">return</span> <span class="hljs-literal">None</span><br /><br /><span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">"__main__"</span>:<br /> webpage_url = <span class="hljs-string">"https://thehackernews.com/2024/07/new-ransomware-group-exploiting-veeam.html"</span> <span class="hljs-comment">## Sample URL for Testing The Script</span><br /> webpage_text = scrape_webpage(webpage_url)<br /><br /> <span class="hljs-keyword">if</span> webpage_text:<br /> summary = summarize_article(webpage_text)<br /> <span class="hljs-built_in">print</span>(<span class="hljs-string">"\nSummarized Article:"</span>)<br /> <span class="hljs-built_in">print</span>(summary)<br /> <span class="hljs-keyword">else</span>:<br /> <span class="hljs-built_in">print</span>(<span class="hljs-string">"Webpage scraping failed."</span>)</span> |
12. SpellGuard
No matter how proficient we are in English, we all make spelling and grammar mistakes when writing lengthy reports, articles, or research papers. In the age of AI, numerous powerful Python packages can help rectify these errors and provide a polished proofread to your work. This Python script leverages AI to detect and correct spelling and grammar mistakes, ensuring your writing is clear, accurate, and professional.
1 |
<span id="33d1" class="wn vl og wm b bx wo wp w wq wr" data-selectable-paragraph=""><span class="hljs-comment">## Installing Library</span><br />!pip install lmproof<br /><br /><span class="hljs-comment">## Importing Library</span><br /><span class="hljs-keyword">import</span> lmproof <span class="hljs-keyword">as</span> lm<br /><br /><span class="hljs-comment">## Function for proofreading </span><br /><span class="hljs-keyword">def</span> <span class="hljs-title.function">Proofread</span>(<span class="hljs-params">text</span>):<br /> proof = lm.load(<span class="hljs-string">"en"</span>)<br /> error_free_text = proof.proofread(text)<br /> <span class="hljs-keyword">return</span> error_free_text<br /><br /><span class="hljs-comment">## Sample Text</span><br />TEXT = <span class="hljs-string">''</span> <span class="hljs-comment">## Place sample Text here</span><br /><br /><span class="hljs-comment">## Function Call </span><br />Print(Proofread(TEXT))</span> |
13. LinkStatus
Owning a blog site is still a dream for many writers. Ensuring that all your links are functioning properly is crucial for maintaining a professional and user-friendly blog. Broken links can frustrate readers and hurt your site’s credibility. This Python automation script allows you to check the web connectivity of multiple URLs effortlessly. By regularly monitoring your URLs, this script ensures that your links are always live and functional, enhancing your site’s reliability and user experience.
1 |
<span id="1906" class="wn vl og wm b bx wo wp w wq wr" data-selectable-paragraph=""><span class="hljs-keyword">import</span> csv<br /><span class="hljs-keyword">import</span> requests<br /><span class="hljs-keyword">import</span> pprint<br /><br /><span class="hljs-keyword">def</span> <span class="hljs-title.function">get_status</span>(<span class="hljs-params">website</span>):<br /> <span class="hljs-keyword">try</span>:<br /> status = requests.get(website).status_code<br /> <span class="hljs-keyword">return</span> <span class="hljs-string">"Working"</span> <span class="hljs-keyword">if</span> status == <span class="hljs-number">200</span> <span class="hljs-keyword">else</span> <span class="hljs-string">"Error 404"</span><br /> <span class="hljs-keyword">except</span>:<br /> <span class="hljs-keyword">return</span> <span class="hljs-string">"Connection Failed!!"</span><br /><br /><span class="hljs-keyword">def</span> <span class="hljs-title.function">main</span>():<br /> <span class="hljs-keyword">with</span> <span class="hljs-built_in">open</span>(<span class="hljs-string">"sites.txt"</span>, <span class="hljs-string">"r"</span>) <span class="hljs-keyword">as</span> fr:<br /> websites = [line.strip() <span class="hljs-keyword">for</span> line <span class="hljs-keyword">in</span> fr]<br /> <br /> web_status_dict = {website: get_status(website) <span class="hljs-keyword">for</span> website <span class="hljs-keyword">in</span> websites}<br /> <br /> pprint.pprint(web_status_dict)<br /> <br /> <span class="hljs-comment"># Write results to CSV file</span><br /> <span class="hljs-keyword">with</span> <span class="hljs-built_in">open</span>(<span class="hljs-string">"web_status.csv"</span>, <span class="hljs-string">"w"</span>, newline=<span class="hljs-string">''</span>) <span class="hljs-keyword">as</span> csvfile:<br /> fieldnames = [<span class="hljs-string">"Website"</span>, <span class="hljs-string">"Status"</span>]<br /> writer = csv.DictWriter(csvfile, fieldnames=fieldnames)<br /> <br /> writer.writeheader()<br /> <span class="hljs-keyword">for</span> website, status <span class="hljs-keyword">in</span> web_status_dict.items():<br /> writer.writerow({<span class="hljs-string">"Website"</span>: website, <span class="hljs-string">"Status"</span>: status})<br /><br /> <span class="hljs-built_in">print</span>(<span class="hljs-string">"Data Uploaded to CSV File!!"</span>)<br /><br /><span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">"__main__"</span>:<br /> main()</span> |
You can keep Chinese Strings As Var Names In Python.
Eg: 金竹戈女日 = “Hello World”
14. DailyDigest
Staying informed about the latest happenings in your city, state, country, or the world is important, but our busy schedules often prevent us from dedicating time to reading the news. This automation script solves that problem by scraping trending news from Google News and reading it out loud to you. Whether you’re starting your day or on the go, this script ensures you stay updated with the top news stories effortlessly.
1 |
<span id="8f11" class="wn vl og wm b bx wo wp w wq wr" data-selectable-paragraph=""><br /><span class="hljs-keyword">import</span> pyttsx3 <br /><span class="hljs-keyword">import</span> requests<br /><br />engine = pyttsx3.init(<span class="hljs-string">'sapi5'</span>)<br />voices = engine.getProperty(<span class="hljs-string">'voices'</span>)<br />engine.setProperty(<span class="hljs-string">'voice'</span>, voices[<span class="hljs-number">0</span>].<span class="hljs-built_in">id</span>)<br /><br /><span class="hljs-keyword">def</span> <span class="hljs-title.function">speak</span>(<span class="hljs-params">audio</span>):<br /> engine.say(audio)<br /> engine.runAndWait()<br /><br /><span class="hljs-keyword">def</span> <span class="hljs-title.function">trndnews</span>(): <br /> url = <span class="hljs-string">" http://newsapi.org/v2/top-headlines?country=us&apiKey=GET_YOUR_OWN"</span><br /> page = requests.get(url).json() <br /> article = page[<span class="hljs-string">"articles"</span>] <br /> results = [] <br /> <span class="hljs-keyword">for</span> ar <span class="hljs-keyword">in</span> article: <br /> results.append(ar[<span class="hljs-string">"title"</span>]) <br /> <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-built_in">len</span>(results)): <br /> <span class="hljs-built_in">print</span>(i + <span class="hljs-number">1</span>, results[i]) <br /> speak(results)<br /> <br />trndnews() <br /> <br /><span class="hljs-string">''' Run The Script To Get The Top Headlines From USA'''</span></span> |
15. QRGenie
The popularity of QR Codes has skyrocketed once people started using them for sending and receiving payments. Nowadays they are used to share social links, secret messages, coupon codes, and more. This Python automation script helps you create customized QR codes with your chosen data, allowing you to share information effortlessly and impress your audience.
1 |
<span id="a303" class="wn vl og wm b bx wo wp w wq wr" data-selectable-paragraph=""><span class="hljs-keyword">import</span> qrcode<br /><br /><span class="hljs-keyword">def</span> <span class="hljs-title.function">generate_qr_code</span>(<span class="hljs-params">link, filename</span>):<br /> <span class="hljs-string">"""Generates a QR code for the given link and saves it as filename."""</span><br /><br /> qr = qrcode.QRCode(<br /> version=<span class="hljs-number">1</span>,<br /> error_correction=qrcode.constants.ERROR_CORRECT_L,<br /> box_size=<span class="hljs-number">10</span>,<br /> border=<span class="hljs-number">4</span>,<br /> )<br /> qr.add_data(link)<br /> qr.make(fit=<span class="hljs-literal">True</span>)<br /><br /> img = qr.make_image(fill_color=<span class="hljs-string">"black"</span>, back_color=<span class="hljs-string">"white"</span>)<br /> img.save(<span class="hljs-string">"profile.png"</span>)<br /><br /><span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">"__main__"</span>:<br /> generate_qr_code(<span class="hljs-string">"https://abhayparashar31.medium.com/"</span>, <span class="hljs-string">"Profile.png"</span>)<br /> <span class="hljs-built_in">print</span>(<span class="hljs-string">f"QR code saved successfully!!"</span>)</span> |
16. ShrinkLink
I deal with numerous links daily, some I store, and some I share with my readers. The part I dislike most about links is their length, which can be annoying and hard to read. This automation script efficiently addresses that problem by using an external API to convert long URLs into short, manageable links.
1 |
<span id="3ca0" class="wn vl og wm b bx wo wp w wq wr" data-selectable-paragraph=""><span class="hljs-keyword">import</span> pyshorteners<br /><span class="hljs-keyword">def</span> <span class="hljs-title.function">generate_short_url</span>(<span class="hljs-params">long_url</span>):<br /> s = pyshorteners.Shortener()<br /> <span class="hljs-keyword">return</span> s.tinyurl.short(long_url)<br /><br />long_url = <span class="hljs-built_in">input</span>(<span class="hljs-string">'Paste Long URl \n'</span>)<br />short_url = generate_short_url(long_url)<br /><span class="hljs-built_in">print</span>(short_url)</span> |
17. CaptureIt
Whether you’re a gamer, influencer, artist, or developer, screen recording software is essential for capturing your activities. However, many existing solutions are costly or impose limitations such as watermarks and time constraints. This Python automation script offers a straightforward screen recording solution without watermarks, time limits, and customizable screen window options.
1 |
<span id="f309" class="wn vl og wm b bx wo wp w wq wr" data-selectable-paragraph=""><span class="hljs-keyword">import</span> cv2<br /><span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np<br /><span class="hljs-keyword">import</span> pyautogui<br /><br />SCREEN_SIZE = tuple(pyautogui.size())<br />fourcc = cv2.VideoWriter_fourcc(<span class="hljs-string">'M'</span>,<span class="hljs-string">'J'</span>,<span class="hljs-string">'P'</span>,<span class="hljs-string">'G'</span>)<br />fps = <span class="hljs-number">12.0</span><br />record_seconds = <span class="hljs-number">20</span><br /><span class="hljs-keyword">out</span> = cv2.VideoWriter(<span class="hljs-string">"video.mp4"</span>, fourcc, fps, SCREEN_SIZE)<br /><br /><span class="hljs-keyword">for</span> _ <span class="hljs-keyword">in</span> range(int(record_seconds * fps)):<br /> img = pyautogui.screenshot(region=(<span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">500</span>, <span class="hljs-number">900</span>))<br /> frame = np.array(img)<br /> frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)<br /> <span class="hljs-keyword">out</span>.write(frame)<br /> cv2.imshow(<span class="hljs-string">"video frame"</span>, frame)<br /> <span class="hljs-keyword">if</span> cv2.waitKey(<span class="hljs-number">1</span>) == ord(<span class="hljs-string">"q"</span>):<br /> <span class="hljs-keyword">break</span><br /><br />cv2.destroyAllWindows()<br /><span class="hljs-keyword">out</span>.release()</span> |
Bonus
H2OReminder
This automation script is a simple yet powerful program designed to remind users to stay hydrated by drinking water at regular intervals. It’s an invaluable tool for individuals who spend extended hours in front of computers or have hectic schedules that can lead to forgetting to drink enough water. This script promotes healthy habits by encouraging regular water intake, which is essential for maintaining overall health and well-being.
1 |
<span id="8809" class="wn vl og wm b bx wo wp w wq wr" data-selectable-paragraph=""><span class="hljs-keyword">import</span> time<br /><span class="hljs-keyword">from</span> plyer <span class="hljs-keyword">import</span> notification<br /><br /><span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">"__main__"</span>:<br /> <span class="hljs-keyword">while</span> <span class="hljs-literal">True</span>:<br /> notification.notify(<br /> title=<span class="hljs-string">"Please Drink Water"</span>,<br /> message=<span class="hljs-string">"The U.S. National Academies of Sciences, Engineering, and Medicine determined that an adequate daily fluid intake is: About 15.5 cups (3.7 liters) of fluids a day for men. About 11.5 cups (2.7 liters) of fluids a day for women. Keep Drinking Water !!!"</span>,<br /> app_icon=<span class="hljs-string">"./Desktop-drinkWater-Notification/icon.ico"</span>,<br /> timeout=<span class="hljs-number">12</span><br /> )<br /> time.sleep(<span class="hljs-number">1800</span>) <span class="hljs-comment">## Change it according to your water breaks!!!</span></span> |
Thanks For Reading