ریڈٹ ہر سبڈیڈیٹ کے لئے JSON فیڈ پیش کرتا ہے۔ یہاں باش اسکرپٹ بنانے کا طریقہ ہے جو آپ کو پسند آنے والے کسی بھی سبڈڈیٹ سے پوسٹوں کی فہرست کو ڈاؤن لوڈ اور تجزیہ کرتا ہے۔ یہ صرف ایک چیز ہے جو آپ Reddit's JSON فیڈ کے ساتھ کرسکتے ہیں۔
کرل اور جے کیو کی تنصیب کرنا
ہم استعمال کرنے جارہے ہیں
curl
ریڈٹٹ اور سے JSON فیڈ لانے کیلئے
jq
JSON ڈیٹا کی تجزیہ کرنے اور ان فیلڈز کو نکالنے کے جو ہم نتائج سے چاہتے ہیں۔ ان دونوں انحصار کو استعمال کرتے ہوئے انسٹال کریں
apt-get
اوبنٹو اور دیگر ڈیبیئن پر مبنی لینکس تقسیم پر۔ لینکس کی دیگر تقسیموں پر ، اس کے بجائے اپنی تقسیم کے پیکیج مینجمنٹ ٹول کا استعمال کریں۔
sudo apt-get انسٹال کرل curl
Reddit سے کچھ JSON ڈیٹا لائیں
آئیے دیکھتے ہیں کہ ڈیٹا فیڈ کیسا لگتا ہے۔ استعمال کریں
curl
سے تازہ ترین پوسٹس لانے کے لئے
نرمی سے دلچسپی لینا
ذیلی تقسیم:
curl -s -A "reddit کھردنی مثال" https://www.reddit.com/r/MildlyInteresting.json
نوٹ کریں کہ یو آر ایل سے پہلے کس طرح اختیارات استعمال کیے گئے تھے:
-s
کرل کو خاموش حالت میں چلانے پر مجبور کرتا ہے تاکہ ہمیں کوئی آؤٹ پٹ نظر نہ آئے ، سوائے ریڈڈیٹ سرورز کے ڈیٹا کے۔ اگلا آپشن اور پیرامیٹر جو بعد میں ہے ،
-A "reddit کھردنی مثال"
، ایک کسٹم صارف ایجنٹ سٹرنگ متعین کرتا ہے جو Reddit کو ان کے ڈیٹا تک رسائی حاصل کرنے والی خدمت کی شناخت میں مدد کرتا ہے۔ Reddit API سرور صارف ایجنٹ سٹرنگ کی بنیاد پر شرح کی حدود کا اطلاق کرتے ہیں۔ اپنی مرضی کے مطابق قیمت کا تعین کرنا ریڈڈیٹ کو ہماری شرح کی حد کو دوسرے کال کرنے والوں سے دور کرنے کا سبب بنے گا اور اس امکان کو کم کردے گا کہ ہمیں HTTP 429 شرح کی حد سے زیادہ خرابی مل جائے۔
آؤٹ پٹ کو ٹرمینل ونڈو کو پُر کرنا چاہئے اور کچھ اس طرح نظر آنا چاہئے:
آؤٹ پٹ ڈیٹا میں بہت سارے فیلڈز موجود ہیں ، لیکن ہم جس دلچسپی میں دلچسپی رکھتے ہیں وہ عنوان ، پیرملک اور یو آر ایل ہیں۔ آپ Reddit کے API دستاویزات کے صفحے پر اقسام اور ان کے کھیتوں کی ایک مکمل فہرست دیکھ سکتے ہیں۔ ہتتپس://گتحب.کوم/رددت-ارچوے/رددت/وکی/جسون
JSON آؤٹ پٹ سے ڈیٹا نکال رہا ہے
ہم آؤٹ پٹ ڈیٹا سے ٹائٹل ، پرمال لنک ، اور یو آر ایل نکالنا چاہتے ہیں اور اسے ٹیب سے محدود فائل میں محفوظ کرنا چاہتے ہیں۔ ہم ٹیکسٹ پروسیسنگ ٹولز جیسے استعمال کرسکتے ہیں
اور
اور
گرفت
، لیکن ہمارے پاس ہمارے پاس دوسرا ٹول ہے جو JSON ڈیٹا ڈھانچے کو سمجھا جاتا ہے ، جسے کہا جاتا ہے
jq
. ہماری پہلی کوشش کے ل let ، آؤٹ پٹ کو خوبصورت پرنٹ اور کلر کوڈ کے لئے استعمال کریں۔ ہم پہلے کی طرح ایک ہی کال استعمال کریں گے ، لیکن اس بار آؤٹ پٹ کو پورا کریں گے
jq
اور JSON ڈیٹا کو تجزیہ اور پرنٹ کرنے کی ہدایت کریں۔
curl -s -A “reddit کھردری مثال” https://www.reddit.com/r/MildlyInteresting.json | jq.
حکم کی پیروی کرنے والی مدت کو نوٹ کریں۔ یہ اظہار آسانی سے ان پٹ کی تجزیہ کرتا ہے اور جیسا ہے اسے پرنٹ کرتا ہے۔ آؤٹ پٹ اچھی طرح فارمیٹڈ اور کلر کوڈڈ لگ رہی ہے۔
آئیے ہم JSON ڈیٹا کی ساخت کا جائزہ لیں جو ہم ریڈ ڈیٹ سے واپس آتے ہیں۔ بنیادی نتیجہ ایک شے ہے جس میں دو خصوصیات ہیں: قسم اور ڈیٹا۔ مؤخر الذکر کے پاس ایک پراپرٹی رکھی گئی ہے
بچے
، جس میں اس سبریڈیٹ میں پوسٹس کی ایک صف شامل ہے۔
صف میں موجود ہر آئٹم ایک شے ہے جس میں دو فیلڈز بھی شامل ہیں جن کو قسم اور ڈیٹا کہتے ہیں۔ وہ پراپرٹیز جن پر ہم قبضہ کرنا چاہتے ہیں وہ ڈیٹا آبجیکٹ میں ہیں۔
jq
کسی ایسے تاثر کی توقع کرتا ہے جو ان پٹ ڈیٹا پر لاگو ہو اور مطلوبہ آؤٹ پٹ تیار کرے۔ اس میں مندرجات کو ان کے درجہ بندی اور کسی صف میں ممبرشپ کے لحاظ سے بیان کرنا ہوگا ، نیز ڈیٹا کو کس طرح تبدیل کرنا چاہئے۔ آئیے ایک بار پھر پوری کمانڈ کو صحیح اظہار کے ساتھ چلائیں۔
curl -s -A “reddit کھردری مثال” https://www.reddit.com/r/MildlyInteresting.json | jq ‘.ڈیٹا.چیلڈرین | . [] | .data.title، .data.url، .data.permalink ’
آؤٹ پٹ عنوان ، URL ، اور Permalink ہر ایک کو اپنی لائن پر دکھاتا ہے:
آئیے میں ڈوبکی ہیں
jq
ہم نے حکم دیا:
jq ‘.ڈیٹا.چیلڈرین | . [] | .data.title، .data.url، .data.permalink ’
اس کمانڈ میں تین تاثرات دو پائپ علامتوں سے جدا ہوئے ہیں۔ مزید تشخیص کے لئے ہر اظہار کے نتائج اگلے کو منتقل کردیئے جاتے ہیں۔ پہلا اظہار ریڈڈیٹ لسٹنگ کی صف کو چھوڑ کر ہر چیز کو فلٹر کرتا ہے۔ یہ آؤٹ پٹ دوسرے اظہار میں پائپ ہوتا ہے اور زبردستی ایک صف میں داخل ہوتا ہے۔ تیسرا اظہار صف میں ہر عنصر پر کام کرتا ہے اور تین خصوصیات نکالتا ہے۔ کے بارے میں مزید معلومات
jq
اور اس کے اظہار نحو کو پایا جاسکتا ہے
jq کی سرکاری دستی
.
اسکرپٹ میں سب کو ساتھ رکھنا
آئیے ، API کال اور JSON پوسٹ پروسیسنگ کو ایک ساتھ اسکرپٹ میں ڈالیں جو ہماری مطلوبہ اشاعتوں کے ساتھ ایک فائل تیار کرے گی۔ ہم صرف / r / MildlyInrestresting کو نہیں کسی بھی subreddit سے اشاعتیں لانے کے لئے تعاون شامل کریں گے۔
اپنا ایڈیٹر کھولیں اور اس ٹکڑوں کے مندرجات کو ایک فائل میں کاپی کریں جس کو سکریپ - ڈریڈ.ش کہتے ہیں
#! / بن / باز
اگر [ -z "$1" ]
پھر
گونج "براہ کرم ایک سبڈیڈیٹ متعین کریں"
باہر نکلیں 1
فائی
سبسکرڈ = $ 1
NOW = $ (تاریخ + "٪ m_٪ d_٪ y-٪ H_٪ M")
OUTPUT_FILE = "$ {SUBREDDIT}_ $ {NOW}.txt"
curl -s -A "bash-scrape-ਵਿਸ਼ੇ" https://www.reddit.com/r/${SUBREDDIT}.json | \
jq '.data.children | . [] | .data.title، .data.url، .data.permalink '| \
جبکہ TIS پڑھیں۔ کیا
URL پڑھیں
پڑھیں - PERMALINK
گونج -e "$ {TITLE} \ t $ {URL} \ t $ {PERMALINK}" | tr - ڈیلیٹ \ ">> $ {OUTPUT_FILE}
کیا
یہ اسکرپٹ پہلے جانچ کرے گا کہ آیا صارف نے سبڈڈیٹ نام فراہم کیا ہے۔ اگر نہیں تو ، یہ خامی پیغام اور غیر صفر ریٹرن کوڈ کے ساتھ موجود ہے۔
اگلا ، یہ سب سے پہلے نام کی حیثیت سے پہلی دلیل کو محفوظ کرے گا ، اور ایک تاریخی مہر لگا ہوا فائل نام تیار کرے گا جہاں پیداوار کو بچایا جائے گا۔
کارروائی اس وقت شروع ہوتی ہے جب
curl
ایک کسٹم ہیڈر اور کھرچنا کرنے کے لئے subreddit کے URL کے ساتھ کہا جاتا ہے. آؤٹ پٹ کو پائپ کیا جاتا ہے
jq
جہاں اس کی تجزیہ کی گئی ہے اور اسے تین فیلڈز تک محدود کردیا گیا ہے: عنوان ، URL اور Permalink۔ یہ لائنیں ایک وقت میں ایک دفعہ پڑھی جاتی ہیں ، اور ریڈ کمانڈ کے ذریعہ ایک متغیر میں محفوظ ہوجاتی ہیں ، کچھ وقت کے اندر اندر ، جو پڑھنے کے ل to مزید لائنز نہیں ملتی ہیں ، جاری رہے گی۔ ٹیب کیریکٹر کے ذریعہ دبائے جانے والے تینوں فیلڈز کو بازگیر کرتے وقت باطن کی آخری لائن ،
tr
کمانڈ کریں تاکہ ڈبل قیمت درج ہوسکے۔ اس کے بعد آؤٹ پٹ کسی فائل میں شامل ہوجاتا ہے۔
اس اسکرپٹ کو عملی شکل دینے سے پہلے ، ہمیں اس بات کو یقینی بنانا ہوگا کہ اسے عملدرآمد کی اجازت مل گئی ہے۔ کا استعمال کرتے ہیں
chmod
ان اجازتوں کو فائل پر لاگو کرنے کا حکم:
chmod u + x scrape-reddit.sh
اور ، آخر میں ، اسکرپٹ کو سبریڈیٹ نام کے ساتھ چلائیں:
./scrape-reddit.sh ہلکے سے دلچسپی لینا
ایک آؤٹ پٹ فائل اسی ڈائرکٹری میں تیار ہوتی ہے اور اس کے مندرجات کچھ اس طرح نظر آئیں گے:
ہر لائن میں وہ تین فیلڈز ہوتے ہیں جن کے بعد ہم ایک ٹیب کیریکٹر کا استعمال کرکے الگ ہوجاتے ہیں۔
آگے جا رہے ہیں
ریڈٹ دلچسپ دلچسپ مواد اور میڈیا کی ایک سنہری مائن ہے ، اور اس کے JSON API کا استعمال کرتے ہوئے اسے آسانی سے حاصل کیا جاسکتا ہے۔ اب جبکہ آپ کے پاس اس اعداد و شمار تک رسائی حاصل کرنے اور نتائج پر کارروائی کرنے کا ایک طریقہ ہے کہ آپ یہ کام کر سکتے ہیں جیسے:
- / r / WorldNews کی تازہ ترین سرخیاں پکڑیں اور انہیں استعمال کرکے اپنے ڈیسک ٹاپ پر بھیجیں اطلاع بھیجیں
- اپنے نظام کے پیغام کے دن میں / r / داد جوز کے بہترین لطیفے اکٹھا کریں
- آج کی بہترین تصویر / r / aww سے حاصل کریں اور اسے اپنا ڈیسک ٹاپ پس منظر بنائیں
یہ سب آپ کے سسٹم میں فراہم کردہ ڈیٹا اور ان ٹولز کا استعمال کرکے ممکن ہے۔ مبارک ہیکنگ!