Farih.co.id
Home Programming Cara Membangun Aplikasi Berita Menggunakan Python

Cara Membangun Aplikasi Berita Menggunakan Python

part of newspaper

Di dunia yang serba cepat ini, selalu mengikuti berita terbaru sangatlah penting. Bangun aplikasi Berita Anda sendiri yang memberi Anda berita di berbagai kategori seperti hiburan, olahraga, dan teknologi yang dapat diakses di platform apa pun tepat di ujung jari Anda.


Anda akan mengembangkan aplikasi ini menggunakan Tkinter, pustaka GUI standar untuk Python, dan menjalankannya menggunakan News API yang mendapatkan artikel dari lebih dari 80.000 sumber.


Instal modul tkinter dan permintaan

Tkinter adalah modul lintas platform, sederhana, dan mudah digunakan yang dapat Anda gunakan untuk membuat antarmuka pengguna grafis dengan cepat. Beberapa aplikasi yang dapat Anda buat menggunakan Tkinter antara lain pemutar musik, kalender, alat konversi berat, permainan campur aduk kata, dan sebagainya.

Untuk memasang tkinter di sistem Anda, jalankan perintah berikut di terminal:

 pip install tkinter 

Itu permintaan modul membuatnya lebih mudah untuk membuat permintaan HTTP. Dengan ini, Anda dapat mengembangkan aplikasi menarik seperti pemeriksa status situs web, pengikis web, bot monitor pasar saham, dan penguji kinerja situs web. Untuk menginstal modul permintaan, buka terminal dan jalankan perintah berikut:

 pip install requests 

Anda dapat menemukan seluruh kode sumber aplikasi Berita menggunakan Python di sini repositori GitHub.

Hasilkan Kunci API Berita

Mulailah dengan mengimpor perpustakaan yang diperlukan. Daftar di API Berita dan hasilkan kunci API Anda. Dengan akun pengembang gratis, Anda dapat mengirimkan hingga 100 permintaan setiap hari, yang bagus untuk diuji dan dimulai. Simpan API dalam variabel yang akan Anda gunakan nanti dengan URL dasar untuk mengambil berita utama teratas menurut negara Anda.

 from tkinter import *
from tkinter import messagebox
import requests

apiKey = 'YOUR_API_KEY'

Tentukan Struktur Aplikasi

Tentukan kelas, Aplikasi Berita. Referensi kunci API Dan jenis variabel secara global. Tentukan objek kelas dan inisialisasi jendela root. Tetapkan dimensi dan judul aplikasi Anda. Tentukan dua daftar, Anda akan menggunakan daftar pertama untuk menentukan tombol dan yang kedua untuk menentukan kategori berita yang ingin Anda tampilkan di aplikasi Anda.

 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"]

Tentukan label yang berfungsi sebagai judul untuk aplikasi Anda. Lewati elemen induk tempat Anda ingin menempatkannya, teks yang harus ditampilkan, gaya font, padding, dan warna latar belakang yang harus dimiliki. Menggunakan mengemas() isi opsi untuk membuat label menempati seluruh ruang dalam arah X.

Tentukan a LabelFrame dan atur elemen induknya bersama dengan warna latar belakang yang harus dimilikinya. Menggunakan tempat() berfungsi untuk mengaturnya pada koordinat yang ditentukan. Selain itu, lewati lebar dan tinggi bingkai.

         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)

Tentukan for loop yang berjalan melalui panjang newsCat daftar. Tentukan tombol dalam bingkai yang ditentukan sebelumnya. Berikan teks yang seharusnya ditampilkan dan ubah menjadi huruf besar. Lewati lebar, kedalaman batas, gaya font, dan warna latar belakang tombol. Menggunakan kisi manajer untuk mengatur tombol dalam format kolom dan menambahkan padding di arah X dan Y.

Gunakan metode ikat untuk melampirkan tombol dan area berita. mendefinisikan bahwa Area berita fungsi akan terjadi pada klik kiri mouse oleh pengguna. Tambahkan tombol-tombol ini ke newsCatButton daftar yang ditentukan sebelumnya.

         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)

Tentukan bingkai dan berikan elemen induk tempat Anda ingin menempatkannya dan kedalaman batas yang seharusnya. Atur pada koordinat yang ditentukan dan berikan tinggi dan lebar relatif. Tentukan scrollbar vertikal menggunakan mengorientasikan parameter dan letakkan di bingkai ini.

Tentukan widget teks. Lewati elemen induk sebagai bingkai ini bersama dengan gaya font dan warna latar belakang yang harus dimilikinya. Pada pengaturan nilai perintah yscroll sebagai scroll_y.set itu mendapatkan posisi scrollbar saat ini pada interaksi pengguna.

         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')

Menggunakan mengemas() isi opsi untuk menempatkan bilah gulir di sisi kanan bingkai dan menempati seluruh ruang dalam arah Y. Pada pengaturan parameter perintah sebagai txtarea.yview, gerakan bilah gulir ditautkan ke fungsi atas dan bawah. Jadi, saat pengguna berinteraksi dengan scrollbar, tampilan area teks akan berubah.

Menggunakan menyisipkan() metode untuk meminta pengguna memilih kategori dan menempatkannya di akhir teks yang ada. Menggunakan mengemas() metode untuk meminta widget teks mengambil ruang dalam arah X dan Y dan menetapkan ruang tambahan jika perlu menggunakan memperluas parameter.

         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)

Tentukan fungsi, Area berita() yang menerima instance kelas saat ini dan event tombol. Lewati kategori berita yang dipilih pengguna dalam huruf kecil dan simpan. Lewati parameter yang diperlukan ke URL dasar dan hapus teks apa pun yang ada sebelumnya dari indeks pertama ke yang terakhir. Sisipkan garis untuk demarkasi.

Tentukan a mencoba memblokir dan mengirim permintaan HTTP GET ke server yang ditentukan di URL dasar. Ubah respons menjadi format JSON dan ekstrak konten yang memiliki kunci sebagai artikel dan menyimpannya dalam sebuah variabel.

     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']

Jika jumlah artikel yang diambil tidak nol, jalankan loop dan sisipkan artikel satu per satu di widget teks. Tampilkan judul, diikuti deskripsi, konten, dan URL dalam baris terpisah. Sisipkan dua baris untuk demarkasi. Jika jumlah artikelnya nol, tampilkan bahwa tidak ada berita yang tersedia untuk kategori tersebut.

Jika blok percobaan gagal, gunakan blok pengecualian untuk menampilkan pesan kesalahan yang sesuai kepada pengguna.

             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.")

Buat instance kelas dan inisialisasi. Itu mainloop() fungsi memberi tahu Python untuk menjalankan loop acara Tkinter dan mendengarkan acara sampai Anda menutup jendela.

 root = Tk()
obj = NewsApp(root)
root.mainloop()

Gabungkan semua kode dan aplikasi Anda siap menampilkan berita sesuai dengan kategori yang berbeda.

Keluaran Aplikasi Berita

Saat menjalankan program, area teks meminta untuk memilih kategori. Saat mengklik salah satu tombol, ini akan menampilkan berita dengan deskripsi, konten, dan tautannya (jika ada) untuk kategori tersebut yang dipisahkan oleh dua baris.

Keluaran Aplikasi Berita

API yang Berguna untuk Proyek Python Anda

API sangat berguna untuk mengintegrasikan aplikasi baru dengan sistem perangkat lunak yang ada. Anda dapat menggunakan OpenWeatherMap API untuk mengambil informasi cuaca real-time dari area mana pun dan Google Maps API untuk memasukkan peta ke dalam aplikasi situs web Anda. Anda dapat mengotomatiskan tugas GitHub melalui GitHub API dan menggunakan Zoom API untuk mengintegrasikan konferensi video.

Anda juga dapat menggunakan kekuatan ChatGPT dari dalam aplikasi Anda sendiri menggunakan API OpenAI dan membuat beberapa aplikasi bertenaga AI yang menarik.

Comment
Share:

Leave a Reply

Your email address will not be published. Required fields are marked *

beli jitu https://167.71.217.241/ https://188.166.210.27/ https://103.253.147.8/ https://139.59.194.132/ https://152.42.192.54/ https://152.42.187.123/ https://188.166.196.248/ https://163.47.9.78/ https://157.230.245.144/ http://68.183.96.87/ http://147.182.210.122/ http://147.182.128.234/ http://167.172.1.184/ http://157.245.5.74/ http://139.59.217.59/ http://163.47.9.16/ http://144.126.251.215/ http://139.59.217.128/ http://103.186.0.254/ http://161.35.251.176/ http://157.245.29.71/ https://170.64.254.102/ https://www.markas303.ac.id/ https://www.markas303.or.id/ https://www.markas303.sch.id/ http://103.172.205.75/ http://103.245.38.119/ http://138.197.224.231/ http://138.197.224.231/

Ad

BIJI18 BIJI18 https://goremekoop.com/ AGEN77 3DBET OBOR138 GACOR168JP YING77 RUMAH258 POHONHOKI99 ASALBET88 PARIS128 66KBET LONG111 DESA333 DEWAGACOR89 YING77
https://146.190.200.68/ https://188.166.204.36/