اللُّغَوِيّــ

شرح سكريبت إنشاء مجلدات السور للقرآن الكريم

نظرة عامة

هذا السكريبت مصمم لإنشاء هيكل مجلدات منظم لسور القرآن الكريم الـ114، مع توليد ملفات _index.md متوافقة مع نظام Hugo للمواقع الثابتة.

المتطلبات

import os

السكريبت يستخدم مكتبة os فقط - وهي مكتبة أساسية في Python لا تحتاج لتثبيت إضافي.

مكونات الكود

1. قائمة أسماء السور بالعربية

surah_names_arabic = [
    "الفاتحة", "البقرة", "آل عمران", ... , "الناس"
]

الوصف:

2. الدالة الرئيسية create_hugo_surah_folders

def create_hugo_surah_folders(base_path="content/quran"):

المعاملات (Parameters):

خطوات عمل الدالة:

الخطوة 1: إنشاء المجلد الأساسي
if not os.path.exists(base_path):
    os.makedirs(base_path)
    print(f"Created base directory: {base_path}")
الخطوة 2: حلقة إنشاء مجلدات السور
for i, surah_name in enumerate(surah_names_arabic, 1):

شرح enumerate(surah_names_arabic, 1):

الخطوة 3: تنسيق اسم المجلد
folder_name = f"{i:03d}"

التنسيق:

لماذا هذا التنسيق؟

الخطوة 4: إنشاء مجلد السورة
folder_path = os.path.join(base_path, folder_name)

if not os.path.exists(folder_path):
    os.makedirs(folder_path)
الخطوة 5: إنشاء ملف _index.md
index_file_path = os.path.join(folder_path, "_index.md")

index_content = f"""---
title: "سورة {surah_name}"
weight: {i}
---

# سورة {surah_name}

"""

مكونات ملف Hugo Front Matter:

  1. YAML Front Matter (بين ---):

    • title: عنوان السورة بالعربية
    • weight: وزن الترتيب في Hugo (للتحكم في ترتيب العرض)
  2. محتوى Markdown:

    • عنوان رئيسي # باسم السورة
الخطوة 6: كتابة الملف
with open(index_file_path, "w", encoding="utf-8") as f:
    f.write(index_content)

ملاحظات مهمة:

3. نقطة التشغيل الرئيسية

if __name__ == "__main__":
    create_hugo_surah_folders("content/quran")

الشرح:

البنية الناتجة

بعد تشغيل السكريبت، ستحصل على هيكل مثل:

content/quran/
├── 001/
│   └── _index.md
├── 002/
│   └── _index.md
├── 003/
│   └── _index.md
...
├── 113/
│   └── _index.md
└── 114/
    └── _index.md

محتوى ملف _index.md النموذجي:

---
title: "سورة الفاتحة"
weight: 1
---

# سورة الفاتحة

كيفية الاستخدام

الطريقة الأساسية:

python surahs.py

سيتم إنشاء المجلدات في content/quran/

تخصيص المسار:

يمكنك تعديل السطر الأخير في الكود:

create_hugo_surah_folders("المسار/المخصص/الخاص/بك")

أو استيراد الدالة في ملف آخر:

from surahs import create_hugo_surah_folders

# إنشاء في مسار مختلف
create_hugo_surah_folders("content/ar/quran")

المخرجات (Output)

عند التشغيل، سترى رسائل مثل:

Created folder: 001
Created _index.md for Surah 001: سورة الفاتحة
Created folder: 002
Created _index.md for Surah 002: سورة البقرة
...
✅ Successfully created 114 surah folders with Hugo front matter!
📁 Location: /full/path/to/content/quran

الاستخدامات المقترحة

  1. موقع قرآني بـ Hugo: إنشاء موقع ثابت لعرض القرآن الكريم
  2. توثيق منظم: هيكل جاهز لإضافة محتوى لكل سورة
  3. نظام إدارة محتوى: قاعدة للبناء عليها بإضافة الآيات والتفاسير

ملاحظات للتطوير

إضافات محتملة:

  1. إضافة معلومات السورة:
index_content = f"""---
title: "سورة {surah_name}"
weight: {i}
verses_count: {verses_count[i-1]}
revelation_place: "{revelation_places[i-1]}"
---
  1. إنشاء ملفات للآيات:
# إنشاء ملف لكل آية داخل مجلد السورة
for verse_num in range(1, verse_count + 1):
    verse_file = f"verse-{verse_num:03d}.md"
  1. دعم لغات متعددة:
# إنشاء ملفات بلغات مختلفة
languages = ["ar", "en", "fr"]
for lang in languages:
    create_hugo_surah_folders(f"content/{lang}/quran")

الخلاصة

هذا السكريبت أداة بسيطة لكنها فعالة لإنشاء بنية منظمة لمشروع قرآني على Hugo. الكود نظيف، موثق جيدًا، ويستخدم أفضل الممارسات في Python لمعالجة الملفات والنصوص العربية.


الكود كاملاً


import os

# Surah names in Arabic (according to Mushaf arrangement)
surah_names_arabic = [
    "ٱلْفَاتِحَةِ", "ٱلْبَقَرَةِ", "آلِ عِمْرَانَ", "ٱلنِّسَاءِ", "ٱلْمَائِدَةِ", "ٱلْأَنْعَامِ", 
    "ٱلْأَعْرَافِ", "ٱلْأَنْفَالِ", "ٱلتَّوْبَةِ", "يُونُسَ", "هُودٍ", "يُوسُفَ", 
    "ٱلرَّعْدِ", "إِبْرَاهِيمَ", "ٱلْحِجْرِ", "ٱلنَّحْلِ", "ٱلْإِسْرَاءِ", "ٱلْكَهْفِ", 
    "مَرْيَمَ", "طه", "ٱلْأَنْبِيَاءِ", "ٱلْحَجِّ", "ٱلْمُؤْمِنُونَ", "ٱلنُّورِ", 
    "ٱلْفُرْقَانِ", "ٱلشُّعَرَاءِ", "ٱلنَّمْلِ", "ٱلْقَصَصِ", "ٱلْعَنْكَبُوتِ", 
    "ٱلرُّومِ", "لُقْمَانَ", "ٱلسَّجْدَةِ", "ٱلْأَحْزَابِ", "سَبَإٍ", "فَاطِرٍ", 
    "يس", "ٱلصَّافَّاتِ", "ص", "ٱلزُّمَرِ", "غَافِرٍ", "فُصِّلَتْ", "ٱلشُّورَىٰ", 
    "ٱلزُّخْرُفِ", "ٱلدُّخَانِ", "ٱلْجَاثِيَةِ", "ٱلْأَحْقَافِ", "مُحَمَّدٍ", 
    "ٱلْفَتْحِ", "ٱلْحُجُرَاتِ", "ق", "ٱلذَّارِيَاتِ", "ٱلطُّورِ", "ٱلنَّجْمِ", 
    "ٱلْقَمَرِ", "ٱلرَّحْمَٰنِ", "ٱلْوَاقِعَةِ", "ٱلْحَدِيدِ", "ٱلْمُجَادِلَةِ", 
    "ٱلْحَشْرِ", "ٱلْمُمْتَحَنَةِ", "ٱلصَّفِّ", "ٱلْجُمُعَةِ", "ٱلْمُنَافِقُونَ", 
    "ٱلتَّغَابُنِ", "ٱلطَّلَاقِ", "ٱلتَّحْرِيمِ", "ٱلْمُلْكِ", "ٱلْقَلَمِ", 
    "ٱلْحَاقَّةِ", "ٱلْمَعَارِجِ", "نُوحٍ", "ٱلْجِنِّ", "ٱلْمُزَّمِّلِ", 
    "ٱلْمُدَّثِّرِ", "ٱلْقِيَامَةِ", "ٱلْإِنْسَانِ", "ٱلْمُرْسَلَاتِ", "ٱلنَّبَإِ", 
    "ٱلنَّازِعَاتِ", "عَبَسَ", "ٱلتَّكْوِيرِ", "ٱلِٱنْفِطَارِ", "ٱلْمُطَفِّفِينَ", 
    "ٱلِٱنْشِقَاقِ", "ٱلْبُرُوجِ", "ٱلطَّارِقِ", "ٱلْأَعْلَىٰ", "ٱلْغَاشِيَةِ", 
    "ٱلْفَجْرِ", "ٱلْبَلَدِ", "ٱلشَّمْسِ", "ٱللَّيْلِ", "ٱلضُّحَىٰ", "ٱلشَّرْحِ", 
    "ٱلتِّينِ", "ٱلْعَلَقِ", "ٱلْقَدْرِ", "ٱلْبَيِّنَةِ", "ٱلزَّلْزَلَةِ", 
    "ٱلْعَادِيَاتِ", "ٱلْقَارِعَةِ", "ٱلتَّكَاثُرِ", "ٱلْعَصْرِ", "ٱلْهُمَزَةِ", 
    "ٱلْفِيلِ", "قُرَيْشٍ", "ٱلْمَاعُونِ", "ٱلْكَوْثَرِ", "ٱلْكَافِرُونَ", 
    "ٱلنَّصْرِ", "ٱلْمَسَدِ", "ٱلْإِخْلَاصِ", "ٱلْفَلَقِ", "ٱلنَّاسِ"
]

def create_hugo_surah_folders(base_path="content/quran"):
    """
    Create folders for each surah with Hugo-compatible _index.md
    """
    
    # Create base directory
    if not os.path.exists(base_path):
        os.makedirs(base_path)
        print(f"Created base directory: {base_path}")
    
    # Create folders and _index.md files for each surah
    for i, surah_name in enumerate(surah_names_arabic, 1):
        # Format folder name with leading zeros (001, 002, etc.) - cleaner without name in folder
        folder_name = f"{i:03d}"
        folder_path = os.path.join(base_path, folder_name)
        
        # Create folder
        if not os.path.exists(folder_path):
            os.makedirs(folder_path)
            print(f"Created folder: {folder_name}")
        
        # Create _index.md file
        index_file_path = os.path.join(folder_path, "_index.md")
        
        # Hugo front matter with title and weight
        index_content = f"""---
title: "سورة {surah_name}"
weight: {i}
---

# سورة {surah_name}

"""
        
        # Write to _index.md
        with open(index_file_path, "w", encoding="utf-8") as f:
            f.write(index_content)
        
        print(f"Created _index.md for Surah {i:03d}: سورة {surah_name}")
    
    print(f"\n✅ Successfully created {len(surah_names_arabic)} surah folders with Hugo front matter!")
    print(f"📁 Location: {os.path.abspath(base_path)}")
    print("\n📘 Folder structure:")
    print("   001/")
    print("     └── _index.md")
    print("   002/")
    print("     └── _index.md")
    print("   ...")
    print("   114/")
    print("     └── _index.md")

if __name__ == "__main__":
    # You can change the path to match your Hugo content directory
    create_hugo_surah_folders(".")

تم بحمد الله 🌙