🌍 Урок 11: API — країни та новини
💡 У цьому уроці ми підключимо:
🌍 API країн
📰 API новин
🌍 API країн (REST Countries)
Цей API повертає інформацію про країни:
✔ столицю
✔ населення
✔ прапор
✔ мови
🔗 URL API
https://restcountries.com/v3.1/name/ukraine
✔ /name/ukraine — шукаємо країну Ukraine
🤖 Код бота
from bendbandbot import SimpleBot
import requests
# 🔑 читаємо токен
with open("token.key", "r", encoding="utf-8") as f:
token = f.read().strip()
# 🤖 створюємо бота
bot = SimpleBot(token)
def country(update):
# 🌍 URL API
url = "https://restcountries.com/v3.1/name/ukraine"
# 📡 HTTP запит
response = requests.get(url)
# 📦 JSON → Python
data = response.json()
# 📋 перша країна у списку
c = data[0]
# 📤 відповідь
bot.send(update,
"🌍 Країна: " + c["name"]["common"] + "\n"
"🏙 Столиця: " + c["capital"][0] + "\n"
"👥 Населення: " + str(c["population"])
)
# 🎯 команда
bot.on_command("country", country)
# 🚀 запуск
bot.start()
✔ data[0] — перший елемент списку
✔ c["name"]["common"] — вкладений dict
✔ capital[0] — список
📰 API новин (NewsAPI)
⚠ Для цього API потрібен API key.
API key — це спеціальний ключ доступу.
Сервер перевіряє:
✔ хто робить запит
✔ скільки запитів використано
🔑 Реєстрація API key
1️⃣ Перейди на сайт:
https://newsapi.org/
2️⃣ Натисни Register
3️⃣ Створи акаунт
4️⃣ Скопіюй свій API key
5️⃣ Встав його у Python-код
🔗 URL API
https://newsapi.org/v2/top-headlines?country=us&apiKey=YOUR_KEY
✔ country=us — новини США
✔ apiKey= — твій ключ доступу
🤖 Код бота
from bendbandbot import SimpleBot
import requests
# 🔑 читаємо токен Telegram
with open("token.key", "r", encoding="utf-8") as f:
token = f.read().strip()
# 🤖 створюємо бота
bot = SimpleBot(token)
def news(update):
# 🔑 API key
api_key = "YOUR_KEY"
# 📰 URL API
url = f"https://newsapi.org/v2/top-headlines?country=us&apiKey={api_key}"
# 📡 HTTP запит
response = requests.get(url)
# 📦 JSON
data = response.json()
# 📋 перша новина
article = data["articles"][0]
# 📰 заголовок
title = article["title"]
# 📤 відповідь
bot.send(update,
"📰 Новина:\n\n" + title
)
# 🎯 команда
bot.on_command("news", news)
# 🚀 запуск
bot.start()
📦 JSON відповідь NewsAPI
{
"articles": [
{
"title": "Some news title"
}
]
}
✔ articles — список новин
✔ [0] — перша новина
✔ title — заголовок
🧠 Що ти навчився
✔ працювати з API
✔ використовувати API keys
✔ читати вкладені JSON
✔ працювати зі списками
✔ отримувати реальні дані з інтернету
🧪 Завдання
✍️ Спробуй іншу країну
✍️ Виведи 2 новини
✍️ Подивись print(data)
✍️ Зміни country=us на іншу країну