Dalam era digital saat ini, akses terhadap informasi waktu sholat menjadi kebutuhan penting bagi umat Muslim. Beragam aplikasi dan situs web telah tersedia, namun bagaimana jika Anda ingin membangun layanan sendiri atau mengintegrasikan jadwal sholat ke dalam aplikasi yang sudah ada? Salah satu solusinya adalah dengan membangun API jadwal sholat sendiri.
Dalam artikel ini, saya akan membahas cara membuat API jadwal sholat sederhana menggunakan Google Apps Script, yang gratis dan mudah diimplementasikan oleh siapa saja dengan pengetahuan dasar pemrograman.
Google Apps Script mungkin bukan platform pertama yang terpikirkan untuk membangun API, tetapi platform ini menawarkan beberapa keunggulan menarik:
API ini bekerja dengan langkah-langkah berikut:
API yang kita bangun memiliki beberapa fitur utama:
Fitur utama adalah menampilkan jadwal sholat hari ini, meliputi waktu:
API mendukung ratusan kota di seluruh Indonesia, dengan Kediri sebagai default. Pengguna dapat dengan mudah mengganti kota dengan parameter kota
pada URL.
API juga menyediakan endpoint untuk mendapatkan daftar lengkap kota yang didukung, memudahkan pengembang lain untuk mengintegrasikan solusi ini.
Fitur logging memungkinkan pemantauan penggunaan API, termasuk informasi tentang:
Berikut adalah langkah-langkah sederhana untuk mengimplementasikan API ini:
Fungsi utama untuk menangani request API:
function doGet(e) {
try {
// Mendapatkan parameter dari URL
const params = e.parameter;
const action = params.action || 'jadwal';
const kota = params.kota || 'kediri';
// Catat log akses
logAccess(e, action, kota);
// Menentukan tindakan berdasarkan parameter
switch (action) {
case 'daftar-kota':
return getListKota();
case 'jadwal':
default:
return getJadwalSholat(kota);
}
} catch (error) {
// Catat log error
logError(e, error.message);
// Mengembalikan pesan error
return ContentService.createTextOutput(JSON.stringify({
status: 'error',
message: error.message
})).setMimeType(ContentService.MimeType.JSON);
}
}
function getCities(baseUrl) {
const cache = CacheService.getScriptCache();
const cacheKey = 'city_list';
const cachedData = cache.get(cacheKey);
if (cachedData) {
return JSON.parse(cachedData);
}
const response = UrlFetchApp.fetch(baseUrl);
const content = response.getContentText();
const optionRegex = /
function getAdzans(cityId, month, year) {
const url = `https://jadwalsholat.org/jadwal-sholat/monthly.php?id=${cityId}&m=${month}&y=${year}`;
try {
const response = UrlFetchApp.fetch(url);
const content = response.getContentText();
const rowRegex = /([\s\S]*?)<\/tr>/g;
const cellRegex = /(.*?)<\/td>/g;
const result = [];
let rowMatch;
// Parsing data tabel HTML
while ((rowMatch = rowRegex.exec(content)) !== null) {
// ... kode parsing ...
}
return result;
} catch (error) {
throw new Error(`Failed to fetch data: ${error.message}`);
}
}
API ini dapat diintegrasikan dengan berbagai jenis aplikasi:
fetch('https://script.google.com/macros/s/YOUR_SCRIPT_ID/exec?kota=jakarta')
.then(response => response.json())
.then(data => {
// Tampilkan jadwal sholat
console.log(data);
});
// Contoh dalam Flutter/Dart
Future
# Contoh dalam Python untuk Telegram Bot
import requests
def get_jadwal_sholat(kota='kediri'):
url = f'https://script.google.com/macros/s/YOUR_SCRIPT_ID/exec?kota={kota}'
response = requests.get(url)
return response.json()
Membangun API jadwal sholat menggunakan Google Apps Script merupakan solusi yang praktis, ekonomis, dan efektif untuk menyediakan informasi waktu sholat. Dengan pengetahuan dasar pemrograman, Anda dapat membuat layanan yang berguna bagi komunitas Muslim.
API ini bisa menjadi langkah awal untuk mengembangkan layanan digital yang lebih kompleks, seperti aplikasi reminder sholat, widget untuk website, atau integrasi dengan asisten virtual.
Kode lengkap untuk API ini tersedia di GitHub, silakan kunjungi repositori GITHUB untuk melihat implementasi lengkapnya dan mulai menggunakannya atau berkontribusi pada pengembangan selanjutnya.
Semoga artikel ini bermanfaat dan dapat menginspirasi Anda untuk membangun solusi teknologi yang bermanfaat bagi umat. Jangan ragu untuk berbagi atau mengembangkan API ini lebih lanjut!