Skip to content

Repository files navigation

📚 Pencari Skripsi Indonesia

Cari skripsi full text dari 75+ repository perguruan tinggi Indonesia — sekali jalan.

Tidak perlu buka satu per satu website kampus. Tidak perlu tebak-tebak mana yang bisa diunduh lengkap.
Cukup satu perintah, script ini yang kerja.

Python License: MIT Version Universitas Platform


Masalah yang Diselesaikan

Siapapun yang pernah riset atau nulis skripsi pasti tahu frustrasinya:

  • Buka repository kampus A → hanya tersedia Bab 1
  • Buka repository kampus B → perlu login atau akses kampus
  • Buka repository kampus C → 404, situsnya down
  • Ulangi untuk 20 kampus lain... 😮‍💨

Pencari Skripsi Indonesia mengotomatisasi seluruh proses itu. Script mencari di 75+ repository sekaligus, mendeteksi mana yang benar-benar bisa diunduh penuh (Bab 1 sampai Daftar Pustaka), dan langsung menyajikan hasilnya lengkap dengan link PDF-nya.


Fitur Utama

  • 🔍 75+ repository PTN, PTS, dan Politeknik dari Sabang sampai Merauke
  • 📡 OAI-PMH harvesting — protokol standar EPrints & DSpace, lebih andal dari scraping biasa
  • 🔬 Analisis konten PDF langsung — baca isi file PDF, deteksi heading bab di dalam dokumen, bukan cuma label di HTML
  • 📂 Deteksi multi-file per bab — otomatis kenali repository yang pecah skripsi jadi bab1.pdf, bab2.pdf, dst., lalu verifikasi tiap file
  • 🎯 Status full text akuratFULL hanya diberikan jika Bab 1, 3, 4, 5, dan Daftar Pustaka terdeteksi di dalam PDF
  • Concurrent fetch — cari di beberapa universitas secara paralel, lebih cepat
  • 💾 Cache 24 jam — tidak re-fetch halaman yang sama, hemat bandwidth dan waktu
  • 📊 Output lengkap — CSV, JSON, dan Excel berwarna (hijau = full text, kuning = partial)
  • 🗂️ Konfigurasi terpisah — tambah atau ubah universitas cukup edit repositories.json, tanpa sentuh kode
  • 🖥️ Mode interaktif — cocok untuk yang tidak familiar dengan CLI

Instalasi

# 1. Clone repo ini
git clone https://github.com/yingtze/pencari-skripsi-indonesia.git
cd pencari-skripsi-indonesia

# 2. Install dependensi wajib
pip install requests beautifulsoup4 lxml tqdm colorama openpyxl

# 3. Install dependensi opsional — untuk analisis konten PDF (direkomendasikan)
pip install pdfminer.six

Butuh Python 3.8 atau lebih baru. Cek versi Python kamu dengan python --version.

Tanpa pdfminer.six, script tetap berjalan normal tapi deteksi full text hanya berbasis HTML — tidak membaca isi PDF secara langsung.


Cara Pakai

Pencarian Dasar

python pencari_skripsi.py --keyword "machine learning"

Dengan Filter

# Cari di PTN wilayah Jawa Timur saja
python pencari_skripsi.py --keyword "ekonomi syariah" --tipe PTN --provinsi "jawa timur"

# Pilih universitas spesifik
python pencari_skripsi.py --keyword "sistem informasi" --universitas ums umm umy

# Tampilkan hanya yang bisa diunduh penuh
python pencari_skripsi.py --keyword "hukum pidana" --hanya-full

Pilih Metode Fetch

# OAI-PMH — lebih cepat dan terstruktur (direkomendasikan)
python pencari_skripsi.py --keyword "kesehatan masyarakat" --metode oai

# HTML scraping — jangkauan lebih luas, cocok untuk repo yang tidak punya OAI
python pencari_skripsi.py --keyword "arsitektur" --metode html

Simpan Hasil

# Simpan ke CSV, JSON, dan Excel sekaligus (default)
python pencari_skripsi.py --keyword "pendidikan" --output hasil_pendidikan

# Hanya Excel
python pencari_skripsi.py --keyword "kimia" --format xlsx

Mode Interaktif

Tidak suka CLI? Jalankan mode tanya-jawab:

python pencari_skripsi.py --interactive

Lihat Daftar Universitas

# Semua universitas yang didukung
python pencari_skripsi.py --list-universitas

# Filter berdasarkan tipe atau provinsi
python pencari_skripsi.py --list-universitas --tipe PTS --provinsi "jawa barat"

Memahami Hasil

Setiap skripsi yang ditemukan akan diberi status:

Status Arti
FULL Bab 1, 3, 4, 5, dan Daftar Pustaka terdeteksi di dalam isi PDF
🟡 PARTIAL Sebagian bab ditemukan — belum lengkap atau hanya terdeteksi dari HTML
🔴 LOCKED PDF ada tapi tidak bisa diakses (login, embargo, campus-only)
UNKNOWN Status tidak bisa ditentukan secara otomatis

Sejak v1.3, status ditentukan berdasarkan isi file PDF secara langsung — script mengunduh ~250KB dari tiap PDF (bagian awal + akhir via HTTP Range request) lalu mencari heading bab di dalam dokumen. Jauh lebih akurat dibanding hanya membaca label di halaman HTML.

Untuk repository yang memecah skripsi menjadi banyak file terpisah, script juga mendeteksi dan memverifikasi akses ke masing-masing file, lalu melaporkan bab mana yang tersedia dan mana yang terkunci.


Seluruh Parameter

Parameter Pendek Keterangan Default
--keyword -k Kata kunci pencarian (wajib)
--universitas -u Satu atau lebih ID universitas semua
--tipe Filter PTN atau PTS semua
--provinsi -p Filter berdasarkan provinsi semua
--max -m Maksimal hasil per universitas 10
--metode auto / oai / html auto
--hanya-full Sembunyikan hasil yang locked/unknown false
--output -o Prefix nama file output auto (timestamp)
--format -f csv / json / xlsx / semua semua
--workers Jumlah thread paralel 3
--delay Jeda antar request dalam detik 1.2
--no-cache Nonaktifkan cache lokal false
--list-universitas Tampilkan daftar universitas
--interactive -i Mode tanya-jawab interaktif
--quiet -q Kurangi output ke terminal false

Struktur File

📁 pencari-skripsi-indonesia/
├── pencari_skripsi.py        ← Script utama
├── pdf_analyzer.py           ← Modul analisis konten PDF (v1.3+)
├── repositories.json         ← Data 75+ universitas (edit di sini untuk tambah kampus)
├── CHANGELOG.md              ← Riwayat perubahan tiap versi
├── README.md
└── .cache_skripsi/           ← Cache otomatis, dibuat saat pertama kali dijalankan

pencari_skripsi.py, pdf_analyzer.py, dan repositories.json harus selalu berada di folder yang sama.


Menambah Universitas

Konfigurasi repository sepenuhnya ada di repositories.json — tidak perlu mengubah kode Python sama sekali.

Tambahkan entri baru seperti ini:

{
  "id": "contoh_univ",
  "nama": "Universitas Contoh",
  "kota": "Kota",
  "provinsi": "Nama Provinsi",
  "tipe": "PTN",
  "platform": "eprints",
  "url_base": "https://repository.contoh.ac.id",
  "oai_endpoint": "https://repository.contoh.ac.id/cgi/oai2",
  "search_url": "https://repository.contoh.ac.id/cgi-bin/search/search.cgi",
  "search_params": {"q": "{keyword}", "action_search": "Search"},
  "search_method": "GET",
  "parser": "eprints"
}

Cara mengenali platform repository:

Tanda di URL Platform Parser
/cgi-bin/search atau /cgi/oai2 EPrints eprints
/xmlui/ atau /handle/ DSpace dspace
slims atau senayan SLiMS senayan
Lainnya generic

Cara menemukan OAI-PMH endpoint:

  • EPrints → https://[domain]/cgi/oai2
  • DSpace → https://[domain]/oai/request

Buka URL tersebut di browser. Jika muncul XML dengan tag <OAI-PMH>, berarti endpoint aktif dan bisa digunakan.


Universitas yang Didukung

PTN — Pulau Jawa (27 universitas)

UI, UGM, ITB, ITS, IPB, Universitas Airlangga, Universitas Diponegoro, Universitas Padjadjaran, UNY, Universitas Negeri Malang, Unnes, UPI, UNS, Universitas Brawijaya, Universitas Jember, Universitas Jenderal Soedirman, UPN Veteran Jakarta, UPN Veteran Yogyakarta, UPN Veteran Jawa Timur, UIN Sunan Ampel Surabaya, UIN Sunan Kalijaga Yogyakarta, UIN Sunan Gunung Djati Bandung, UIN Maulana Malik Ibrahim Malang, UIN Syarif Hidayatullah Jakarta, UIN Walisongo Semarang, IAIN Purwokerto, Universitas Sultan Ageng Tirtayasa

PTN — Luar Jawa (19 universitas)

Universitas Sumatera Utara, Universitas Andalas, Universitas Sriwijaya, Universitas Riau, Universitas Bengkulu, Universitas Jambi, Universitas Lampung, Universitas Hasanuddin, Universitas Mataram, Universitas Nusa Cendana, Universitas Pattimura, Universitas Cenderawasih, Universitas Khairun, Universitas Negeri Medan, Universitas Negeri Padang, Universitas Lambung Mangkurat, Universitas Mulawarman, Universitas Udayana, Universitas Pendidikan Ganesha

PTS (26 universitas)

Universitas Islam Indonesia, Universitas Muhammadiyah Yogyakarta, Universitas Muhammadiyah Surakarta, Universitas Muhammadiyah Malang, Universitas Ahmad Dahlan, Universitas Surabaya, Universitas Islam Bandung, Institut Teknologi Nasional Bandung, Universitas Telkom, Binus University, Universitas Mercu Buana, Universitas Gunadarma, Universitas Jenderal Ahmad Yani, STIKOM Bali, Universitas Kristen Duta Wacana, Universitas Kristen Krida Wacana, Universitas Katolik Soegijapranata, Universitas Tarumanagara, Universitas 17 Agustus 1945 Jakarta, Universitas Islam Sultan Agung, Universitas Nahdlatul Ulama Sidoarjo, Universitas Islam Malang, Universitas Bhayangkara Jakarta Raya, Universitas Muhammadiyah Jakarta, STIKI Malang, Universitas Atma Jaya Yogyakarta

Politeknik (3)

Politeknik Negeri Malang, Politeknik Elektronika Negeri Surabaya, Politeknik Kesehatan Kemenkes Surabaya


Analisis Konten PDF (v1.3+)

Fitur terbesar di v1.3 adalah kemampuan membaca isi file PDF secara langsung — bukan hanya metadata di halaman HTML.

Cara Kerjanya

Script mengunduh ~250KB per file menggunakan HTTP Range request (bagian awal + akhir dokumen), lalu mengekstrak teks dengan pdfminer.six dan mencari 12 penanda struktural:

Bagian Contoh yang Dideteksi
Cover / Judul Halaman judul, nama universitas
Abstrak abstrak, abstract, intisari
Bab 1 BAB I Pendahuluan, Latar Belakang Masalah
Bab 2 Tinjauan Pustaka, Landasan Teori
Bab 3 Metodologi Penelitian, Desain Penelitian
Bab 4 Hasil dan Pembahasan, Analisis Data
Bab 5 Kesimpulan dan Saran, Penutup
Daftar Pustaka References, Bibliography
Lampiran Appendix

Status FULL hanya diberikan jika semua bab utama (1, 3, 4, 5, dan Daftar Pustaka) ditemukan di dalam PDF — bukan dari label di halaman repository.

Deteksi Multi-File

Beberapa repository (terutama DSpace lama) memecah skripsi menjadi banyak file terpisah. Script mendeteksi ini secara otomatis dan menampilkan status per bab:

📂 Multi-file: 6 bab tersedia
  ✓ bab 1 - pendahuluan       https://repo.../bab1.pdf
  ✓ bab 2 - tinjauan pustaka  https://repo.../bab2.pdf
  ✓ bab 3 - metodologi        https://repo.../bab3.pdf
  ✗ bab 4 - hasil             [TERKUNCI]
  ✓ bab 5 - kesimpulan        https://repo.../bab5.pdf
  ✓ daftar pustaka            https://repo.../pustaka.pdf

Tanpa pdfminer.six

Script tetap berfungsi normal — hanya deteksi multi-file yang aktif, analisis isi PDF dinonaktifkan. Status ditentukan dari HTML seperti versi sebelumnya.


Tentang OAI-PMH

Script ini menggunakan OAI-PMH (Open Archives Initiative Protocol for Metadata Harvesting) sebagai metode fetch utama. Ini adalah protokol standar internasional yang diimplementasikan oleh hampir semua platform repository ilmiah — termasuk EPrints dan DSpace yang dipakai oleh 80%+ perguruan tinggi di Indonesia.

Bedanya dengan scraping HTML biasa: OAI-PMH memberikan data terstruktur langsung (judul, penulis, abstrak, URL, tahun) tanpa perlu menafsirkan HTML. Hasilnya lebih konsisten dan jauh lebih jarang rusak saat tampilan website berubah.


Catatan Penggunaan

  • Script menambahkan jeda antar request (default 1.2 detik) untuk tidak membebani server universitas
  • Hasil cache disimpan di .cache_skripsi/ dan otomatis kedaluwarsa setelah 24 jam
  • Analisis PDF mengunduh maksimal ~250KB per file — tidak mengunduh dokumen secara penuh
  • Beberapa universitas membatasi akses dari luar kampus — hasilnya tetap muncul dengan status unknown
  • PDF berbasis scan/gambar tidak bisa dianalisis teksnya — status otomatis unknown, perlu cek manual
  • URL dan struktur repository bisa berubah sewaktu-waktu; perbarui repositories.json jika ada yang tidak lagi berfungsi

Changelog

Lihat CHANGELOG.md untuk riwayat lengkap perubahan tiap versi.


Kontribusi

Pull request sangat disambut, terutama untuk:

  • Menambah universitas baru ke repositories.json
  • Memperbaiki parser untuk repository dengan struktur HTML yang tidak umum
  • Memperbarui URL repository yang sudah berubah domain atau path
  • Meningkatkan pola deteksi bab di pdf_analyzer.py untuk format penulisan yang belum ter-cover

Lisensi

MIT License — bebas digunakan, dimodifikasi, dan didistribusikan.

About

Cari skripsi full text dari 75+ repository perguruan tinggi Indonesia — sekali jalan. Mendukung OAI-PMH harvesting, analisis konten PDF langsung, deteksi multi-file per bab, dan output CSV/JSON/Excel.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages