منصوبے کے بارے میں

میچا ری اسٹاک الرٹ ایک چھوٹا آٹومیشن پروجیکٹ ہے جو Marukyu-Koyamaen کی بین الاقوامی دکان پر موجود ہر میچا پروڈکٹ پر نظر رکھتا ہے اور جب کوئی آئٹم سولڈ آؤٹ ہونے سے واپس ان اسٹاک میں آتا ہے تو ای میل بھیجتا ہے۔ چونکہ دکان بغیر کسی شیڈول کے اعلان کے بے ترتیب طریقے سے ری اسٹاک کرتی ہے، اس لیے یہ پروجیکٹ چوبیس گھنٹے کلاؤڈ میں چلتا ہے تاکہ آپ کا اپنا کمپیوٹر بند بھی ہو سکے۔ یہ اس طرح کام کرتا ہے: ایک بیرونی مفت پنگر، cron-job.org، ہر پانچ منٹ میں workflow_dispatch API کے ذریعے GitHub Actions workflow کو کال کرتا ہے۔ Workflow matcha_monitor.py چلاتا ہے، جو ہر پروڈکٹ پیج کو دیکھتا ہے اور دکان کے اپنے پیغام "currently out of stock and unavailable" کو تلاش کرتا ہے؛ پیغام نہ ہونے کا مطلب ہے کہ آئٹم خریدی جا سکتی ہے۔ اسکرپٹ ہر پروڈکٹ کی آخری حالت state.json میں محفوظ کرتا ہے، جسے ہر رن کے بعد ریپوزٹری میں واپس کمٹ کیا جاتا ہے، اور یہ صرف اس وقت ای میل بھیجتا ہے جب کوئی چیز نئے سرے سے ری اسٹاک ہو، اس طرح بار بار سپام سے بچا جاتا ہے۔ اگر ای میل بھیجنے میں ناکامی ہو تو اگلے رن میں الرٹ دوبارہ بھیجنے کی کوشش کی جاتی ہے۔ دکان کے ساتھ شائستگی برتنے کے لیے، ہر پانچ منٹ کا رن صرف ان آئٹمز کو دوبارہ چیک کرتا ہے جو اس وقت سولڈ آؤٹ ہیں، جبکہ نئے سیل آؤٹ پکڑنے کے لیے گھنٹے میں ایک بار مکمل جانچ ہوتی ہے۔ درخواستوں کے درمیان دو سیکنڈ کا وقفہ ہے اور وہ عام براؤزر شناخت استعمال کرتی ہیں۔ اسکرپٹ کیٹلاگ کو بالکل نئی میچا پروڈکٹس کے لیے بھی اسکین کرتا ہے، خود بخود ان پر نظر رکھنا شروع کر دیتا ہے، اور ان کے ظاہر ہونے پر ای میل کرتا ہے۔ Workflow کا اپنا */30 cron شیڈول صرف بیک اپ کے طور پر رکھا گیا ہے کیونکہ GitHub کا cron عملی طور پر بہت زیادہ تھروٹل کیا جاتا ہے۔ سیٹ اپ کے لیے Gmail ایپ پاس ورڈ، SMTP صارف، پاس ورڈ اور وصول کنندہ کے لیے ریپوزٹری سیکرٹس، اور ریپو تک محدود ایک فائن گرینڈ GitHub ٹوکن درکار ہوتا ہے جس میں Actions پڑھنے اور لکھنے کی اجازت ہو؛ اسے cron-job.org پر JSON باڈی کے ساتھ ایک POST جاب کے طور پر ترتیب دیا جاتا ہے۔ 204 واپس کرنے والا ٹیسٹ رن تصدیق کرتا ہے کہ یہ کام کر رہا ہے، اور test-email workflow ڈسپیچ ترسیل کی جانچ کرتا ہے۔ واچ لسٹ products.json میں رہتی ہے جس میں تقریباً 50 میچا پروڈکٹس ہیں؛ آئٹمز کو شامل، ہٹایا، یا "watch": false کے ساتھ موقوف کیا جا سکتا ہے۔ خودکار طور پر دریافت شدہ پروڈکٹس state.json میں محفوظ ہوتی ہیں اور انہیں اسی طرح موقوف کیا جا سکتا ہے۔ بنیادی فائلیں matcha_monitor.py (چیکر اور ای میلر، جسے --force کے ساتھ مقامی طور پر بھی چلایا جا سکتا ہے)، products.json، state.json، اور GitHub Actions workflow فائل ہیں۔ نوٹ: دکان جارحانہ اسکریپنگ کی حوصلہ شکنی کرتی ہے اور اس کا بوٹ تحفظ درخواستوں کو بلاک کر سکتا ہے۔ اسکرپٹ بلاک یا چیلنج پیجز کا پتہ لگاتا ہے اور انہیں کبھی بھی ان اسٹاک حالت نہیں سمجھتا؛ بلاک شدہ جانچوں کو محض اگلے رن میں دوبارہ آزمایا جاتا ہے۔ میچا فی آرڈر پانچ آئٹمز تک محدود ہے، اور دکان ایسے آرڈرز مسترد کر دیتی ہے جن کے بارے میں اسے خیال ہو کہ وہ دوبارہ فروخت کے لیے ہیں۔