Puchi01x/Court_Data_Fetcher_App
1
1from flask import Flask, render_template, request2import undetected_chromedriver as uc3from selenium.webdriver.common.by import By4from selenium.webdriver.support.ui import WebDriverWait5from selenium.webdriver.support import expected_conditions as EC6from bs4 import BeautifulSoup7import sqlite38import time9import os10 11# Ensure the folder exists12DB_FOLDER = "./data"13DB_PATH = os.path.join(DB_FOLDER, "queries.db")14 15app = Flask(__name__)16 17def init_db():18 conn = sqlite3.connect("queries.db")19 c = conn.cursor()20 c.execute("""21 CREATE TABLE IF NOT EXISTS search_logs (22 id INTEGER PRIMARY KEY AUTOINCREMENT,23 case_type TEXT,24 case_number TEXT,25 case_year TEXT,26 timestamp TEXT27 )28 """)29 conn.commit()30 conn.close()31 32@app.route('/', methods=['GET', 'POST'])33def index():34 if request.method == 'POST':35 case_type = request.form['case_type']36 case_number = request.form['case_number']37 case_year = request.form['case_year']38 39 # Log to SQLite40 conn = sqlite3.connect("queries.db")41 c = conn.cursor()42 c.execute("INSERT INTO search_logs (case_type, case_number, case_year, timestamp) VALUES (?, ?, ?, datetime('now'))",43 (case_type, case_number, case_year))44 conn.commit()45 conn.close()46 47 # Set up headless Chrome with undetected_chromedriver48 options = uc.ChromeOptions()49 options.headless = True50 options.add_argument("--no-sandbox")51 options.add_argument("--disable-dev-shm-usage")52 driver = uc.Chrome(options=options)53 54 try:55 driver.get("https://delhihighcourt.nic.in/case.asp")56 WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.NAME, 'ctype')))57 driver.find_element(By.NAME, 'ctype').send_keys(case_type)58 driver.find_element(By.NAME, 'cno').send_keys(case_number)59 driver.find_element(By.NAME, 'cyear').send_keys(case_year)60 driver.find_element(By.NAME, 'B1').click()61 62 WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.TAG_NAME, "body")))63 time.sleep(2) # slight wait for content to load64 65 soup = BeautifulSoup(driver.page_source, 'html.parser')66 case_info = soup.get_text(strip=True)67 except Exception as e:68 case_info = f"An error occurred: {e}"69 finally:70 driver.quit()71 72 return render_template('result.html', case_info=case_info)73 74 return render_template('index.html')75 76if __name__ == '__main__':77 init_db()78 app.run(debug=True, host='0.0.0.0', port=7860)79 