Yehia Khoja | يحيى خوجه
Yehia Khoja | يحيى خوجه

@yakhoja

12 تغريدة 8 قراءة Jan 09, 2021
تقريباً قبل شهر ونص خلال استضافة المملكة لقمة العشرين، سويت برنامج ويب بسيط على بايثون يضيف شعار قمة العشرين لصورة البروفايل الحالية بتويتر
في هذا الثريد اشرح بشكل مبسط طريقة البرمجة واطلاق الخدمة والتي بحمدالله حصدت فوق مئة الف انطباع خلال فترة القمة!
لكم التفاصيل هنا 👇
تم تقسيم المشروع لأجزاء كالآتي:
1) الحصول على اسم المستخدم على تويتر
2) الحصول على صورة المستخدم
3) اضافة شعار قمة العشرين للصورة
4) اعادة الصورة مع الشعار للمستخدم
5) استضافة البرنامج على موقع
يمكن الحصول على كل الملفات البرمجية هنا:
github.com
بدأت كل شي على @GoogleColab عشان اقدر اجرب واختبر بسهولة وكانت اهم مكتبات بايثون:
- للتعامل مع API تويتر: tweepy
- للتعامل مع الصور: PIL
- لبناء تطبيق الويب: flask
وقد تحدثت عن tweepy وكيفية التعامل مع تويتر في ثريد سابق هنا ولذلك رح نركز على الصور وفلاسك
الآن حصلنا على صورة المستخدم، ونحتاج نضيف عليها شعار القمة.
حصلت على الشعار من البحث على قوقل وكانت الخطوة الأولى من التأكد ان صورة المستخدم والشعار كانت بنفس الحجم والابعاد
وبالتالي سويت دالة بسيطة تقارن صورة المستخدم والشعار وتغير أبعاد الصور بناء على ذلك
بعدها لقيت دالة ضمن مكتبة PIL اسمها paste تساعد على اضافة صورة الى صورة اخرى وبالتالي استخدمتها لاضافة صورة الشعار على صورة المستخدم
أهم شي في paste هو تحديد موقع اضافة الصورة وايضا تحديد اضافتها على شكل قناع (بمعنى ان الصورة المضافة فقط تغطي جزء محدد من الصورة الاصلية)
والآن نقدر نسوي دالة وحدة تعتمد على كل الدوال السابقة تسوي جميع الخطوات من مكان واحد
الخطوة التالية هي تحويل البرنامج الى تطبيق ويب باستخدام فلاسك وهذه كانت اول تجربة لي في تصميم تطبيق ويب واستخدام فلاسك
لذلك قررت ابسط صفحة الويب بحيث تسوي حاجتين فقط
1) تاخذ اسم المستخدم على تويتر
2) ترجع للزائر صورته الحالية على تويتر مع شعار القمة
لقيت فلاسك نوعاً ما جيد لشخص مبتدئ مثلي لانه حصلت معلومات وموارد كثيرة افادتني
وبالتالي سويت تطبيق من صفحة وحدة فقط يحمل ملف form.html معظمه نص وفيه جزئية لادخال اسم المستخدم
وبعدها ينقل الزائر بشكل تلقائي لصفحة جديدة فيها صورته مع الشعار
عشان ارجع الصورة بالشعار، استخدمت دالة لقيتها من خلال بحثي على الانترنت لحل وكانت هذه يمكن اكثر جزئية جديدة علي فاتبعت مبدأ التجربة حتى لقيت شي يسوي المطلوب
بعد الانتهاء من البرمجة، جا الوقت انه احمل التطبيق على منصة تقدر تستضيف التطبيق وتوفره للمستخدمين للتجربة
بعد البحث قررت اجرب خدمات @pythonanywhere لانها كانت بسيطة والمبلغ معقول (5 دولار شهرياً)
بعد الاشتراك، لقيت عندهم موارد وادوات تساعدني في رفع تطبيق قد تمت برمجته مسبقاً
الحمدلله بعد توفيق الله ثم الدعم من العديد من الاشخاص الرائعين الذين أكن لهم كل الشكر والامتنان، حصل التطبيق على ما يزيد عن 4800 زيارة خلال فترة القمة (وطبعاً بعدها اختفت الحاجة للتطبيق) وما يقارب مئة الف انطباع للتغريدة التي اعلنت فيها عن التطبيق!
من اهم الدروس الآتي
1) اهمية تقسيم المشروع البرمجي إلى اجزاء تتكامل مع بعض في النهاية
2) تبسيط التطبيق الأولي وعدم بذل الوقت والجهد على خصائص قد تصعب التطوير دون فائدة اساسية وكبيرة للمستخدم
اتمنى انه يكون افادكم الثريد واشكر لكم متابعتكم ومروركم الكريم 🌹

جاري تحميل الاقتراحات...