Quick Start
This guide will get you analyzing Arabic poetry with PyArud v1.0.0 in under 5 minutes.
1. Single Verse Analysis
The most direct way to analyze a verse is with analyze_verse():
from pyarud import ArudhProcessor, format_verse_report
processor = ArudhProcessor()
sadr = "إِذَا غَامَرْتَ فِي شَرَفٍ مَرُومِ"
ajuz = "فَلَا تَقْنَعْ بِمَا دُونَ النُّجُومِ"
# Returns a strongly-typed VerseAnalysis object
verse_analysis = processor.analyze_verse(sadr, ajuz)
# Print a rich formatted report
print(format_verse_report(verse_analysis))
Direct Attribute Access
You can access all prosodic and rhyme properties directly:
print("Bahr Key:", verse_analysis.meter_key) # 'taweel'
print("Bahr Arabic:", verse_analysis.meter_name_ar) # 'الطويل'
print("Accuracy Score:", verse_analysis.score) # 1.0
# Sadr details
print("Sadr Arudi Text:", verse_analysis.sadr.arudi_text)
print("Sadr Pattern:", verse_analysis.sadr.pattern)
for foot in verse_analysis.sadr.feet:
print(f" Foot: {foot.foot_name} | Status: {foot.status} | Defect: {foot.defect_name}")
# Qafiyah & Rhyme details
q = verse_analysis.qafiyah
print(f"Rawi: {q.rawi} ({q.rhyme_form})")
print(f"Rhyme Pattern: {q.pattern} ({q.rhyme_type})")
2. Multi-Verse Poem Analysis
To analyze an entire poem, use analyze_poem():
from pyarud import ArudhProcessor, format_poem_report
processor = ArudhProcessor()
poem = [
("إِذَا غَامَرْتَ فِي شَرَفٍ مَرُومِ", "فَلَا تَقْنَعْ بِمَا دُونَ النُّجُومِ"),
("فَطَعْمُ المَوْتِ فِي أَمْرٍ حَقِيرٍ", "كَطَعْمِ المَوْتِ فِي أَمْرٍ عَظِيمِ"),
("يَرَى الجُبَنَاءُ أَنَّ العَجْزَ عَقْلٌ", "وَتِلْكَ خَدِيعَةُ الطَّبْعِ اللَّئِيمِ"),
]
poem_analysis = processor.analyze_poem(poem)
print(format_poem_report(poem_analysis))
print("Dominant Meter:", poem_analysis.meter_name_ar)
print("Average Score:", poem_analysis.average_score)
print(f"Total Verses: {len(poem_analysis.verses)}")
3. Extracting Phonetic & Binary Patterns
If you only need phonetic transcription or binary prosodic patterns (1 = Mutaharrik, 0 = Sakin):
from pyarud import ArudiConverter
converter = ArudiConverter()
arudi_text, pattern = converter.prepare_text("مُسْتَفْعِلُنْ مَفْعُولَاتُ")
print("Arudi Text:", arudi_text) # مُسْتَفْعِلُنْ مَفْعُولَاتُ
print("Binary Pattern:", pattern) # 1010110101010
4. Dictionary Serialization (Legacy & JSON Support)
If you need a plain Python dict or JSON-serializable object:
# Convert any analysis to dict
data = verse_analysis.to_dict()
# Or use legacy process_poem
legacy_dict = processor.process_poem([("سَأَتْرُكُ حُبَّكم مِنْ غَيْرِ بُغْضٍ", "وَلَكِنْ كَثْرَةُ الشُّرَكَاءِ فِيهِ")])