10 Useful Python Automation Scripts for Everyday Tasks
This article presents ten practical Python automation scripts covering image and video processing, PDF conversion, API interaction, system notifications, grammar and spell correction, downloading, news fetching, and GUI creation, each accompanied by concise code examples for quick implementation.
Automation can eliminate repetitive, time‑consuming tasks such as cropping hundreds of photos, trimming videos, converting PDFs, fetching API data, or correcting grammar. This article shares ten ready‑to‑run Python scripts that address these common needs.
1. Image Optimizer
This script uses the Pillow library to crop, resize, flip, rotate, compress, blur, sharpen, adjust brightness/contrast, apply filters, and save images.
# Image Optimizing
# pip install Pillow
import PIL
# Cropping
im = PIL.Image.open("Image1.jpg")
im = im.crop((34, 23, 100, 100))
# Resizing
im = PIL.Image.open("Image1.jpg")
im = im.resize((50, 50))
# Flipping
im = PIL.Image.open("Image1.jpg")
im = im.transpose(PIL.Image.FLIP_LEFT_RIGHT)
# Rotating
im = PIL.Image.open("Image1.jpg")
im = im.rotate(360)
# Compressing
im = PIL.Image.open("Image1.jpg")
im.save("Image1.jpg", optimize=True, quality=90)
# Blurring
im = PIL.Image.open("Image1.jpg")
im = im.filter(PIL.ImageFilter.BLUR)
# Sharpening
im = PIL.Image.open("Image1.jpg")
im = im.filter(PIL.ImageFilter.SHARPEN)
# Set Brightness
im = PIL.Image.open("Image1.jpg")
im = PIL.ImageEnhance.Brightness(im)
im = im.enhance(1.5)
# Set Contrast
im = PIL.Image.open("Image1.jpg")
im = PIL.ImageEnhance.Contrast(im)
im = im.enhance(1.5)
# Adding Filters
im = PIL.Image.open("Image1.jpg")
im = PIL.ImageOps.grayscale(im)
im = PIL.ImageOps.invert(im)
im = PIL.ImageOps.posterize(im, 4)
# Saving
im.save("Image1.jpg")2. Video Optimizer
Using the moviepy library, this script can load videos, trim clips, concatenate them, speed up playback, add audio, reverse, merge, apply visual effects, insert images, and finally export the result.
# Video Optimizer
# pip install moviepy
import moviepy.editor as pyedit
# Load the Video
video = pyedit.VideoFileClip("vid.mp4")
# Trimming
vid1 = video.subclip(0, 10)
vid2 = video.subclip(20, 40)
final_vid = pyedit.concatenate_videoclips([vid1, vid2])
# Speed up the video
final_vid = final_vid.speedx(2)
# Adding Audio to the video
aud = pyedit.AudioFileClip("bg.mp3")
final_vid = final_vid.set_audio(aud)
# Reverse the Video
final_vid = final_vid.fx(pyedit.vfx.time_mirror)
# Merge two videos
vid1 = pyedit.VideoFileClip("vid1.mp4")
vid2 = pyedit.VideoFileClip("vid2.mp4")
final_vid = pyedit.concatenate_videoclips([vid1, vid2])
# Add VFX to Video
vid1 = final_vid.fx(pyedit.vfx.mirror_x)
vid2 = final_vid.fx(pyedit.vfx.invert_colors)
final_vid = pyedit.concatenate_videoclips([vid1, vid2])
# Add Images to Video
img1 = pyedit.ImageClip("img1.jpg")
img2 = pyedit.ImageClip("img2.jpg")
final_vid = pyedit.concatenate_videoclips([img1, img2])
# Save the video
final_vid.write_videofile("final.mp4")3. PDF to Images
This script leverages PyMuPDF (imported as fitz ) to open a PDF file, iterate over its pages, render each page as a PNG image, and save the images with sequential filenames.
# PDF to Images
# pip install PyMuPDF
import fitz
def pdf_to_images(pdf_file):
doc = fitz.open(pdf_file)
for p in doc:
pix = p.get_pixmap()
output = f"page{p.number}.png"
pix.writePNG(output)
pdf_to_images("test.pdf")4. API Data Fetcher
Using urllib3 , this example demonstrates how to perform GET and POST requests, print the HTTP status, and display the response data.
# pip install urllib3
import urllib3
# Fetch API data
url = "https://api.github.com/users/psf/repos"
http = urllib3.PoolManager()
response = http.request('GET', url)
print(response.status)
print(response.data)
# Post API data
url = "https://httpbin.org/post"
http = urllib3.PoolManager()
response = http.request('POST', url, fields={'hello': 'world'})
print(response.status)
print(response.data)5. Battery Notifier
With psutil to read battery level and plyer for desktop notifications, this loop alerts the user when the battery drops below a threshold.
# Battery Notifier
# pip instal plyer
from plyer import notification
import psutil
from time import sleep
while True:
battery = psutil.sensors_battery()
life = battery.percent
if life < 50:
notification.notify(
title="Battery Low",
message="Please connect to power source",
timeout=10
)
sleep(60)6. Grammar Fixer
Utilizing the happytransformer library with a pre‑trained T5 model, this script defines a function that corrects grammatical errors in a given text.
# Grammar Fixer
# pip install happytransformer
from happytransformer import HappyTextToText as HappyTTT
from happytransformer import TTSettings
def Grammer_Fixer(Text):
Grammer = HappyTTT("T5", "prithivida/grammar_error_correcter_v1")
config = TTSettings(do_sample=True, top_k=10, max_length=100)
corrected = Grammer.generate_text(Text, args=config)
print("Corrected Text: ", corrected.text)
Text = "This is smple tet we how know this"
Grammer_Fixer(Text)7. Spell Fixer
Based on textblob , this script provides functions to correct spelling in whole paragraphs or individual words.
# Spell Fixer
# pip install textblob
from textblob import *
# Fixing Paragraph Spells
def fix_paragraph_words(paragraph):
sentence = TextBlob(paragraph)
correction = sentence.correct()
print(correction)
# Fixing Words Spells
def fix_word_spell(word):
word = Word(word)
correction = word.correct()
print(correction)
fix_paragraph_words("This is sammple tet!!")
fix_word_spell("maangoo")8. Internet Downloader
By installing the internetdownloadmanager package, this function creates a multi‑threaded downloader capable of resuming and handling large files.
# Python Downloader
# pip install internetdownloadmanager
import internetdownloadmanager as idm
def Downloader(url, output):
pydownloader = idm.Downloader(
worker=20,
part_size=1024*1024*10,
resumable=True,
)
pydownloader.download(url, output)
Downloader("Link url", "image.jpg")
Downloader("Link url", "video.mp4")9. World News Fetcher
This script uses the requests library to call a public news API (replace YOUR_API_KEY ) and prints the returned JSON.
# World News Fetcher
# pip install requests
import requests
ApiKey = "YOUR_API_KEY"
url = f"https://api.worldnewsapi.com/search-news?text=hurricane&api-key={ApiKey}"
headers = {'Accept': 'application/json'}
response = requests.get(url, headers=headers)
print("News: ", response.json())10. PySide2 GUI
Demonstrating a basic graphical user interface built with PySide6 , the example creates a window, adds buttons, labels, input fields, radio buttons, checkboxes, sliders, a progress bar, an image, and a message box.
# PySide 2
# pip install PySide2
from PySide6.QtWidgets import *
from PySide6.QtGui import *
import sys
app = QApplication(sys.argv)
window = QWidget()
window.resize(500, 500)
window.setWindowTitle("PySide2 Window")
button = QPushButton("Click Me", window)
button.move(200, 200)
label = QLabel("Hello Medium", window)
label.move(200, 150)
input_box = QLineEdit(window)
input_box.move(200, 250)
print(input_box.text())
radio_button = QRadioButton("Radio Button", window)
radio_button.move(200, 300)
checkbox = QCheckBox("Checkbox", window)
checkbox.move(200, 350)
slider = QSlider(window)
slider.move(200, 400)
progress_bar = QProgressBar(window)
progress_bar.move(200, 450)
image = QLabel(window)
image.setPixmap(QPixmap("image.png"))
msg = QMessageBox(window)
msg.setText("Message Box")
msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
window.show()
sys.exit(app.exec())These ten scripts provide a quick‑start toolkit for automating routine tasks, improving productivity, and serving as building blocks for larger Python projects.
Python Programming Learning Circle
A global community of Chinese Python developers offering technical articles, columns, original video tutorials, and problem sets. Topics include web full‑stack development, web scraping, data analysis, natural language processing, image processing, machine learning, automated testing, DevOps automation, and big data.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.