उन्नत नियम क्रियाएँ: पायथन स्क्रिप्ट निष्पादित करना

यह दस्तावेज़ वर्णन करता है कि कस्टम पायथन स्क्रिप्ट को निष्पादित करके सरल पाठ प्रतिस्थापन नियमों की कार्यक्षमता को कैसे बढ़ाया जाए। यह शक्तिशाली सुविधा आपको गतिशील प्रतिक्रियाएँ बनाने, फ़ाइलों के साथ इंटरैक्ट करने, बाहरी एपीआई को कॉल करने और सीधे आपके वाक् पहचान वर्कफ़्लो के भीतर जटिल तर्क लागू करने की अनुमति देती है।

मूल अवधारणा: on_match_exec

केवल टेक्स्ट को बदलने के बजाय, अब आप एक या अधिक पायथन स्क्रिप्ट को उसके पैटर्न से मेल खाने पर निष्पादित करने का नियम बता सकते हैं। यह नियम के विकल्प शब्दकोश में on_match_exec कुंजी जोड़कर किया जाता है।

सेवा का प्राथमिक कार्य मैच के बारे में जानकारी प्राप्त करना है:

CODE_ब्लॉक_0

और फिर, एक क्रिया निष्पादित करें, और एक अंतिम स्ट्रिंग लौटाएँ जिसका उपयोग नए पाठ के रूप में किया जाएगा।

नियम संरचना

स्क्रिप्ट क्रिया वाला नियम इस तरह दिखता है:

CODE_ब्लॉक_1 प्रमुख बिंदु:

  • on_match_exec मान एक सूची होना चाहिए।

  • स्क्रिप्ट मानचित्र फ़ाइल के समान निर्देशिका में स्थित होती हैं, यही कारण है कि CONFIG_DIR / 'script_name.py' पथ को परिभाषित करने का अनुशंसित तरीका है।


एक निष्पादन योग्य स्क्रिप्ट बनाना

सिस्टम को आपकी स्क्रिप्ट का उपयोग करने के लिए, इसे दो सरल नियमों का पालन करना होगा:

  1. यह एक वैध पायथन फ़ाइल होनी चाहिए (जैसे, my_script.py)।

  2. इसमें execute(match_data) नाम का एक फ़ंक्शन होना चाहिए।

निष्पादित(मिलान_डेटा) फ़ंक्शन

यह सभी निष्पादन योग्य स्क्रिप्ट के लिए मानक प्रवेश बिंदु है। नियम मेल खाने पर सिस्टम स्वचालित रूप से इस फ़ंक्शन को कॉल करेगा।

  • match_data (dict): एक शब्दकोश जिसमें मैच के बारे में सभी संदर्भ शामिल हैं।

  • रिटर्न वैल्यू (str): फ़ंक्शन को एक स्ट्रिंग वापस करनी होगी। यह स्ट्रिंग नया संसाधित टेक्स्ट बन जाएगी.

मैच_डेटा शब्दकोश

यह शब्दकोश मुख्य एप्लिकेशन और आपकी स्क्रिप्ट के बीच का सेतु है। इसमें निम्नलिखित कुंजियाँ हैं:

  • ``original_text’` (str): वर्तमान नियम से किसी भी प्रतिस्थापन को लागू करने से पहले पूर्ण पाठ स्ट्रिंग।

  • text_after_replacement'` (str): नियम की मूल प्रतिस्थापन स्ट्रिंग को *बाद* में लागू किया गया था, लेकिन *पहले* आपकी स्क्रिप्ट को कॉल किया गया था। (यदि प्रतिस्थापन है, तो यह original_text के समान होगा)।

  • ``regex_match_obj’(re.Match): आधिकारिक पायथन रेगेक्स मैच ऑब्जेक्ट। **कैप्चर ग्रुप** तक पहुंचने के लिए यह बेहद शक्तिशाली है। आपmatch_obj.group(1), match_obj.group(2)`, आदि का उपयोग कर सकते हैं।

  • ``rule_options’` (dict): स्क्रिप्ट को ट्रिगर करने वाले नियम के लिए संपूर्ण विकल्प शब्दकोश।


उदाहरण

उदाहरण 1: वर्तमान समय प्राप्त करना (गतिशील प्रतिक्रिया)

यह स्क्रिप्ट दिन के समय के आधार पर वैयक्तिकृत अभिवादन लौटाती है।

1. नियम (आपकी मानचित्र फ़ाइल में): CODE_ब्लॉक_2

2. स्क्रिप्ट (get_current_time.py): CODE_ब्लॉक_3 उपयोग:

इनपुट: “क्या समय हुआ है” आउटपुट: “शुभ दोपहर! अभी 14:30 बजे हैं।”

उदाहरण 2: सरल कैलकुलेटर (कैप्चर समूहों का उपयोग करके)

यह स्क्रिप्ट गणना करने के लिए रेगेक्स से कैप्चर समूहों का उपयोग करती है।

1. नियम (आपकी मानचित्र फ़ाइल में): CODE_ब्लॉक_4

2. स्क्रिप्ट (कैलकुलेटर.py): कोड_ब्लॉक_5 उपयोग:

इनपुट: “55 प्लस 10 की गणना करें” आउटपुट: “परिणाम 65 है।”

उदाहरण 3: लगातार खरीदारी सूची (फ़ाइल I/O)

यह उदाहरण दिखाता है कि कैसे एक स्क्रिप्ट उपयोगकर्ता के मूल पाठ का निरीक्षण करके कई कमांड (जोड़ना, दिखाना) को संभाल सकती है, और यह फ़ाइल में लिखकर डेटा को कैसे बनाए रख सकती है।

1. नियम (आपकी मानचित्र फ़ाइल में): कोड_ब्लॉक_6

2. स्क्रिप्ट (shopping_list.py): CODE_ब्लॉक_7 उपयोग:

इनपुट 1: “खरीदारी सूची में दूध जोड़ें” आउटपुट 1: “ठीक है, मैंने खरीदारी सूची में ‘दूध’ जोड़ दिया है।”

इनपुट 2: “खरीदारी सूची दिखाएं” आउटपुट 2: “सूची में आपके पास है: दूध।”


सर्वोत्तम प्रथाएं

  • प्रति स्क्रिप्ट एक कार्य: स्क्रिप्ट को एक ही कार्य पर केंद्रित रखें (उदाहरण के लिए, calculator.py केवल गणना करता है)।

  • त्रुटि प्रबंधन: संपूर्ण एप्लिकेशन को क्रैश होने से बचाने के लिए हमेशा अपनी स्क्रिप्ट के तर्क को try...except ब्लॉक में लपेटें। छोड़कर ब्लॉक से एक उपयोगकर्ता-अनुकूल त्रुटि संदेश लौटाएँ।

  • बाहरी पुस्तकालय: आप बाहरी पुस्तकालयों (जैसे अनुरोध या विकिपीडिया-एपीआई) का उपयोग कर सकते हैं, लेकिन आपको यह सुनिश्चित करना होगा कि वे आपके पायथन वातावरण में स्थापित हैं (पिप इंस्टॉल <लाइब्रेरी-नाम>)।

  • सुरक्षा: ध्यान रखें कि यह सुविधा किसी भी पायथन कोड को निष्पादित कर सकती है। केवल विश्वसनीय स्रोतों से प्राप्त स्क्रिप्ट का उपयोग करें।