Skip to content

ZulfaNurhuda/GoKBBI.project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀・GoKBBI - Library dan CLI KBBI Daring

Pernah Bermimpi Mengakses KBBI Langsung dari Kode Go Anda? ✨

Selamat datang di GoKBBI! Proyek keren ini adalah jembatan ajaib Anda untuk mengakses Kamus Besar Bahasa Indonesia (KBBI) Daring langsung dari aplikasi Go Anda! GoKBBI adalah re-implementasi dari kbbi-python dalam bahasa Go yang memberikan akses mudah ke KBBI melalui library Go yang powerful dan command line interface yang user-friendly. Bayangkan bisa mencari arti kata, mendapatkan etimologi, dan mengakses fitur KBBI lengkap - semua dari kode Go Anda!


📋・Daftar Isi


✨・Kenali GoKBBI - Jembatan Ajaib ke KBBI!

GoKBBI (Go Kamus Besar Bahasa Indonesia) adalah library dan CLI tool super keren yang memungkinkan Anda mengakses KBBI Daring dengan mudah! 🚀 Tujuan utama kami adalah menciptakan jembatan yang seamless dan menyenangkan antara aplikasi Go Anda dengan kekayaan bahasa Indonesia yang ada di KBBI. Bersiaplah untuk melihat kosakata Indonesia beraksi dalam kode Anda!

Fitur Utama:

  • 🔍 Pencarian kata dalam KBBI Daring (termasuk kata dengan spasi)
  • 🔐 Autentikasi untuk mengakses fitur pengguna terdaftar
  • 📚 Library Go dengan API yang mudah digunakan
  • 💻 CLI tool dengan berbagai opsi
  • 📖 Format output teks dan JSON
  • ⚙️ Opsi filtering untuk menghilangkan contoh atau kata terkait
  • 🌐 Human-like request dengan delay dan header yang wajar
  • 📱 Cross-platform (Windows, macOS, Linux)

🚀・Mari Memulai Petualangan Coding!

Siap untuk menghidupkan KBBI di aplikasi Go Anda? Berikut cara mendapatkan GoKBBI up and running dalam sekejap:

  1. Clone keajaibannya!

    git clone https://github.com/ZulfaNurhuda/GoKBBI.project.git
    cd GoKBBI.project
  2. Install Go Toolchain ⚙️

    Untuk menjalankan GoKBBI, Anda memerlukan Go 1.21 atau yang lebih baru. Berikut instruksi setup untuk platform yang berbeda.

    Windows

    1. Download Go: Kunjungi https://golang.org/dl/ dan download installer Windows.
    2. Install: Jalankan installer dan ikuti petunjuk instalasi.
    3. Verify: Buka Command Prompt dan ketik go version untuk memastikan instalasi berhasil.

    Linux

    • Debian/Ubuntu-based:

      sudo apt update
      sudo apt install golang-go
    • Fedora/RHEL-based:

      sudo dnf install golang
    • Arch Linux:

      sudo pacman -S go

    macOS

    brew install go

⚙️・Instalasi Super Mudah!

GoKBBI mendukung dua cara instalasi: Build dari source (untuk development) dan sebagai library (untuk proyek Anda).

Opsi 1: Build dari Source (Cara Classic 📜)

Perfect untuk development atau jika Anda ingin CLI tool:

# Clone dan setup dependencies
git clone https://github.com/ZulfaNurhuda/GoKBBI.project.git
cd GoKBBI.project
go mod tidy

# Build CLI tool
go build -o bin/kbbi cmd/kbbi/main.go

Setelah build berhasil, executable kbbi akan menunggu Anda di direktori bin/! 🎉

Opsi 2: Sebagai Library Go (Cara Modern ✨)

Untuk menggunakan GoKBBI dalam proyek Go Anda:

go get github.com/ZulfaNurhuda/GoKBBI.project

🗺️・Menguasai CLI seperti Pro!

Setelah GoKBBI di-build, Anda hanya tinggal satu perintah saja untuk melihat keajaiban pencarian KBBI! Seperti magic, tapi dengan code:

Pencarian Dasar CLI

./bin/kbbi cinta
./bin/kbbi --kata rumah

Autentikasi CLI

# Login dan simpan kuki
./bin/kbbi --email your@email.com --sandi yourpassword --autentikasi

# Setelah login, kuki akan digunakan otomatis
./bin/kbbi cinta

Format Output CLI

# Output default (teks)
./bin/kbbi cinta

# Output JSON
./bin/kbbi --kata cinta --json

# Output JSON dengan indentasi
./bin/kbbi --kata cinta --json --indent

Opsi Filtering CLI

# Tanpa contoh penggunaan
./bin/kbbi --kata cinta --tanpa-contoh

# Tanpa kata terkait
./bin/kbbi --kata cinta --tanpa-terkait

# Mode nonpengguna (menonaktifkan fitur khusus)
./bin/kbbi --kata cinta --nonpengguna

Manajemen Kuki CLI

# Hapus kuki tersimpan
./bin/kbbi --bersihkan-kuki

# Gunakan lokasi kuki custom
./bin/kbbi --lokasi-kuki /path/to/cookies.json

💻・Library Go yang Powerful!

Pencarian Dasar

package main

import (
    "fmt"
    "log"
    gokbbi "github.com/ZulfaNurhuda/GoKBBI.project"
)

func main() {
    // Pencarian tanpa autentikasi
    definisi, err := gokbbi.Cari("rumah")
    if err != nil {
        if err == gokbbi.ErrModaTerbatas {
            log.Fatal("Perlu autentikasi: KBBI dalam moda terbatas")
        }
        log.Fatal(err)
    }
    
    // Tampilkan hasil
    fmt.Println(definisi.String())
    
    // Akses data terstruktur
    for _, entri := range definisi.Entri {
        fmt.Printf("Entri: %s\n", entri.Nama)
        for i, makna := range entri.Makna {
            fmt.Printf("%d. %s\n", i+1, makna.String())
        }
    }
}

Dengan Autentikasi

// Autentikasi baru
auth, err := gokbbi.NewAuth("email@example.com", "password", "")
if err != nil {
    log.Fatal(err)
}

// Simpan kuki untuk penggunaan berikutnya  
err = auth.SimpanKuki()
if err != nil {
    log.Printf("Warning: %v", err)
}

// Pencarian dengan autentikasi (akses fitur lengkap)
definisi, err := gokbbi.CariDenganAuth("cinta", auth)
if err != nil {
    log.Fatal(err)
}

// Dengan autentikasi, dapat akses etimologi dan kata terkait
for _, entri := range definisi.Entri {
    if entri.Etimologi != nil {
        fmt.Printf("Etimologi: %s\n", entri.Etimologi.String())
    }
    fmt.Printf("Kata Turunan: %s\n", strings.Join(entri.KataTurunan, ", "))
}

Load Kuki Tersimpan

// Muat kuki yang sudah tersimpan
auth, err := gokbbi.LoadAuth("")
if err != nil {
    // Kuki tidak ada, perlu login ulang
    auth, err = gokbbi.NewAuth("email@example.com", "password", "")
    if err != nil {
        log.Fatal(err)
    }
    auth.SimpanKuki()
}

definisi, err := gokbbi.CariDenganAuth("kata", auth)

Export ke JSON

definisi, err := gokbbi.Cari("buku")
if err != nil {
    log.Fatal(err)
}

// Konversi ke JSON
jsonStr, err := definisi.ToJSON(true) // true = dengan indentasi
if err != nil {
    log.Fatal(err)
}

fmt.Println(jsonStr)

Error Handling

definisi, err := gokbbi.Cari("katayangtidakada")
if err != nil {
    switch err {
    case gokbbi.ErrTidakDitemukan:
        fmt.Println("Kata tidak ditemukan")
        // Cek apakah ada saran
        if definisi != nil && len(definisi.SaranEntri) > 0 {
            fmt.Printf("Saran: %s\n", strings.Join(definisi.SaranEntri, ", "))
        }
    case gokbbi.ErrBatasSehari:
        fmt.Println("Batas pencarian harian tercapai")
    case gokbbi.ErrModaTerbatas:
        fmt.Println("KBBI dalam moda terbatas, perlu autentikasi")
    case gokbbi.ErrAkunDibekukan:
        fmt.Println("Akun dibekukan")
    default:
        fmt.Printf("Error lain: %v\n", err)
    }
}

🛠️・Panduan Lengkap Command Line!

Pencarian

  • --kata <kata> - Kata yang ingin dicari
  • --json - Output dalam format JSON
  • --indent - Gunakan indentasi untuk JSON
  • --tanpa-contoh - Jangan tampilkan contoh penggunaan
  • --tanpa-terkait - Jangan tampilkan kata terkait
  • --nonpengguna - Nonaktifkan fitur khusus pengguna

Autentikasi

  • --email <email> - Alamat email akun KBBI
  • --sandi <password> - Kata sandi akun KBBI
  • --autentikasi - Lakukan proses autentikasi
  • --lokasi-kuki <path> - Lokasi file kuki
  • --bersihkan-kuki - Hapus kuki tersimpan

Lainnya

  • --bantuan, --help - Tampilkan bantuan
  • --version - Tampilkan versi aplikasi

🏗️・Arsitektur Proyek yang Rapi!

GoKBBI.project/
├── cmd/kbbi/          # Main CLI application
├── internal/
│   ├── auth/          # Autentikasi KBBI
│   ├── fetcher/       # HTTP client untuk mengambil halaman
│   ├── model/         # Data structures
│   └── parser/        # HTML parser
├── go.mod
├── go.sum
└── README.md

🔧・Mengatasi Error dengan Elegan!

Aplikasi menangani berbagai kondisi error:

  • Entri tidak ditemukan: Menampilkan saran kata alternatif
  • Batas harian tercapai: Error dengan pesan informatif
  • Akun dibekukan: Error dengan pesan peringatan
  • Moda terbatas: Error ketika KBBI dalam mode terbatas
  • Koneksi gagal: Error jaringan dengan retry mechanism

⚠️・Gunakan dengan Bijak dan Bertanggung Jawab!

  • 🕒 Gunakan delay yang wajar antara request untuk menghindari pemblokiran
  • 🚫 Jangan melakukan request berlebihan dalam waktu singkat
  • 📋 Hormati terms of service KBBI Daring
  • 🔄 Gunakan fitur retry dengan bijak

💖・Bergabung dalam Komunitas!

Punya ide keren? Menemukan bug yang menyebalkan? Ingin menambah fitur awesome? Kami akan sangat senang dengan bantuan Anda! GoKBBI adalah effort komunitas, dan setiap kontribusi, besar atau kecil, membuat perbedaan. Cek CONTRIBUTING.md kami untuk detail lengkap tentang bagaimana Anda bisa ikut serta dan membuat GoKBBI lebih keren lagi. Mari bangun sesuatu yang amazing bersama-sama!


📜・Lisensi MIT yang Bebas!

Proyek ini open-source dan dengan bangga didistribusikan di bawah MIT License. Ini artinya Anda bebas untuk explore, use, modify, dan share GoKBBI! Anda bisa menemukan semua detail lengkapnya di file LICENSE. Happy coding!


👋・Siapa di Balik GoKBBI?

Muhammad Zulfa Fauzan Nurhuda (18224064)

Seorang mahasiswa STI ITB yang sangat tertarik dalam dunia programming! 😄 Selalu antusias belajar dan membangun project keren seperti GoKBBI ini! 🚀

Logo ITB

About

GoKBBI – merupakan library Go sekaligus CLI KBBI Daring yang menjadi jembatan ke Kamus Besar Bahasa Indonesia. Proyek ini memudahkan aplikasi Go Anda untuk mengakses KBBI Daring.

Resources

License

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages