Skip to main content

Unofficial Python API wrapper to get data at PDDIKTI Kemdikbud

Project description

๐ŸŽ“ PDDIKTI API Python Wrapper

Codacy Badge BuildStatus python3.x Version 2.0.5 Downloads Author License

Library Python untuk mengakses data PDDIKTI Kemdikbud dengan mudah, aman, dan terdokumentasi lengkap

Wrapper API Python yang powerful dan user-friendly untuk mengambil data dari PDDIKTI Kemdikbud. Library ini menyediakan interface yang mudah digunakan untuk mengakses data mahasiswa, dosen, perguruan tinggi, dan program studi di Indonesia dengan dukungan type hints, error handling yang komprehensif, dan dokumentasi lengkap.

๐Ÿ“‹ Daftar Isi

๐Ÿš€ Fitur Utama

  • โœ… Type Hints Lengkap: Full type annotations untuk better IDE support
  • โœ… Error Handling Komprehensif: Custom exceptions dan validation
  • โœ… Context Manager Support: Resource management yang aman
  • โœ… Dokumentasi Lengkap: Google-style docstrings dengan 63 API methods
  • โœ… Performance Optimized: Connection pooling dan retry strategy
  • โœ… Indonesian Context: Field explanations dalam konteks pendidikan Indonesia
  • โœ… Flexible Parameters: Support untuk integer dan string parameters
  • โœ… Production Ready: Enhanced validation dan logging

๐Ÿ“ฆ Instalasi

pip install pddiktipy

Requirements:

  • Python 3.7+
  • requests
  • urllib3

โšก Quick Start

from pddiktipy import api
from pprint import pprint

# Menggunakan context manager (recommended)
with api() as client:
    # Cari semua data dengan keyword
    hasil = client.search_all('Universitas Indonesia')
    pprint(hasil)
    
    # Cari mahasiswa spesifik
    mahasiswa = client.search_mahasiswa('Ahmad Rizki')
    pprint(mahasiswa)

๐Ÿ“š Penggunaan Lengkap

Context Manager

Direkomendasikan untuk menggunakan context manager untuk resource management yang aman:

from pddiktipy import api

# Context manager otomatis handle resource cleanup
with api() as client:
    hasil = client.search_all('data yang dicari')
    print(hasil)
# Resource otomatis dibersihkan di sini

Contoh Pencarian Data

1. Pencarian Mahasiswa

with api() as client:
    mahasiswa = client.search_mahasiswa('Ahmad Rizki')
    
    if mahasiswa and mahasiswa.get('data'):
        for mhs in mahasiswa['data']:
            print(f"Nama: {mhs['nama']}")
            print(f"NIM: {mhs['nim']}")
            print(f"Universitas: {mhs['nama_pt']}")
            print(f"Prodi: {mhs['nama_prodi']}")
            print("-" * 30)

2. Pencarian Dosen

with api() as client:
    dosen = client.search_dosen('Prof. Dr.')
    
    if dosen and dosen.get('data'):
        for dsn in dosen['data']:
            print(f"Nama: {dsn['nama']}")
            print(f"NIDN: {dsn['nidn']}")
            print(f"Universitas: {dsn['nama_pt']}")

3. Detail Perguruan Tinggi

with api() as client:
    # Cari universitas
    pt_search = client.search_pt('Universitas Indonesia')
    if pt_search and pt_search.get('data'):
        pt_id = pt_search['data'][0]['id']
        
        # Detail universitas
        detail_pt = client.get_detail_pt(pt_id)
        if detail_pt:
            print(f"Nama: {detail_pt['nama_pt']}")
            print(f"Alamat: {detail_pt['alamat']}")
            print(f"Website: {detail_pt['website']}")
            print(f"Akreditasi: {detail_pt['akreditasi_pt']}")

๐Ÿ”ง Fitur Lanjutan

Flexible Year Parameter

with api() as client:
    pt_id = "some_university_id"
    
    # Kedua format ini didukung (bug integer parsing telah diperbaiki)
    prodi_int = client.get_prodi_pt(pt_id, 20241)      # Integer
    prodi_str = client.get_prodi_pt(pt_id, "20241")    # String

Batch Processing

with api() as client:
    keywords = ['Universitas Indonesia', 'ITB', 'UGM']
    
    results = {}
    for keyword in keywords:
        results[keyword] = client.search_pt(keyword)
        
    for keyword, result in results.items():
        if result and result.get('data'):
            print(f"{keyword}: {len(result['data'])} hasil")

โš ๏ธ Error Handling

Library ini menyediakan error handling yang komprehensif:

from pddiktipy import api
from pddiktipy.exceptions import (
    ValidationError, 
    APIConnectionError, 
    APITimeoutError,
    PDDIKTIError
)

try:
    with api() as client:
        # Ini akan raise ValidationError karena keyword kosong
        result = client.search_mahasiswa("")
        
except ValidationError as e:
    print(f"Error validasi: {e}")
except APIConnectionError as e:
    print(f"Error koneksi: {e}")
except APITimeoutError as e:
    print(f"Request timeout: {e}")
except PDDIKTIError as e:
    print(f"Error PDDIKTI API: {e}")

Custom Exceptions

  • PDDIKTIError: Base exception untuk semua error
  • ValidationError: Error validasi parameter
  • APIConnectionError: Error koneksi network
  • APITimeoutError: Request timeout
  • APIRateLimitError: Rate limit exceeded
  • APIResponseError: Error response dari API

๐Ÿ“Š Struktur Data Response

Data Mahasiswa

{
    'id': 'unique_identifier',
    'nama': 'Nama Lengkap',
    'nim': '123456789',
    'nama_pt': 'Nama Universitas',
    'singkatan_pt': 'UNIV',
    'nama_prodi': 'Program Studi',
    'jenis_kelamin': 'L/P',
    'jenjang': 'S1/S2/S3/D3/D4',
    'status_saat_ini': 'Status Akademik',
    'tahun_masuk': '2020'
}

Data Dosen

{
    'id': 'unique_identifier',
    'nama': 'Nama Lengkap',
    'nidn': '1234567890',
    'nama_pt': 'Nama Universitas',
    'singkatan_pt': 'UNIV',
    'nama_prodi': 'Program Studi',
    'jabatan_akademik': 'Jabatan',
    'pendidikan_tertinggi': 'S3/S2/S1',
    'status_ikatan_kerja': 'Status',
    'status_aktivitas': 'Aktif/Tidak Aktif'
}

๐Ÿ“– Dokumentasi API Lengkap

Untuk dokumentasi API yang komprehensif dengan semua method dan parameter yang tersedia, silakan lihat:

โžก๏ธ API Documentation

Dokumentasi ini mencakup:

  • ๐Ÿ” 63 Method API dengan penjelasan detail
  • ๐Ÿ“ Parameter & Return Values untuk setiap method
  • ๐Ÿ’ก Contoh penggunaan yang praktis
  • ๐Ÿ“Š Struktur data response yang lengkap
  • ๐Ÿ› ๏ธ Best practices dan tips penggunaan

Quick Links ke Dokumentasi API:

๐Ÿ”„ Changelog

V 2.0.5 (Versi Terbaru Stabil) โญ

  • โœ… Dokumentasi API Lengkap: 63 method terdokumentasi komprehensif
  • โœ… Lokalisasi Indonesia: Dokumentasi penuh dalam bahasa Indonesia
  • โœ… Enhanced Error Handling: Custom exception hierarchy yang ditingkatkan
  • โœ… Full Type Hints Support: 100% coverage untuk better IDE experience
  • โœ… Comprehensive Documentation: Google-style docstrings di semua method
  • โœ… Context Manager Support: Resource management yang aman
  • โœ… Performance Improvements: Connection pooling dan retry strategy
  • โœ… Bug Fixes: Integer parsing di get_prodi_pt() dan validasi parameter

Versi Sebelumnya

  • V 2.0.4: Enhanced error handling dan documentation improvements
  • V 2.0.3: Fix code bugs dan stability improvements
  • V 2.0.0: Major refactor untuk align dengan updated API
  • V 1.0.0: First release dengan basic functionality

๐Ÿ“‹ Lihat Changelog Lengkap untuk detail semua perubahan dan roadmap versi mendatang.

๐Ÿ“‹ Requirements

  • Python: 3.7+
  • Dependencies:
    • requests: HTTP library
    • urllib3: HTTP client
    • typing: Type hints (built-in untuk Python 3.7+)

๐Ÿค Contributing

Kontribusi sangat diterima! Kami menyambut berbagai jenis kontribusi dari community.

Quick Contribution Guide

  1. Fork repository ini
  2. Buat feature branch (git checkout -b feature/AmazingFeature)
  3. Commit perubahan (git commit -m 'Add some AmazingFeature')
  4. Push ke branch (git push origin feature/AmazingFeature)
  5. Buat Pull Request

๐Ÿ“š Detailed Contributing Guide

โžก๏ธ CONTRIBUTING.md

Untuk panduan lengkap tentang:

  • ๐Ÿ› Melaporkan bug dengan template yang tepat
  • ๐Ÿ’ก Mengusulkan fitur baru dan feature requests
  • ๐Ÿ”ง Development setup dan environment configuration
  • ๐Ÿ“ Code guidelines dan best practices
  • ๐Ÿงช Testing procedures dan coverage requirements
  • ๐Ÿ“– Documentation standards dan formatting
  • ๐Ÿ”„ Pull request process step-by-step

Development Setup (Quick)

# Clone repository
git clone https://github.com/IlhamriSKY/PDDIKTI-kemdikbud-API.git
cd PDDIKTI-kemdikbud-API

# Install dependencies
pip install -r requirements.txt

# Install in development mode
pip install -e .

# Run tests
python run_tests.py

๐Ÿ“– Lihat Contributing Guide Lengkap untuk detail setup dan guidelines.

๐Ÿ“„ License

Distributed under the MIT License. See LICENSE file for more information.


๐Ÿ“ž Support & Contact

๐Ÿ“š Dokumentasi Lengkap

  • README.md: Panduan penggunaan dan contoh dasar
  • API Documentation: Dokumentasi lengkap semua method API
  • Changelog: Version history dan roadmap
  • Contributing: Panduan untuk berkontribusi
  • Code Comments: Inline documentation dalam source code

โญ Jika library ini membantu proyek Anda, jangan lupa untuk memberikan star di GitHub!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pddiktipy-2.0.5.tar.gz (19.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pddiktipy-2.0.5-py3-none-any.whl (20.1 kB view details)

Uploaded Python 3

File details

Details for the file pddiktipy-2.0.5.tar.gz.

File metadata

  • Download URL: pddiktipy-2.0.5.tar.gz
  • Upload date:
  • Size: 19.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for pddiktipy-2.0.5.tar.gz
Algorithm Hash digest
SHA256 6ee675bba4c95902e5097501b6213c827b0d6672a345bd35322952fdce1e20f0
MD5 3e1b07bc83dae4d1e033749780ddbaac
BLAKE2b-256 b3bd0b8e0151b7763a0ecc3a14835b7c86ea799ea6b58fb1914ff8442a748d5b

See more details on using hashes here.

File details

Details for the file pddiktipy-2.0.5-py3-none-any.whl.

File metadata

  • Download URL: pddiktipy-2.0.5-py3-none-any.whl
  • Upload date:
  • Size: 20.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for pddiktipy-2.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 f0473b91ea44f271e88b75732f71b51dbc0d835f2397d159f89e51313dfd11ff
MD5 2a1586c7488f0d01210b08249238efa2
BLAKE2b-256 2b29c3807566d7012a56f64f4b6c091cb3362312597c0b2cb219e4175f98bb7a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page