diff --git a/README.md b/README.md index b335f10..b94219c 100644 --- a/README.md +++ b/README.md @@ -12,12 +12,15 @@ pip install kbbi ### Manual -1. Lakukan instalasi untuk paket-paket prasyarat ([`requests`][requests], [`BeautifulSoup4`][beautifulsoup4], dan [`Abseil`][abseil]). +1. Lakukan instalasi untuk paket-paket prasyarat ([`requests`][requests] + dan [`BeautifulSoup4`][beautifulsoup4]). 2. Klonakan repositori ini atau unduh [`kbbi.py`][kbbi-py]. 3. Letakkan `kbbi.py` dalam direktori yang Anda inginkan. ## Penggunaan +### Melalui kode Python + Buat objek `KBBI` baru (contoh: `kata = KBBI('kata kunci')`), lalu manfaatkan representasi `str`-nya dengan memanggil `str(kata)` atau ambil `dict` hasil serialisasinya dengan memanggil `kata.serialisasi()`. Apabila ingin memanfaatkan @@ -112,19 +115,37 @@ tak.sir [2] } ``` -Penggunaan melalui CLI. +### Melalui CLI + +``` +$ python kbbi.py cinta +``` + +Pencarian dengan kata/frasa yang dipisahkan oleh spasi harus diapit oleh +tanda petik. + +``` +$ python kbbi.py "tanggung jawab" +``` + +Apabila tidak ingin menampilkan contoh, gunakan `--tanpa-contoh` atau `-t`. + ``` -$ python kbbi.py --kata=cinta +$ python kbbi.py "tanggung jawab" --tanpa-contoh ``` -Pencarian frasa yang dipisahkan oleh spasi harus diapit oleh tanda petik. +Untuk mendapatkan hasil dalam bentuk serialisasi JSON, gunakan `--json` +atau `-j`. + ``` -$ python kbbi.py --kata="tanggung jawab" +$ python kbbi.py "tanggung jawab" --json ``` -Menambahkan contoh kalimat. +Untuk mengatur indentasi pada serialisasi JSON, gunakan `--indentasi N` +atau `-i N`. + ``` -$ python kbbi.py --kata="tanggung jawab" --contoh +$ python kbbi.py "tanggung jawab" --json --indentasi 2 ``` @@ -146,7 +167,6 @@ penyalahgunaan yang mungkin muncul dari proyek ini. [kbbi]: https://kbbi.kemdikbud.go.id [requests]: https://pypi.org/project/requests [beautifulsoup4]: https://pypi.org/project/requests/beautifulsoup4 -[abseil]: https://github.com/abseil/abseil-py [kbbi-py]: kbbi/kbbi.py [license]: LICENSE [hukum]: https://kbbi.kemdikbud.go.id/Beranda/Hukum diff --git a/kbbi/kbbi.py b/kbbi/kbbi.py index db754ab..4efd2a5 100644 --- a/kbbi/kbbi.py +++ b/kbbi/kbbi.py @@ -8,21 +8,14 @@ .. moduleauthor:: sage """ +import argparse +import json +import sys from urllib.parse import quote import requests from bs4 import BeautifulSoup -from absl import app -from absl import flags - - -FLAGS = flags.FLAGS - -flags.DEFINE_string("kata", None, "Kata yang dicari.") -flags.DEFINE_boolean("contoh", False, 'Menampilkan contoh kalimat.') - -flags.mark_flag_as_required('kata') class KBBI: """Sebuah laman dalam KBBI daring.""" @@ -409,15 +402,54 @@ def __init__(self): ) -def main(argv): +def _parse_args(args): + parser = argparse.ArgumentParser() + parser.add_argument( + "laman", help='Laman yang ingin diambil, contoh: "cinta"' + ) + parser.add_argument( + "-t", + "--tanpa-contoh", + help="jangan tampilkan contoh (bila ada)", + action="store_true", + ) + parser.add_argument( + "-j", + "--json", + help="tampilkan hasil (selalu dengan contoh) dalam bentuk JSON", + action="store_true", + ) + parser.add_argument( + "-i", + "--indentasi", + help="gunakan indentasi sebanyak N untuk serialisasi JSON", + type=int, + metavar="N", + ) + return parser.parse_args(args) + + +def _keluaran(laman, args): + if args.json: + if args.indentasi: + return json.dumps(laman.serialisasi(), indent=args.indentasi) + else: + return json.dumps(laman.serialisasi()) + elif args.tanpa_contoh: + return laman.__str__(contoh=False) + else: + return str(laman) - kata = KBBI(FLAGS.kata) - contoh = False - if FLAGS.contoh: - contoh = True - print(kata.__str__(contoh=contoh)) +def main(argv): + args = _parse_args(argv) + try: + laman = KBBI(args.laman) + except (TidakDitemukan, TerjadiKesalahan, BatasSehari) as e: + print(e) + else: + print(_keluaran(laman, args)) -if __name__ == '__main__': - app.run(main) +if __name__ == "__main__": + main(sys.argv[1:]) diff --git a/setup.py b/setup.py index 2a474f9..2313eb1 100644 --- a/setup.py +++ b/setup.py @@ -28,9 +28,5 @@ "kbbi kamus bahasa indonesia indonesian natural language scraper" ), packages=find_packages(), - install_requires=[ - 'requests', - 'beautifulsoup4', - 'absl-py', - ], + install_requires=["requests", "beautifulsoup4",], )