Gemini CLI के साथ आसानी से और सरलता से व्याख्या प्राप्त करने के लिए एक कमांड

6 min

language: ja bn de en es fr hi ko pt ru zh-cn zh-tw

नमस्ते, मैं अक्षम हूँ।
बहुत समय हो गया। मैं ऊर्जा बचा रहा था। यह सिर्फ एक मज़ाक था, मैं बस आलसी था। माफ़ करना।

तो, यह एक छोटी सी बात है, लेकिन Gemini CLI जारी हो गया है, जो CLI उपयोगकर्ताओं के लिए खुशी की बात है।

मैंने बस इसे अपने .bashrc में डाला है।

ghelp() {
 (echo “इसकी व्याख्या करें” ; cat $1 ) | gemini
}

यह कुछ खास नहीं है, लेकिन अब मुझे ब्राउज़र के माध्यम से कोड की व्याख्या LLM से करवाने की आवश्यकता नहीं है, जिससे यह आसान हो गया है।
उदाहरण के लिए,
[curljs]

thepassenger:[haturatu]:~/git/curljs$ ghelp curl.js 
यह कोड एक Node.js स्क्रिप्ट है जो Puppeteer नामक लाइब्रेरी का उपयोग करके एक निर्दिष्ट वेब पेज की सामग्री को प्राप्त करता है।

नीचे, कोड के प्रत्येक भाग का क्या कार्य है, इसकी व्याख्या की गई है।

1.  **`const puppeteer = require('puppeteer');`**
    *   Puppeteer लाइब्रेरी को लोड करता है। इस लाइब्रेरी का उपयोग प्रोग्रामेटिक रूप से Chrome या Chromium ब्राउज़र को नियंत्रित करने के लिए किया जाता है।

2.  **`(async () => { ... })();`**
    *   यह एक 'तत्काल निष्पादित होने वाला एसिंक्रोनस फ़ंक्शन' है। पूरे कोड को एक एसिंक्रोनस फ़ंक्शन में लपेटने से, `await` कीवर्ड का उपयोग अंदर किया जा सकता है। `await` धीमी प्रक्रियाओं (जैसे ब्राउज़र लॉन्च करना या पेज लोड करना) के पूरा होने तक प्रतीक्षा करने के लिए आवश्यक है।

3.  **`const url = process.argv[2];`**
    *   कमांड लाइन से पास किए गए तीसरे तर्क को `url` वेरिएबल में संग्रहीत करता है।
    *   उदाहरण: यदि `node script.js https://example.com` के रूप में निष्पादित किया जाता है, तो `process.argv[2]` में `https://example.com` होगा।

4.  **`if (!url) { ... }`**
    *   यदि URL निर्दिष्ट नहीं है, तो एक त्रुटि संदेश प्रदर्शित करता है और `process.exit(1)` के साथ स्क्रिप्ट को असामान्य रूप से समाप्त करता है।

5.  **`const browser = await puppeteer.launch({ headless: true });`**
    *   ब्राउज़र का एक नया इंस्टेंस लॉन्च करता है।
    *   `headless: true` ब्राउज़र UI (स्क्रीन) को प्रदर्शित किए बिना पृष्ठभूमि में चलाने के लिए एक सेटिंग है। यदि आप डीबगिंग के दौरान ब्राउज़र के व्यवहार को देखना चाहते हैं, तो इसे `false` पर सेट करें।

6.  **`const page = await browser.newPage();`**
    *   लॉन्च किए गए ब्राउज़र में एक नया टैब (पेज) खोलता है।

7.  **`await page.goto(url, { waitUntil: 'networkidle2' });`**
    *   निर्दिष्ट URL पर नेविगेट करता है।
    *   `waitUntil: 'networkidle2'` पेज लोड होने की प्रतीक्षा करने के लिए एक महत्वपूर्ण विकल्प है। यह तब तक प्रतीक्षा करता है जब तक 500 मिलीसेकंड के लिए कोई नया नेटवर्क कनेक्शन नहीं होता है, जब नेटवर्क कनेक्शन दो या उससे कम हो जाते हैं। यह आधुनिक वेबसाइटों (जैसे SPA) को सही ढंग से प्रदर्शित करने में मदद करता है जो JavaScript द्वारा गतिशील रूप से सामग्री लोड करती हैं।

8.  **`await new Promise(resolve => setTimeout(resolve, 5000));`**
    *   पेज लोड होने के बाद, यह अतिरिक्त 5 सेकंड तक प्रतीक्षा करता है।
    *   यह `networkidle2` द्वारा पूरी तरह से लोड नहीं होने वाले एनिमेशन या कुछ ऑपरेशनों के बाद प्रदर्शित होने वाली सामग्री की प्रतीक्षा करने के लिए एक अतिरिक्त प्रतीक्षा समय के रूप में डाला गया है।

9.  **`const html = await page.content();`**
    *   पेज की पूरी HTML सामग्री प्राप्त करता है। इसमें JavaScript द्वारा गतिशील रूप से उत्पन्न सभी HTML तत्व शामिल हैं।

10. **`console.log(html);`**
    *   प्राप्त HTML को कंसोल पर आउटपुट करता है।

11. **`await browser.close();`**
    *   ब्राउज़र इंस्टेंस को बंद करता है और संसाधनों को जारी करता है। यदि इसे भूल जाते हैं, तो प्रक्रिया समाप्त हुए बिना चलती रह सकती है।

### सारांश

यह स्क्रिप्ट **'कमांड लाइन द्वारा निर्दिष्ट URL के वेब पेज को JavaScript निष्पादन पूरा होने के बाद उसकी अंतिम स्थिति में प्राप्त करती है, और उसके HTML को मानक आउटपुट पर प्रदर्शित करती है'**।

यह उन वेबसाइटों (जैसे SPA) से जानकारी प्राप्त करने का एक बहुत ही उपयोगी तरीका है जो JavaScript द्वारा गतिशील रूप से प्रस्तुत की जाती हैं और जिन्हें एक साधारण HTTP अनुरोध के साथ प्राप्त नहीं किया जा सकता है (जैसे वेब स्क्रैपिंग के लिए)।

यह इस तरह से आउटपुट करता है।
ठीक है, बस इतना ही है....

Related Posts