Engineer786 commited on
Commit
dc7cf77
·
verified ·
1 Parent(s): 347c283

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +61 -25
app.py CHANGED
@@ -2,32 +2,68 @@ import streamlit as st
2
  from tariff_scraper import scrape_tariff_data
3
 
4
  def main():
5
- """
6
- Main application for scraping and previewing tariff data.
7
- """
8
- st.title("Electricity Tariff Data Scraper")
9
- st.sidebar.write("Enter the URL of the electricity tariff page:")
10
-
11
- # Input for URL
12
- url = st.sidebar.text_input(
13
- "Tariff URL",
14
- "https://iesco.com.pk/index.php/customer-services/tariff-guide"
15
- )
16
 
17
- if st.sidebar.button("Scrape Tariff Data"):
18
- if url:
19
- with st.spinner("Scraping data..."):
20
- data = scrape_tariff_data(url)
21
- if isinstance(data, list):
22
- st.success("Tariff data fetched successfully!")
23
- st.write("### Scraped Tariff Data")
24
- # Display scraped data in a table format
25
- for row in data:
26
- st.write(row)
27
- else:
28
- st.error(data)
29
- else:
30
- st.sidebar.error("Please provide a valid URL.")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
 
32
  if __name__ == "__main__":
33
  main()
 
 
2
  from tariff_scraper import scrape_tariff_data
3
 
4
  def main():
5
+ st.title("Electricity Bill Calculator with Tariff Scraper")
 
 
 
 
 
 
 
 
 
 
6
 
7
+ # Fetch tariff rates
8
+ st.sidebar.subheader("Tariff Rates")
9
+ url = st.sidebar.text_input("Tariff URL", "https://iesco.com.pk/index.php/customer-services/tariff-guide")
10
+
11
+ if st.sidebar.button("Fetch Tariff Rates"):
12
+ with st.spinner("Fetching tariff rates..."):
13
+ data = scrape_tariff_data(url)
14
+ if isinstance(data, dict): # Check if data is a valid dictionary
15
+ st.session_state["tariff_rates"] = data
16
+ st.sidebar.success("Tariff rates fetched successfully!")
17
+ st.write("### Tariff Rates")
18
+ for category, rate in data.items():
19
+ st.write(f"{category}: {rate} PKR/unit")
20
+ else:
21
+ st.sidebar.error(data)
22
+
23
+ # Use fetched tariff rates
24
+ tariff_categories = st.session_state.get("tariff_rates", {})
25
+ if tariff_categories:
26
+ load_type = st.sidebar.selectbox("Select Load Type", options=tariff_categories.keys())
27
+ tariff_rate = tariff_categories.get(load_type, 0.0)
28
+ else:
29
+ st.sidebar.warning("Using default rate. Fetch tariff rates to use live data.")
30
+ load_type = "Default"
31
+ tariff_rate = st.sidebar.number_input("Default Tariff Rate (PKR/unit)", min_value=0.0, value=20.0)
32
+
33
+ # Electricity bill calculation
34
+ st.sidebar.subheader("Appliance Usage")
35
+ appliances = {
36
+ "Fan": 75, "Air Conditioner (1 Ton)": 1500, "Refrigerator": 150,
37
+ "LED Bulb (20W)": 20, "Iron": 1000, "Microwave Oven": 1200
38
+ }
39
+ appliance = st.sidebar.selectbox("Select Appliance", options=appliances.keys())
40
+ quantity = st.sidebar.number_input("Quantity", min_value=1, value=1)
41
+ usage_hours = st.sidebar.number_input("Usage Hours/Day", min_value=1.0, value=6.0)
42
+
43
+ if st.sidebar.button("Add Appliance"):
44
+ st.session_state.setdefault("appliances", []).append({
45
+ "appliance": appliance,
46
+ "load": appliances[appliance],
47
+ "quantity": quantity,
48
+ "usage_hours": usage_hours
49
+ })
50
+ st.sidebar.success(f"{quantity} x {appliance} added.")
51
+
52
+ # Display appliances and calculate bill
53
+ st.write("### Selected Appliances")
54
+ if "appliances" in st.session_state:
55
+ for app in st.session_state["appliances"]:
56
+ st.write(f"{app['quantity']} x {app['appliance']} ({app['usage_hours']} hours/day)")
57
+
58
+ if st.button("Calculate Bill"):
59
+ total_units = sum(
60
+ app["quantity"] * app["load"] * app["usage_hours"] / 1000 for app in st.session_state["appliances"]
61
+ )
62
+ bill = total_units * 30 * tariff_rate
63
+ st.success(f"Estimated Monthly Bill for {load_type}: PKR {bill:.2f}")
64
+ else:
65
+ st.write("No appliances added yet.")
66
 
67
  if __name__ == "__main__":
68
  main()
69
+