পরিচয়..
একটি API লেখার সবচেয়ে বড় সুবিধা হল বর্তমান/লাইভ ডেটা বের করা, এমনকি যখন ডেটা দ্রুত পরিবর্তন হচ্ছে, একটি API সর্বদা আপ টু ডেট ডেটা পাবে। API প্রোগ্রামগুলি নির্দিষ্ট তথ্যের অনুরোধ করার জন্য খুব নির্দিষ্ট URL ব্যবহার করবে যেমন স্পটিফাই বা ইউটিউব মিউজিক-এ 2020 সালের সেরা 100টি সর্বাধিক প্লে করা গান। অনুরোধ করা ডেটা JSON বা CSV-এর মতো সহজে প্রক্রিয়াকৃত ফরম্যাটে ফেরত দেওয়া হবে।
পাইথন ব্যবহারকারীকে প্রায় যেকোনো URL এ API কল লিখতে দেয় যা আপনি ভাবতে পারেন। এই উদাহরণে আমি দেখাব কিভাবে GitHub থেকে API ফলাফল বের করতে হয় এবং সেগুলোকে কল্পনা করতে হয়।
দ্রষ্টব্য - পরিকল্পনাটি ছিল স্পটিফাই থেকে এপিআই ফলাফল দেখানোর, কিন্তু স্পটিফাই-এর আরও প্রাক-প্রয়োজনীয় প্রয়োজন যার জন্য 1টির বেশি পোস্টের প্রয়োজন হতে পারে, তাই আমরা এই পোস্টের জন্য GitHUb এর সাথে থাকব।
Github, প্রায়শই ডেভেলপার হিসাবে পরিচিত Facebook আমাদের বিভিন্ন ধরণের ডেটা বের করতে API কল লিখতে দেয়। ধরে নিন আপনি আরও তারা দিয়ে জাভাস্ক্রিপ্ট গিথুব সংগ্রহস্থলগুলি অনুসন্ধান করতে চেয়েছিলেন। গিটহাবের একটি API কী প্রয়োজন হয় না যখন অন্যরা চাইলে।
কিভাবে করতে হবে..
1. পাইথন কমান্ড প্রম্পট খুলে এবং পিপ ইনস্টল করার অনুরোধ ফায়ার করে অনুরোধ প্যাকেজ ইনস্টল করুন।
import requests # set the siteurl site_url = 'https://api.github.com/search/repositories?q=language:javascript&sort=stars' # set the headers headers = {'Accept': 'application/vnd.github.v3+json'} # call the url and save the response response = requests.get(site_url, headers=headers) # Get the response print(f"Output \n *** Response from {site_url} is {response.status_code} ")
আউটপুট
*** Response from https://api.github.com/search/repositories?q=language:javascript&sort=stars is 200
2. API JSON ফরম্যাটে তথ্য প্রদান করে, তাই আমাদের তথ্যকে পাইথন অভিধানে রূপান্তর করতে json() পদ্ধতি ব্যবহার করতে হবে।
উদাহরণ
response_json = response.json() print(f"Output \n *** keys in the Json file \n {response_json.keys()} \n") print(f" *** Total javascript repositories in GitHub \n {response_json['total_count']}" )
আউটপুট
*** keys in the Json file dict_keys(['total_count', 'incomplete_results', 'items']) *** Total javascript repositories in GitHub 11199577
-
সুতরাং, আমাদের কাছে 3টি কী আছে যার মধ্যে আমরা অসম্পূর্ণ_ফলাফল উপেক্ষা করতে পারি। এখন আমাদের প্রথম সংগ্রহস্থল পরীক্ষা করা যাক.
উদাহরণ
repositories = response_json['items'] first_repo = repositories[0] print(f"Output \n *** Repository information keys total - {len(first_repo)} - values are -\n") for keys in sorted(first_repo.keys()): print(keys) print(f" *** Repository name - {first_repo['name']}, Owner - {first_repo['owner']['login']}, total watchers - {first_repo['watchers_count']} ")
আউটপুট
*** Repository information keys total - 74 - values are - archive_url archived assignees_url blobs_url branches_url clone_url collaborators_url comments_url commits_url compare_url contents_url contributors_url created_at default_branch deployments_url description disabled downloads_url events_url fork forks forks_count forks_url full_name git_commits_url git_refs_url git_tags_url git_url has_downloads has_issues has_pages has_projects has_wiki homepage hooks_url html_url id issue_comment_url issue_events_url issues_url keys_url labels_url language languages_url license merges_url milestones_url mirror_url name node_id notifications_url open_issues open_issues_count owner private pulls_url pushed_at releases_url score size ssh_url stargazers_count stargazers_url statuses_url subscribers_url subscription_url svn_url tags_url teams_url trees_url updated_at url watchers watchers_count *** Repository name - freeCodeCamp, Owner - freeCodeCamp, total watchers - 316079
4. ভিজ্যুয়ালাইজেশনের জন্য সময়, হজম করার জন্য প্রচুর তথ্য রয়েছে, তাই সেরা উপায় হল ফলাফলগুলি কল্পনা করা। মনে রাখবেন - "একটি ছবি হাজার শব্দের মূল্য"।
আমি ইতিমধ্যেই অন্য পোস্টে ম্যাটপ্লটলিব কভার করেছি, তাই পরিবর্তনের জন্য আমরা প্লটলি ব্যবহার করে চার্ট করব।
-
মডিউল ইনস্টল করুন - প্লটভাবে। আমরা প্লটভাবে আমদানি শুরু করব।
উদাহরণ
from plotly.graph_objs import Bar from plotly import offline
6. আমরা সংগ্রহস্থল বনাম তারার সংখ্যা সহ একটি বার চার্ট করব। যত বেশি তারা তত বেশি জনপ্রিয় ভান্ডার। উপরে কে আছে দেখতে তাই ভাল উপায়. সুতরাং, আমাদের দুটি ভেরিয়েবলের সংগ্রহস্থলের নাম এবং তারার সংখ্যা দরকার।
ইন[6]:
উদাহরণ
repo_names, repo_stars = [], [] for repo_info in repositories: repo_names.append(repo_info['name']) repo_stars.append(repo_info['stargazers_count'])
7. ডেটা তালিকা প্রস্তুত করে ভিজ্যুয়ালাইজেশন শুরু করুন। এতে একটি অভিধান রয়েছে, যা প্লটের ধরন সংজ্ঞায়িত করে এবং x- এবং y-মানের জন্য ডেটা সরবরাহ করে। আপনি হয়তো ইতিমধ্যেই অনুমান করেছেন, হ্যাঁ আমরা প্রকল্পের নাম প্লট করার জন্য x-অক্ষ এবং তারা প্লট করার জন্য y-অক্ষ ব্যবহার করব।
উদাহরণ
data_plots = [{'type' : 'bar', 'x':repo_names , 'y': repo_stars}]
8. আমরা x-অক্ষ, y-অক্ষ এবং সামগ্রিকভাবে চার্টের জন্য শিরোনাম যোগ করব।
উদাহরণ
layout = {'title': 'GItHubs Most Popular Javascript Projects', 'xaxis': {'title': 'Repository'}, 'yaxis': {'title': 'Stars'}}
9. প্লট করার সময়।
import requests from plotly.graph_objs import Bar from plotly import offline site_url = 'https://api.github.com/search/repositories?q=language:javascript&sort=stars' headers = {'Accept': 'application/vnd.github.v3+json'} response = requests.get(site_url, headers=headers) response_json = response.json() repo_names, repo_stars = [], [] for repo_info in repositories: repo_names.append(repo_info['name']) repo_stars.append(repo_info['stargazers_count']) data_plots = [{'type' : 'bar', 'x':repo_names , 'y': repo_stars}] layout = {'title': 'GItHubs Most Popular Javascript Projects', 'xaxis': {'title': 'Repository'}, 'yaxis': {'title': 'Stars'}} fig = {'data': data_plots, 'layout': layout} offline.plot(fig, filename='Most_Popular_JavaScript_Repos.html')
উদাহরণ
'Most_Popular_JavaScript_Repos.html'
আউটপুট
Most_Popular_JavaScript_Repos.html নিচের আউটপুট সহ কোডের মতো একই ডিরেক্টরিতে তৈরি করা হবে।