Unofficial Python API wrapper to get data at PDDIKTI Kemdikbud
Project description
๐ PDDIKTI API Python Wrapper
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
- ๐ฆ Instalasi
- โก Quick Start
- ๐ Penggunaan Lengkap
- ๐ง Fitur Lanjutan
- โ ๏ธ Error Handling
- ๐ Struktur Data Response
- ๐ Dokumentasi API Lengkap
- ๐ Changelog
- ๐ Requirements
- ๐ค Contributing
- ๐ License
๐ 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 errorValidationError: Error validasi parameterAPIConnectionError: Error koneksi networkAPITimeoutError: Request timeoutAPIRateLimitError: Rate limit exceededAPIResponseError: 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:
- Method Pencarian - Search mahasiswa, dosen, PT, prodi
- Data Mahasiswa - Detail dan statistik mahasiswa
- Data Dosen - Profil, penelitian, pengabdian dosen
- Data Perguruan Tinggi - Detail PT dan statistik
- Data Program Studi - Detail prodi dan metrics
- Data Statistik - Visualisasi dan analytics
๐ 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 libraryurllib3: HTTP clienttyping: Type hints (built-in untuk Python 3.7+)
๐ค Contributing
Kontribusi sangat diterima! Kami menyambut berbagai jenis kontribusi dari community.
Quick Contribution Guide
- Fork repository ini
- Buat feature branch (
git checkout -b feature/AmazingFeature) - Commit perubahan (
git commit -m 'Add some AmazingFeature') - Push ke branch (
git push origin feature/AmazingFeature) - 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
- Author: Ilham Riski
- Issues: GitHub Issues
- PyPI: pddiktipy
- ๐ API Documentation: API_DOCUMENTATION.md
๐ 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ee675bba4c95902e5097501b6213c827b0d6672a345bd35322952fdce1e20f0
|
|
| MD5 |
3e1b07bc83dae4d1e033749780ddbaac
|
|
| BLAKE2b-256 |
b3bd0b8e0151b7763a0ecc3a14835b7c86ea799ea6b58fb1914ff8442a748d5b
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0473b91ea44f271e88b75732f71b51dbc0d835f2397d159f89e51313dfd11ff
|
|
| MD5 |
2a1586c7488f0d01210b08249238efa2
|
|
| BLAKE2b-256 |
2b29c3807566d7012a56f64f4b6c091cb3362312597c0b2cb219e4175f98bb7a
|