MineLit / app.py
noranisa's picture
Update app.py
e953a19 verified
import os
from flask import Flask, render_template, request, redirect, url_for
from serpapi import GoogleSearch
from dotenv import load_dotenv
# Muat environment variable dari file .env
load_dotenv()
app = Flask(__name__)
# Ambil API key dari environment variable
SERPAPI_API_KEY = os.getenv("SERPAPI_API_KEY")
# Pastikan API Key ada
if not SERPAPI_API_KEY:
raise ValueError("Tidak ada SERPAPI_API_KEY di file .env Anda!")
@app.route('/')
def index():
"""Menampilkan halaman utama dengan form pencarian."""
return render_template('index.html')
@app.route('/cari', methods=['POST'])
def cari():
"""Memproses form, memanggil SerpApi, dan menampilkan hasil."""
topik = request.form.get('topik')
tahun_awal = request.form.get('tahun_awal')
tahun_akhir = request.form.get('tahun_akhir')
jumlah_data = request.form.get('jumlah_data', 10, type=int) # Default 10 jika kosong
if not topik:
# Jika topik kosong, kembali ke halaman utama
return redirect(url_for('index'))
# Parameter untuk pencarian di Google Scholar menggunakan SerpApi
params = {
"engine": "google_scholar",
"q": f'"{topik}" pertambangan', # Menggabungkan topik dengan konteks "pertambangan"
"hl": "id", # Bahasa hasil: Indonesia
"num": jumlah_data, # Jumlah hasil yang diinginkan
"as_ylo": tahun_awal, # Tahun Awal (Year Low)
"as_yhi": tahun_akhir, # Tahun Akhir (Year High)
"api_key": SERPAPI_API_KEY
}
# Lakukan pencarian
search = GoogleSearch(params)
results = search.get_dict()
# Ambil hasil organik (jurnal/artikel)
organic_results = results.get("organic_results", [])
# Kirim hasil ke template 'hasil.html' untuk ditampilkan
return render_template(
'hasil.html',
results=organic_results,
query=topik,
total_results=results.get("search_information", {}).get("total_results", 0)
)
if __name__ == '__main__':
app.run(debug=True)