Cách xây dựng một ứng dụng tin tức bằng Python
Trong thế giới có nhịp độ nhanh này, việc cập nhật những tin tức mới nhất là rất quan trọng. Xây dựng ứng dụng Tin tức của riêng bạn để cung cấp cho bạn tin tức trên các danh mục khác nhau như giải trí, thể thao và công nghệ có thể truy cập trên bất kỳ nền tảng nào ngay trong tầm tay bạn.
Bạn sẽ phát triển ứng dụng này bằng cách sử dụng Tkinter, thư viện GUI tiêu chuẩn cho Python và cung cấp năng lượng cho nó bằng cách sử dụng API Tin tức nhận các bài viết từ hơn 80.000 nguồn.
Mục Lục
Cài đặt tkinter và yêu cầu Mô-đun
Tkinter là một mô-đun đa nền tảng, đơn giản và thân thiện với người dùng mà bạn có thể sử dụng để tạo giao diện người dùng đồ họa một cách nhanh chóng. Một số ứng dụng bạn có thể tạo bằng Tkinter bao gồm trình phát nhạc, lịch, công cụ chuyển đổi trọng lượng, trò chơi đố chữ, v.v.
Để cài đặt tkinter trong hệ thống của bạn, hãy chạy lệnh sau trong thiết bị đầu cuối:
pip install tkinter
Các yêu cầu module giúp thực hiện các yêu cầu HTTP dễ dàng hơn. Với điều này, bạn có thể phát triển các ứng dụng thú vị như trình kiểm tra trạng thái trang web, trình quét web, bot theo dõi thị trường chứng khoán và trình kiểm tra hiệu suất trang web. Để cài đặt mô-đun yêu cầu, hãy mở terminal và chạy lệnh sau:
pip install requests
Bạn có thể tìm thấy toàn bộ mã nguồn của ứng dụng Tin tức bằng Python trong kho lưu trữ GitHub này.
Tạo khóa API tin tức
Bắt đầu bằng cách nhập các thư viện cần thiết. Đăng ký tại News API và tạo khóa API của bạn. Với tài khoản nhà phát triển miễn phí, bạn có thể gửi tối đa 100 yêu cầu hàng ngày, thật tuyệt để thử nghiệm và bắt đầu. Lưu trữ API trong một biến mà bạn sẽ sử dụng sau này với URL cơ sở để tìm nạp các tiêu đề hàng đầu theo quốc gia của bạn.
from tkinter import *
from tkinter import messagebox
import requestsapiKey = 'YOUR_API_KEY'
Xác định cấu trúc của ứng dụng
Định nghĩa một lớp, Ứng dụng tin tức. tham khảo các Mã API Và kiểu biến trên toàn cầu. Định nghĩa một đối tượng của lớp và khởi tạo cửa sổ gốc. Đặt kích thước và tiêu đề của ứng dụng của bạn. Xác định hai danh sách, bạn sẽ sử dụng danh sách đầu tiên để xác định các nút và danh sách thứ hai để xác định danh mục tin tức bạn muốn hiển thị trong ứng dụng của mình.
class NewsApp:
global apiKey, type
def __init__(self, root):
self.root = root
self.root.geometry('1000x650')
self.root.title("News Application")
self.newsCategoryButton = []
self.newsCategory = ["general", "entertainment", "sports", "technology"]
Xác định một nhãn hoạt động như một tiêu đề cho ứng dụng của bạn. Chuyển phần tử gốc mà bạn muốn đặt nó vào, văn bản mà nó sẽ hiển thị, kiểu phông chữ, phần đệm và màu nền mà nó phải có. Sử dụng đóng gói() tùy chọn điền để làm cho nhãn chiếm toàn bộ không gian theo hướng X.
xác định một NhãnKhung và đặt phần tử gốc của nó cùng với màu nền mà nó phải có. Sử dụng địa điểm() chức năng tổ chức nó tại các tọa độ xác định. Ngoài ra, vượt qua chiều rộng và chiều cao của khung.
title = Label(self.root, text="News Application", font=("times new roman", 28, "bold"), pady=2, bg='#ff007f').pack(fill=X)
F1 = LabelFrame(self.root, bg='#fc6c85')
F1.place(x=20, y=80, width=215, height=210)
Xác định một vòng lặp for chạy qua chiều dài của tin tứcMèo danh sách. Xác định một nút trong khung được xác định trước đó. Chuyển văn bản mà nó sẽ hiển thị và chuyển đổi nó thành chữ hoa. Chuyển chiều rộng, độ sâu đường viền, kiểu phông chữ và màu nền của các nút. Sử dụng lưới quản lý để sắp xếp các nút theo định dạng cột và thêm phần đệm theo hướng X và Y.
Sử dụng phương pháp liên kết để đính kèm nút và khu vực tin tức.
for i in range(len(self.newsCategory)):
b = Button(F1, text=self.newsCategory[i].upper(), width=15, bd=3, font="arial 14 bold", bg='#c154c1')
b.grid(row=i, column=0, padx=10, pady=5)
b.bind('<Button-1>', self.Newsarea)
self.newsCategoryButton.append(b)
Xác định một khung và chuyển cho nó phần tử cha mà bạn muốn đặt nó vào và độ sâu đường viền mà nó phải có. Sắp xếp nó theo tọa độ đã chỉ định và chuyển chiều cao và chiều rộng tương đối. Xác định thanh cuộn dọc bằng cách sử dụng định hướng tham số và đặt nó trong khung này.
Xác định một widget văn bản. Chuyển phần tử gốc dưới dạng khung này cùng với kiểu phông chữ và màu nền mà nó phải có. Khi thiết lập giá trị của lệnh yscroll BẰNG scroll_y.set nó nhận vị trí hiện tại của thanh cuộn khi tương tác với người dùng.
F2 = Frame(self.root, bd=3)
F2.place(x=260, y=80, relwidth=0.7, relheight=0.8)
scroll_y = Scrollbar(F2, orient=VERTICAL)
self.txtarea = Text(F2, yscrollcommand=scroll_y.set, font=("times new roman", 15, "bold"), bg='#fc6c85')
Sử dụng đóng gói() tùy chọn điền để đặt thanh cuộn ở phía bên phải của khung và chiếm toàn bộ không gian theo hướng Y. Khi đặt tham số lệnh là txtarea.yview, chuyển động của thanh cuộn được liên kết với chức năng lên và xuống. Vì vậy, khi người dùng tương tác với thanh cuộn, chế độ xem của vùng văn bản sẽ thay đổi tương ứng.
Sử dụng chèn() phương pháp yêu cầu người dùng chọn một danh mục và đặt nó ở cuối bất kỳ văn bản hiện có nào. Sử dụng đóng gói() phương pháp yêu cầu tiện ích văn bản lấy khoảng trống theo hướng X và Y và chỉ định thêm khoảng trống nếu cần bằng cách sử dụng mở rộng tham số.
scroll_y.pack(side=RIGHT, fill=Y)
scroll_y.config(command=self.txtarea.yview)
self.txtarea.insert(END,"Select a category:")
self.txtarea.pack(fill=BOTH, expand=1)
Xác định một chức năng, khu vực tin tức() chấp nhận thể hiện hiện tại của lớp và sự kiện nút. Vượt qua danh mục tin tức mà người dùng đã chọn bằng chữ thường và lưu trữ nó. Chuyển các tham số bắt buộc tới URL cơ sở và xóa bất kỳ văn bản nào xuất hiện trước đó từ chỉ mục đầu tiên đến chỉ mục cuối cùng. Chèn một dòng để phân định ranh giới.
xác định một thử chặn và gửi yêu cầu HTTP GET đến máy chủ được xác định trong URL cơ sở. Chuyển đổi phản hồi thành định dạng JSON và trích xuất nội dung có khóa là bài viết và lưu trữ nó trong một biến.
def Newsarea(self, event):
type = event.widget.cget('text').lower()
BASE_URL = f'http://newsapi.org/v2/top-headlines?country=in&category={type}&apiKey=' + apiKey
self.txtarea.delete("1.0", END)
self.txtarea.insert(END, "--------------------------------------------------------------------n")
try:
articles = (requests.get(BASE_URL).json())['articles']
Nếu số lượng bài viết được tìm nạp khác 0, hãy chạy một vòng lặp và chèn từng bài viết một vào tiện ích văn bản. Hiển thị tiêu đề, theo sau là mô tả, nội dung và URL trong các dòng riêng biệt. Chèn hai dòng để phân định ranh giới. Nếu số lượng bài báo bằng 0, hiển thị rằng không có tin tức nào cho danh mục cụ thể đó.
Nếu khối thử không thành công, hãy sử dụng khối ngoại lệ để hiển thị thông báo lỗi thích hợp cho người dùng.
if (articles != 0):
for i in range(len(articles)):
self.txtarea.insert(END, f"{articles[i]['title']}n")
self.txtarea.insert(END, f"{articles[i]['description']}n")
self.txtarea.insert(END, f"{articles[i]['content']}n")
self.txtarea.insert(END, f"read more...{articles[i]['url']}n")
self.txtarea.insert(END, "-------------------------------------------------------------n")
self.txtarea.insert(END, "-------------------------------------------------------------n")
else:
self.txtarea.insert(END, "No news available")
except Exception as e:
messagebox.showerror('ERROR', "Sorry, we ran into some issues. Please check the internet connection and try again.")
Tạo một thể hiện của lớp và khởi tạo nó. Các vòng lặp chính() hàm yêu cầu Python chạy vòng lặp sự kiện Tkinter và lắng nghe các sự kiện cho đến khi bạn đóng cửa sổ.
root = Tk()
obj = NewsApp(root)
root.mainloop()
Đặt tất cả mã lại với nhau và ứng dụng của bạn đã sẵn sàng hiển thị tin tức theo các danh mục khác nhau.
Đầu ra của Ứng dụng Tin tức
Khi chạy chương trình, vùng văn bản yêu cầu chọn danh mục. Khi nhấp vào bất kỳ nút nào, nó sẽ hiển thị tin tức với mô tả, nội dung và liên kết của nó (nếu có) cho danh mục đó được phân tách bằng hai dòng.
API hữu ích cho Dự án Python của bạn
API cực kỳ tiện dụng để tích hợp các ứng dụng mới với các hệ thống phần mềm hiện có. Bạn có thể sử dụng API OpenWeatherMap để truy xuất thông tin thời tiết theo thời gian thực của bất kỳ khu vực nào và API Google Maps để kết hợp bản đồ vào ứng dụng trang web của bạn. Bạn có thể tự động hóa các tác vụ GitHub thông qua API GitHub và sử dụng API Zoom để tích hợp hội nghị truyền hình.
Bạn cũng có thể sử dụng sức mạnh của ChatGPT từ trong các ứng dụng của riêng mình bằng cách sử dụng API của OpenAI và tạo một số ứng dụng hấp dẫn do AI cung cấp.