Automatisierter Entwurf für Blogverwaltung mit VSCode-Neustart | Original, von KI übersetzt

Home 2025.07.15

Das von Ihnen bereitgestellte Skript ist darauf ausgelegt, den Prozess des Veröffentlichens von Blog-Entwürfen auf strukturierte Weise zu automatisieren. Es ist besonders nützlich für Blogger oder Content-Creator, die ihre Beiträge als Entwürfe verwalten, bevor sie veröffentlicht werden. Hier ist eine erweiterte Einführung, um mehr Kontext über das Skript zu geben:

Einführung

Die Verwaltung eines Blogs oder einer anderen inhaltsgetriebenen Website umfasst oft das Erstellen und Speichern von Entwürfen, bevor sie veröffentlicht werden. Dieses Skript ist darauf ausgelegt, den Arbeitsablauf des Verschiebens von Entwurfsposts in ein bestimmtes Veröffentlichungsverzeichnis zu vereinfachen, insbesondere für eine statische Site-Generator-Konfiguration, wie z. B. diejenigen, die Jekyll oder ähnliche Frameworks verwenden.

Das Skript führt die folgenden Hauptaufgaben aus:

import os
import datetime
import glob
import shutil
import sys
import subprocess
import time

def publish_drafts_to_posts():
    """Überprüft, ob heute erstellte Entwurfsdaten vorhanden sind und verschiebt sie in das _posts/en-Verzeichnis."""
    today = datetime.date.today()
    date_str = today.strftime('%Y-%m-%d')

    drafts_dir = '_drafts'
    posts_en_dir = "original"

    if not os.path.exists(drafts_dir):
        print(f"Das Entwurfsverzeichnis '{drafts_dir}' existiert nicht. Keine Dateien zum Veröffentlichen.")
        return

    if not os.path.exists(posts_en_dir):
        os.makedirs(posts_en_dir)

    # Muster zum Auffinden von Dateien im Entwurfsverzeichnis, die mit dem heutigen Datum beginnen und mit -en.md enden
    pattern = os.path.join(drafts_dir, f"{date_str}-*-en.md")

    found_files = glob.glob(pattern)

    if not found_files:
        print(f"Keine Entwurfsdaten gefunden in '{drafts_dir}', die mit '{date_str}' beginnen, um sie zu veröffentlichen.")
        return

    for file_path in found_files:
        file_name = os.path.basename(file_path)
        destination_path = os.path.join(posts_en_dir, file_name)

        try:
            shutil.move(file_path, destination_path)
            print(f"'{file_name}' wurde von '{drafts_dir}' nach '{posts_en_dir}' verschoben.")
        except Exception as e:
            print(f"Fehler beim Verschieben von '{file_name}': {e}")

    restart_vscode()

def restart_vscode():
    print("VSCode wird sanft neu gestartet, um eine versehentliche Neuerstellung von Entwurfsdaten zu verhindern...")
    try:
        if sys.platform == 'win32':
            # Sanftes Schließen ohne /f
            os.system('taskkill /im Code.exe /t')
            time.sleep(3)  # Verzögerung für die Aufräumarbeiten
            subprocess.Popen(['code', '.'])  # Wiederöffnen
        elif sys.platform == 'darwin':
            # AppleScript für sanftes Beenden
            os.system('osascript -e \'quit app "Visual Studio Code"\'')
            time.sleep(3)
            subprocess.call(['open', '-a', 'Visual Studio Code', '.'])
        elif sys.platform.startswith('linux'):
            # SIGTERM für sanftes Beenden
            os.system('killall code')
            time.sleep(3)
            subprocess.Popen(['code', '.'])
        else:
            print("Plattform wird für das Neustarten von VSCode nicht unterstützt.")
    except Exception as e:
        print(f"Fehler beim Neustarten: {e}. Bitte starten Sie VSCode manuell neu.")

if __name__ == "__main__":
    publish_drafts_to_posts()

Back Donate