Friday, September 9, 2022

[Python Project] পাইথন দিয়ে বানিয়ে ফেলুন মোবাইল নাম্বার এর বেসিক তথ্য বের করার প্রোগ্রাম। [Phonenumbers Library]

trickbd.com

আসসালামু আলাইকুম! 

আজকের এই পোস্ট-এ আপনাকে স্বাগতম। আশা করছি পুরো পোস্ট-টি মনোযোগ এবং ধৈর্য সহকারে পড়বেন।

তো কেমন আছেন সবাই? 

আশা করছি আল্লাহর অশেষ রহমতে সবাই অনেক ভালোই আছেন।

Phonenumbers – কি সেটা তো আমরা সবাই ই জানি। কিন্তু এটা কি জানি যে এই Phonenumbers নামে পাইথনে একটি লাইব্রেরী আছে? জানলে ভালো না জানলেও ভালো কারণ আজকে আমি পাইথন এর এই লাইব্রেরী সম্পর্কে অল্প কিছু তথ্য আপনাদের সামনে তুলে ধরবো। আশা করি এই আর্টিকেল’টি পড়ার পর কিছুটা হলেও এই লাইব্রেরী বা এর কাজ সম্পর্কে জানতে পারবেন। তাই মনোযোগ দিয়ে শেষ পড়তে থাকুন। 

Phonenumbers – কি?

পাইথন প্রোগ্রামিং এ অনেক বিল্ট-ইন লাইব্রেরী আছে যেগুলো ব্যবহার করে দারুণ দারুণ সব কাজ কয়েক লাইন কোড লিখেই করে ফেলা যায়। যেমনঃ Numpy, TensorFlow, Pandaspyautogui ইত্যাদি আরো অনেক জনপ্রিয় পাইথন লাইব্রেরী আছে। 

Phonenumbers – হচ্ছে একটি ওপেন সোর্স পাইথন লাইব্রেরী। এই লাইব্রেরী ব্যবহার করে মোবাইল নাম্বার এর বেসিক কিছু ইনফরমেশন বের করা যায়। তাছাড়া এটি ব্যবহার করে মোবাইল নাম্বার পার্সিং, ফরম্যাটিং, স্টোরিং এবং ভ্যালিডেট করা যায়।

এটি গুগলের libphonenumber library যেটাকে পাইথন এর জন্য পোর্ট করা হয়েছে এবং নাম দেওয়া হয়েছে ‘Phonenumbers‘. এটি পাইথন 2.5 – 2.7 এবং 3.x এর উপরে সব ভার্সনেই আরামছে সাপোর্ট করে।

Phonenumbers – লাইব্রেরী দিয়ে কিভাবে মোবাইল নাম্বার এর ইনফরমেশন বের করবেন?

প্রথমেই পাইথন কোড লেখার জন্য আমাদের একটি কোড এডিটর লাগবে। প্লে-স্টোর থেকে Pydroid-3 অ্যাপটি ইনস্টল করে নিন।

Pydroid 3 – Playstore Link

যেহেতু আমরা আমাদের প্রজেক্ট এ Phonenumbers লাইব্রেরী ব্যবহার করবো তাই আমাদের Pydroid Repository Plugin – অ্যাপ’টি ইনস্টল করতে হবে। এই অ্যাপ ছাড়া আমরা Pydroid 3 তে লাইব্রেরী ইন্সটল করতে পারবো না। তাই এটা মাস্ট ইন্সটল করতেই হবে।

Pydroid Repository Plugin – Playstore Link

ইনস্টল হয়ে গেলে Pydroid 3 – অ্যাপ’টি ওপেন করুন। উপরে ফাইল আইকনে ক্লিক করুন। তারপর Save – এ ক্লিক করুন। তারপর Internal Storage – সিলেক্ট করুন। তারপর যেকোনো একটি ফোল্ডার এ ক্লিক করুন এবং উপরে ডানপাশে Select Folder – এ ক্লিক করুন। তারপর নিজের ইচ্ছে মতো একটি নাম দিন। খেয়াল রাখবেন শেষে যেনো .py এক্সটেনশন’টি থাকে। তারপর Save – এ ক্লিক করে ফাইলটি সেভ করে নিন।

নিচের স্ক্রিনশট লক্ষ্য করুনঃ-

kih-lagbe.blogspot.com


এবার আমাদের Phonenumbers – লাইব্রেরী’টি ইন্সটল করতে হবে। এর জন্য বামপাশের হ্যামবার্গার আইকনে ক্লিক করুন। তারপর Pip – এ ক্লিক করুন। 

নিচের স্ক্রিনশট’টি লক্ষ্য করুনঃ-

ফাঁকা ইনপুট বক্স এ টাইপ করুন – phonenumbers সবগুলো ছোট হাতের অক্ষর হবে। তারপর ইন্সটল এ ক্লিক করে কিছুক্ষণ অপেক্ষা করুন। ইন্সটল এ ক্লিক করার আগে মোবাইল ডাটা/ওয়াইফাই অন করে নিতে হবে। 

নিচের স্ক্রিনশট’টি লক্ষ্য করুনঃ-

kih-lagbe.blogspot.com



ইন্সটল সম্পন্ন হলে নিচের মতো একটি মেসেজ দেখতে পাবেন।

নিচের স্ক্রিনশট লক্ষ্য করুনঃ-

kih-lagbe.blogspot.com

লাইব্রেরী ইন্সটল করা শেষ এবারে কোড লেখা শুরু করবো। প্রথমেই যে লাইব্রেরী’টি মাত্র ইন্সটল করলাম সেটা আমাদের প্রোজেক্ট এ import – করতে হবে।

নিচের স্ক্রিনশট’টি লক্ষ্য করুনঃ-

kih-lagbe.blogspot.com

এখন phonenumbers – লাইব্রেরী থেকে তিনটি মডিউল import – করতে হবে। 

যেমনঃ-

1. geocoderএর কাজ নাম্বার’টি কোন দেশের সেটা বের করা। 

2. carrierএর কাজ নাম্বার’টির ক্যারিয়ার বা সিম কার্ড এর নাম কি সেটা বের করা।  

3. timezoneমডিউলটি’র কাজ হচ্ছে নাম্বার’টি যে দেশের সেখানকার টাইমজোন বের করা। 

নিচের স্ক্রিনশট’টি লক্ষ্য করুনঃ-

kih-lagbe.blogspot.com


এগুলোর সাথে time লাইব্রেরীও import করে নেবো। 

নিচের স্ক্রিনশট’টি লক্ষ্য করুনঃ-

trickbd.com

এখন আমাদের ব্যবহারকারী থেকে নাম্বার ইনপুট নিতে হবে যেটার ইনফরমেশন তিনি বের করতে চাচ্ছেন। আমরা জানি ব্যবহারকারী থেকে তথ্য নিতে পাইথনে input – ব্যবহার করতে হয়। তো আমরা ইনপুট ব্যবহার করে তথ্য নেবো এবং সেটাকে number – নামের ভ্যারিয়েবলে স্টোর বা জমা করবো। 

নিচের স্ক্রিনশট লক্ষ্য করুনঃ-

trickbd.com

এখন কাজ হচ্ছে যে নাম্বার’টি ব্যবহারকারী ইনপুট করবে সেটা parse করা। সহজ ভাষায় বলতে গেলে নাম্বারটি ভ্যালিড কিনা সেটা আগে চেক করা। 

নিচের স্ক্রিনশট লক্ষ্য করুনঃ-

trickbd.com

উপরে স্ক্রিনশটে দেখতে পাচ্ছেন, প্রথমে parseNumber নামে একটি ভ্যারিয়েবল তৈরী করেছি। তারপর  phonenumbers লাইব্রেরী’র parse  ব্যবহার করেছি নাম্বার parse করার জন্য। ব্যবহারকারী থেকে যে নাম্বার ইনপুট নিছিলাম সেটা number নামে’র ভ্যারিয়েবলে জমা ছিলো। তাই এখানে number ভ্যারিয়েবল’টি ব্যবহার করেছি।


এখন আমাদের কাজ হচ্ছে ব্যবহারকারী’কে একটা মেসেজ ডিসপ্লে করা। আমরা ব্যবহারকারী’কে কিছুক্ষণ অপেক্ষা করতে বলবো। এটা অবশ্য অপশনাল। না করলেও সমস্যা নেই। তবে প্রোগ্রাম’টিকে একটু রিয়েলিস্টিক ভাইব দিতে আমরা একটি মেসেজ এবং দুই সেকেন্ড এর একটি টাইম স্লীপ নেবো।

নিচের স্ক্রিনশট লক্ষ্য করুনঃ-

trickbd.com

যখন ইউজার তার নাম্বার ইনপুট করে এন্টার করবে তখন প্রথমে উপরের মেসেজটি দেখতে পারবে। তারপর দুই সেকেন্ড স্লীপ মানে হচ্ছে দুই সেকেন্ড প্রোগ্রাম’টি নিরব থাকবে এবং তারপর আবার কোড অনুযায়ী আউটপুট দিতে থাকবে। 

মনে আছে উপরে time ইমপোর্ট করেছিলাম? হ্যা এই স্লীপ ব্যবহার করার জন্যই মূলত উপরে time ইমপোর্ট করেছিলাম।


এবার আমাদের প্রোগ্রাম এর প্রধান কোডগুলো লিখতে হবে। এগুলোই সিম কার্ড এর ইনফরমেশন ব্যবহারকারী’র কাছে প্রদর্শন করবে।

নিচের স্ক্রিনশট লক্ষ্য করুনঃ-

trickbd.com

কি কনফিউজড? আচ্ছা আমি এক্সপ্লেইন করতেছি। প্রথমে print ব্যবহার করেছি কারণ আমরা ব্যবহারকারী’কে তথ্য দেখাতে চাই। print এর ভেতরে যা থাকবে সেগুলো ব্যবহারকারীর সামনে প্রদর্শিত হবে।

আমরা উপরে geocoder ইমপোর্ট করেছিলাম। তাই এখানে geocodergeocoder.description_for_number ব্যবহার করেছি নাম্বারটি কোন দেশের সেটা বের করার জন্য। উপরে আমরা নাম্বার parse করেছিলাম যেটা parseNumber নামের ভ্যারিয়েবলে জমা ছিলো। তাই এখানে সেই parseNumber ভ্যারিয়েবলটি ব্যবহার করেছি।

 প্রথমে নাম্বার parse  হয়েছে তারপর geocoder এর মাধ্যমে এটির লোকেশন বের করেছে এবং এই সব ইনফরমেশন আমরা print এর মাধ্যমে ব্যবহারকারী’র কাছে প্রদর্শন করেছি।


এখন বাকি আরো দুইটা ইনফরমেশন বের করার। অর্থাৎ ক্যারিয়ার বা সিম কোম্পানির নাম এবং টাইমজোন। এই দুইটা ইনফরমেশন বের করতেও উপরের মতো সেম প্রসেস ফলো করতে হবে।  শুধুমাত্র অল্প একটু পার্থক্য তাছাড়া সবকিছু ঠিক উপরে দেখানো প্রথম প্রসেস এর মতোই।


এবার চলুন ক্যারিয়ার নেম বের করা যাক।

নিচের স্ক্রিনশট লক্ষ্য করুনঃ-

trickbd.com

উপরের স্ক্রিনশট’টি লক্ষ্য করলে দেখবেন যে, প্রসেস একদম সেম। এখানে  carrier.name_for_number ব্যবহার করা হয়েছে। এটা নাম্বার এর ক্যারিয়ার বা কোম্পানি নাম বের করতে ব্যবহার করা হয়।

এখন সর্বশেষ আমরা নাম্বারটির টাইমজোন বের করবো। এটিও উপরের মতোই একই পদ্ধতি ব্যবহার করে করতে হবে। শুধু timezone.time_zones_for_number এটি ব্যবহার করতে হবে। 

নিচের স্ক্রিনশট লক্ষ্য করুনঃ-

trickbd.com

এবারে কোডগুলো সেভ করুন। সেভ করে রান করলে নিচের মতো কোডটি রান হয়ে যাবে। +88 দিয়ে আপনার নাম্বারটি লিখে এন্টার করলে আপনি আপনার নাম্বার এর তথ্য যেগুলো আমরা কোড করেছি সেগুলো দেখতে পারবেন। 

নিচের স্ক্রিনশট লক্ষ্য করুনঃ-

trickbd.com

বিঃদ্রঃ ইন্টারন্যাশনাল অনেক নাম্বার এর ক্ষেত্রে ই হয়তো ক্যারিয়ার নেম মিসিং পাবেন। কোড এর মধ্যে যে /n/t ব্যবহার করা হয়েছে এগুলো হচ্ছে পাইথনের Escape ক্যারেক্টার।

/n = নতুন লাইন

/t = ট্যাব স্পেস



আপনাদের সুবিধার্থে আমি এই ছোট্ট প্রজেক্টটির সোর্স কোড দিয়ে দিচ্ছি। নিচে দেওয়া লিংকে প্রবেশ করলে সোর্স কোড পেয়ে যাবেন।

Source Code – Python Project

মানুষ মাত্রই ভুল হয়। আমি সর্বোচ্চ চেষ্টা করেছি আপনাদেরকে সহজে বোঝানোর। তারপরও যদি ভুল হয়ে থাকে আশা করছি ক্ষমাসুন্দর দৃষ্টিতে দেখবেন।

আজকে এ পর্যন্তই।

বুঝতে বা আমার লেখায় কোন ভুল-ত্রুটি থাকলে অবশ্যই কমেন্ট বক্সে আপনাদের মতামত জানাবেন। 

আপনাকে অসংখ্য ধন্যবাদ এতক্ষণ লেখাটি পড়ার জন্য। আপনার সময় অনেক অনেক ভালো কাটুক।













The post [Python Project] পাইথন দিয়ে বানিয়ে ফেলুন মোবাইল নাম্বার এর বেসিক তথ্য বের করার প্রোগ্রাম। [Phonenumbers Library] appeared first on Trickbd.com.


Previous Post
Next Post
Related Posts

0 comments: