٢١ سكريبت بسيط بلغة البايثون سيقوم بتلقئين مهامك اليومية

كشخص قضى أكثر من عقد في عالم البرمجة، تعلمت أن تأتيمة المهام المتكررة يمكن أن توفر كمية كبيرة من الوقت والجهد.

الـبايثون، مع بنية بسيطة ومكتبات قوية، هي واحدة من أفضل لغات البرمجة لإنشاء سكربتات الأتمتة. سواء كنت مبرمجًا أو شخصًا يبحث عن تسهيل المهام اليومية، لـبايثون أدوات يمكن أن تساعدك.

في هذا المقال، سأشارك 21 سكربتًا بلغة الـبايثون قمت باستخدامها لأتمتة مهام مختلفة. هذه السكربتات مثالية لأي شخص يرغب في توفير الوقت وتحسين الكفاءة في روتين عمله.

1. إعادة تسمية الملفات بالجملة

إعادة تسمية الملفات واحدًا تلو الآخر يمكن أن يكون مهمة تستغرق الكثير من الوقت، ولكن مع بايثون، يمكنك بسهولة أتمتة هذا باستخدام وحدة os.

إليك سكربت بسيط يقوم بـإعادة تسمية ملفات متعددة في مجلد استنادًا إلى نمط معين:

import os

def bulk_rename(folder_path, old_name_part, new_name_part):
    for filename in os.listdir(folder_path):
        if old_name_part in filename:
            new_filename = filename.replace(old_name_part, new_name_part)
            os.rename(os.path.join(folder_path, filename), os.path.join(folder_path, new_filename))
            print(f"Renamed {filename} to {new_filename}")

folder = '/path/to/your/folder' bulk_rename(folder, 'old_part', 'new_part')

يبحث هذا السكربت عن الملفات التي تحتوي على جزء_الاسم_القديم في أسمائها ويستبدله بـجزء_الاسم_الجديد.

2. نسخ النسخ الاحتياطية تلقائيًا

نعلم جميعًا مدى أهمية عمل نسخ احتياطية بانتظام، ويمكن أن يتم ذلك بسهولة باستخدام وحدةshutil في بايثون.

سيقوم هذا السكربت بنسخ جميع الملفات من دليل واحد إلى آخر لأغراض النسخ الاحتياطي:

import shutil
import os

def backup_files(src_dir, dest_dir):
    if not os.path.exists(dest_dir):
        os.makedirs(dest_dir)
    for file in os.listdir(src_dir):
        full_file_name = os.path.join(src_dir, file)
        if os.path.isfile(full_file_name):
            shutil.copy(full_file_name, dest_dir)
            print(f"Backed up {file} to {dest_dir}")

source = '/path/to/source/directory' destination = '/path/to/destination/directory' backup_files(source, destination)

يمكنك جدولة هذا البرنامج النصي ليعمل يوميًا باستخدام أدوات جدولة المهام مثل كرون (لينكس) أو جدولة المهام (ويندوز).

3. تنزيل الملفات من الإنترنت

إذا كنت تقوم بانتظام بتنزيل الملفات من الإنترنت، يمكنك أتمتة هذه المهمة باستخدام مكتبة aiohttp.

إليك برنامج نصي بسيط لتنزيل الملفات من عناوين URL:

import aiohttp
import asyncio
import aiofiles

async def download_file(url, filename):
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as response:
            async with aiofiles.open(filename, 'wb') as file:
                await file.write(await response.read())
            print(f"Downloaded {filename}")

urls = {
    'https://example.com/file1.zip': 'file1.zip',
    'https://example.com/file2.zip': 'file2.zip'
}

async def download_all():
    tasks = [download_file(url, filename) for url, filename in urls.items()]
    await asyncio.gather(*tasks)

asyncio.run(download_all())

يقوم هذا البرنامج النصي بتنزيل الملف من عنوان URL المحدد وحفظه في المجلد الذي تحدده.

4. أتمتة تقارير البريد الإلكتروني

إذا كنت بحاجة لإرسال تقارير البريد الإلكتروني بانتظام، يمكنك أتمتتها باستخدام مكتبة smtplib، التي تسمح لك بإرسال رسائل البريد الإلكتروني من حساب Gmail بسهولة:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

def send_email(subject, body, to_email):
    sender_email = '[email protected]'
    sender_password = 'yourpassword'
    receiver_email = to_email

    msg = MIMEMultipart()
    msg['From'] = sender_email
    msg['To'] = receiver_email
    msg['Subject'] = subject
    msg.attach(MIMEText(body, 'plain'))

    try:
        server = smtplib.SMTP('smtp.gmail.com', 587)
        server.starttls()
        server.login(sender_email, sender_password)
        server.sendmail(sender_email, receiver_email, msg.as_string())
        server.quit()
        print("Email sent successfully!")
    except Exception as e:
        print(f"Failed to send email: {e}")

subject = 'Monthly Report'
body = 'Here is the monthly report.'
send_email(subject, body, '[email protected]')

سيقوم هذا البرنامج النصي بإرسال بريد إلكتروني بسيط يحتوي على موضوع وجسم إلى مستلم محدد. تأكد من تمكين التطبيقات الأقل أمانًا في Gmail إذا كنت تستخدم هذه الطريقة.

5. جدولة المهام (أتمتة المهام)

يمكن جدولة المهام بسهولة باستخدام مكتبة schedule، التي تسمح لك بأتمتة المهام مثل إرسال بريد إلكتروني أو تشغيل برنامج نسخ احتياطي في أوقات محددة:

import schedule
import time

def job():
    print("Running scheduled task!")

# Schedule the task to run every day at 10:00 AM
schedule.every().day.at("10:00").do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

سيستمر هذا البرنامج النصي في العمل ويشغل المهام في الوقت المحدد، في هذه الحالة، الساعة 10:00 صباحًا كل يوم.

6. جمع البيانات من خلال استخراج الويب

استخدام aiohttp لطلبات HTTP غير المتزامنة بدلاً من مكتبة الطلبات الزمنية requests يمكن أن يجعل عملية جمع المعلومات من الويب أكثر كفاءة.

هذا المثال يسترد صفحات متعددة بشكل متوازي.

import aiohttp
import asyncio
from bs4 import BeautifulSoup

async def fetch(session, url):
    async with session.get(url) as response:
        return await response.text()

async def scrape(urls):
    async with aiohttp.ClientSession() as session:
        tasks = [fetch(session, url) for url in urls]
        html_pages = await asyncio.gather(*tasks)
        for html in html_pages:
            soup = BeautifulSoup(html, 'html.parser')
            print(soup.title.string)

urls = ['https://example.com/page1', 'https://example.com/page2'] asyncio.run(scrape(urls))

7. تلقائي صفحات التواصل الاجتماعي

إذا كنت تدير حسابات وسائل التواصل الاجتماعي، يمكنك أتمتة النشر عن طريق استخدام مكتبات مثل Tweepy (لتويتر) و Instagram-API (لإنستغرام) التي تسمح لك بالنشر تلقائيًا.

فيما يلي مثال على استخدام مكتبة Tweepy لنشر تغريدة:

import tweepy

def tweet(message):
    consumer_key = 'your_consumer_key'
    consumer_secret = 'your_consumer_secret'
    access_token = 'your_access_token'
    access_token_secret = 'your_access_token_secret'

    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)

    api = tweepy.API(auth)

    api.update_status(message)
    print("Tweet sent successfully!")

tweet("Hello, world!")

يقوم هذا النص بنشر تغريدة برسالة “Hello, world!” إلى حساب تويتر الخاص بك.

8. توليد الفواتير تلقائيًا

إذا كنت تولّد فواتير بانتظام، يمكنك أتمتتها باستخدام مكتبات مثل Fpdf، التي ستنشئ فواتير PDF:

from fpdf import FPDF

def create_invoice(client_name, amount):
    pdf = FPDF()
    pdf.add_page()
    pdf.set_font("Arial", size=12)
    pdf.cell(200, 10, txt="Invoice", ln=True, align='C')
    pdf.cell(200, 10, txt=f"Client: {client_name}", ln=True, align='L')
    pdf.cell(200, 10, txt=f"Amount: ${amount}", ln=True, align='L')
    pdf.output(f"{client_name}_invoice.pdf")
    print(f"Invoice for {client_name} created successfully!")

create_invoice('John Doe', 500)

يقوم هذا النص بإنشاء فاتورة بسيطة وحفظها كملف PDF.

9. رصد توفر المواقع على الإنترنت

يمكن استخدام Python لأتمتة مراقبة توفر المواقع على الإنترنت باستخدام مكتبة requests، التي يمكن أن تفحص بانتظام ما إذا كانت موقعًا على الإنترنت أو لا:

import requests
import time

def check_website(url):
    try:
        response = requests.get(url)
        if response.status_code == 200:
            print(f"Website {url} is up!")
        else:
            print(f"Website {url} returned a status code {response.status_code}")
    except requests.exceptions.RequestException as e:
        print(f"Error checking website {url}: {e}")

url = 'https://example.com' while True: check_website(url) time.sleep(3600) # Check every hour

يقوم هذا النص بالتحقق مما إذا كان الموقع على الإنترنت ويطبع رمز الحالة.

10. الرد التلقائي على رسائل البريد الإلكتروني

إذا كنت تتلقى رسائل بريد إلكتروني بانتظام وترغب في إعداد رد تلقائي، استخدم مكتبات imaplib و smtplib للرد التلقائي على الرسائل البريدية:

import imaplib
import smtplib
from email.mime.text import MIMEText

def auto_reply():
    # Connect to email server
    mail = imaplib.IMAP4_SSL("imap.gmail.com")
    mail.login('[email protected]', 'yourpassword')
    mail.select('inbox')

    # Search for unread emails
    status, emails = mail.search(None, 'UNSEEN')

    if status == "OK":
        for email_id in emails[0].split():
            status, email_data = mail.fetch(email_id, '(RFC822)')
            email_msg = email_data[0][1].decode('utf-8')

            # Send auto-reply
            send_email("Auto-reply", "Thank you for your email. I'll get back to you soon.", '[email protected]')

def send_email(subject, body, to_email):
    sender_email = '[email protected]'
    sender_password = 'yourpassword'
    receiver_email = to_email

    msg = MIMEText(body)
    msg['From'] = sender_email
    msg['To'] = receiver_email
    msg['Subject'] = subject

    with smtplib.SMTP_SSL('smtp.gmail.com', 465) as server:
        server.login(sender_email, sender_password)
        server.sendmail(sender_email, receiver_email, msg.as_string())

auto_reply()

يقوم هذا النص بالرد التلقائي على رسائل البريد الإلكتروني غير المقروءة برسالة محددة مسبقًا.

11. تنظيف الملفات

توفر لغة Python طريقة فعالة لتلقائيَّة تنظيف الملفات، وخاصةً لحذف أو نقل الملفات القديمة للحفاظ على تنظيم الدلائل.

أدناه سكربت بسيط يقوم بحذف الملفات الأقدم من عدد محدد من الأيام باستخدام وحدات os و time.

import aiofiles
import os
import asyncio
import time

async def clean_up(folder_path, days_old):
    now = time.time()
    cutoff_time = now - (days_old * 86400)
    for filename in os.listdir(folder_path):
        file_path = os.path.join(folder_path, filename)
        if os.path.getmtime(file_path) < cutoff_time:
            await aiofiles.os.remove(file_path)
            print(f"Deleted {filename}")

folder = '/path/to/your/folder'
asyncio.run(clean_up(folder, 30))

12. إنشاء كلمات مرور تلقائيًّا

إنشاء كلمات مرور قوية وفريدة أمر أساسي للأمان، ويمكن للغة Python المساعدة في أتمتة هذه العملية باستخدام وحدة random.

أدناه سكربت بسيط يقوم بإنشاء كلمات مرور عشوائية بطول محدد، يدمج بين الحروف والأرقام والرموز الخاصة لتعزيز الأمان.

import random
import asyncio
import string

async def generate_password(length=12):
    characters = string.ascii_letters + string.digits + string.punctuation
    password = ''.join(random.choice(characters) for _ in range(length))
    return password

async def generate_multiple_passwords(n, length=12):
    tasks = [generate_password(length) for _ in range(n)]
    passwords = await asyncio.gather(*tasks)
    print(passwords)

asyncio.run(generate_multiple_passwords(5))

13. تتبع المهام/تذكير

يمكن إنشاء نظام تتبع المهام أو التذكير في لغة Python باستخدام وحدات datetime و asyncio.

import asyncio
from datetime import datetime

async def task_reminder(task_name, interval):
    while True:
        print(f"Reminder: {task_name} - {datetime.now()}")
        await asyncio.sleep(interval)

async def main():
    await asyncio.gather(
        task_reminder("Drink Water", 7200),  # Remind every 2 hours
        task_reminder("Take a Break", 3600)  # Remind every 1 hour
    )

asyncio.run(main())

يقوم هذا السكربت بإرسال تذكير حول المهمة في الوقت المحدد.

14. توليد تقارير يومية تلقائيًّا

أتمتة تقارير يومية باستخدام لغة Python لجمع البيانات وتنسيقها في تقرير:

import datetime
import aiofiles
import asyncio

async def generate_report(data):
    today = datetime.date.today()
    filename = f"daily_report_{today}.txt"
    async with aiofiles.open(filename, 'w') as file:
        await file.write(f"Report for {today}\n")
        await file.write("\n".join(data))
    print(f"Report generated: {filename}")

data = ["Task 1: Completed", "Task 2: Pending", "Task 3: Completed"]
asyncio.run(generate_report(data))

15. مراقبة موارد النظام

إذا كنت مسؤول نظام، يمكنك استخدام لغة Python لمراقبة موارد النظام مثل استخدام وحدة المعالجة المركزية والذاكرة، بمساعدة مكتبة psutil.

import psutil

def monitor_resources():
    cpu_usage = psutil.cpu_percent(interval=1)
    memory_usage = psutil.virtual_memory().percent
    print(f"CPU Usage: {cpu_usage}%")
    print(f"Memory Usage: {memory_usage}%")

monitor_resources()

16. تغيير حجم الصور بالدُفعة

إذا كنت بحاجة إلى تغيير حجم الصور بالجملة، فإن Python يجعل الأمر سهلاً باستخدام مكتبة Pillow.

from PIL import Image
import os
import asyncio
from concurrent.futures import ProcessPoolExecutor

def resize_image(filename, width, height):
    img = Image.open(filename)
    img = img.resize((width, height))
    img.save(f"resized_{filename}")
    return f"Resized {filename}"

async def resize_images(folder_path, width, height):
    with ProcessPoolExecutor() as executor:
        loop = asyncio.get_event_loop()
        tasks = []
        for filename in os.listdir(folder_path):
            if filename.endswith('.jpg'):
                tasks.append(loop.run_in_executor(
                    executor, resize_image, os.path.join(folder_path, filename), width, height))
        results = await asyncio.gather(*tasks)
        print(results)

folder = '/path/to/your/images'
asyncio.run(resize_images(folder, 800, 600))

يقوم هذا النص بتغيير حجم جميع الصور .jpg في مجلد إلى الأبعاد المحددة.

١٧. أتمتة نسخ البيانات إلى السحابة

يمكن تحقيق أتمتة عمليات النسخ الاحتياطي إلى خدمات السحابة مثل Google Drive بواسطة Python باستخدام مكتبات مثل pydrive.

from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive

def backup_to_google_drive(file_path):
    gauth = GoogleAuth()
    gauth.LocalWebserverAuth()
    drive = GoogleDrive(gauth)
    file = drive.CreateFile({'title': 'backup_file.txt'})
    file.Upload()
    print("Backup uploaded successfully!")

file = '/path/to/your/file.txt' backup_to_google_drive(file)

١٨. إنشاء تذكيرات يومية

يسهل إعداد التذكيرات اليومية باستخدام وحدة time التي ستذكرك بشرب الماء كل ساعتين:

import time

def water_reminder():
    while True:
        print("Time to drink water!")
        time.sleep(7200)  # Remind every 2 hours

water_reminder()

١٩. أتمتة إدخال البيانات إلى Excel

إذا كنت تدخل البيانات بانتظام إلى Excel، فإن Python يمكن أن يساعد في أتمتة هذه المهمة باستخدام مكتبة openpyxl:

from openpyxl import Workbook

def create_excel(data):
    wb = Workbook()
    ws = wb.active
    for row in data:
        ws.append(row)
    wb.save('data.xlsx')
    print("Excel file created successfully!")

data = [
    ["Name", "Age", "City"],
    ["John", 30, "New York"],
    ["Anna", 25, "London"],
]
create_excel(data)

٢٠. أتمتة تنظيف البيانات

إذا كنت تعمل مع مجموعات بيانات كبيرة، يمكن لـ Python أن يقوم بمهام تنظيف البيانات تلقائيًا، والتي ستزيل الصفوف الفارغة من ملف CSV:

import csv

def clean_csv(file_path):
    with open(file_path, 'r') as infile:
        reader = csv.reader(infile)
        rows = [row for row in reader if any(row)]
    
    with open(file_path, 'w', newline='') as outfile:
        writer = csv.writer(outfile)
        writer.writerows(rows)
    
    print("Empty rows removed from CSV")

file = '/path/to/your/data.csv' clean_csv(file)

٢١. استخراج النص من الصور

يمكن استخدام Python لـ استخراج النص من الصور باستخدام مكتبة pytesseract، والتي يمكن أن تكون مفيدة عندما تحتاج إلى ترقيم المحتوى المطبوع أو استخراج النص من الوثائق الممسوحة ضوئيًا.

from PIL import Image
import pytesseract

def extract_text_from_image(image_path):
    # Open the image file
    img = Image.open(image_path)
    
    # Use pytesseract to extract text
    text = pytesseract.image_to_string(img)
    
    return text

image_path = 'path_to_your_image.jpg'
extracted_text = extract_text_from_image(image_path)
print("Extracted Text:\n", extracted_text)
الاستنتاج

هذه أمثلة قليلة فقط على ما يمكن أن يفعله Python لأتمتة مهامك اليومية. بفضل بنية اللغة البسيطة والمكتبات القوية، يمكن لـ Python التعامل مع معظم المهام التي تواجهك.

سواء كنت تدير الملفات أو ترسل البريد الإلكتروني أو توليد التقارير، يمكن للبايثون أن يوفر لك الوقت ويعزز من إنتاجيتك. لذا، ابدأ اليوم في العمل بالأتمتة باستخدام البايثون، ودعه يتولى مهامك اليومية!

Source:
https://www.tecmint.com/python-automation-scripts/